Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Неприемлимо использовать функцию exit
Форумы портала PHP.SU » PHP » Программирование на PHP » Неприемлимо использовать функцию exit

Страниц (1): [1]
 

1. D1mOn - 20 Февраля, 2008 - 04:59:42 - перейти к сообщению
Здравствуйте!

Мой пхп код расположен в середине страницы, т.е. после него идёт еще пхп код и html.
Исходя из такого положения дел, для меня неприемлимо использовать exit;, так как он останавливает сценарий (что собственно и должен делать), не выводя все остальное после него.
Возможны ли другие пути?

И еще какие функции посоветуете использовать для данных пришедших от пользователя? Хватит ли addslashes() & htmlspecialchars() ?
2. RomAndry - 20 Февраля, 2008 - 10:23:21 - перейти к сообщению
ну первое на ум пришло использовать простейший шаблонизатор (хотя шаблонизатором назвать это сложно)
PHP:
скопировать код в буфер обмена
  1.  
  2. $head= $footer= $table1= $table2 = $str= '';
  3. $head= '<HTML>
  4. <HEAD>
  5. ....
  6. </HEAD>';
  7.  
  8. if($foo==$bar){
  9.   // по сути это и заменяет exit()
  10.   $table1= '<table>....</table>';
  11. }
  12. $table2= '<table>....</table>';
  13. $footer= '</BODY><HTML>';
  14. $str.= ($head!='' ? $head : '');
  15. $str.= ($table1!='' ? $table1 : '');
  16. $str.= ($table2!='' ? $table2 : '');
  17. $str.= ($footer!='' ? $footer : '');
  18.  
  19. echo $str;
  20.  

Это то что пришло сразу в голову =)
Во вторых пересмотреть логику

Цитата:
И еще какие функции посоветуете использовать для данных пришедших от пользователя? Хватит ли addslashes() & htmlspecialchars()


1) ну я бы посоветовал проверять $_POST и $_GET числовые значения с помощью intval() doubleval() причем intval() и проверять на ноль
2) так же использовать trim() что бы убирать лишние пробелы
а лучше

это уберет пробелы между текстом лишние ну и уберет HTML теги
3) не забываем про "волшебные кавычки", проверяя
3. SlavikSG - 20 Февраля, 2008 - 10:31:54 - перейти к сообщению
А ничего тут не сделаешь!
Либо аварийный выход с остановкой скрипта, либо нужно писать сам скрипт таким образом, чтобы он обрабатывал твою ошибку и реагировал не нее соответствующим образом. Например, если далее, в срипте, должна была появиться и заполнится данными, какая-то таблица, то вместо таблицы можно вывести что-то другое. В общем. В любом случае программировать нужно самому.

Лично я Exit применяю там, где действительно возможна авария, и исполнять скрипт дальше смысла нет. К примеру, остановился у тебя сервак MySQL. Ну и ничего в скрипте работать, разумеется, не будет. Скрипт у тебя остановится на пол пути с сообщением:
"Нет доступа к базе MySQL".
И пусть так и будет. Ведь пользователь все равно со своей стороны ничего изменить не сможет. Ему придется просто ждать, пока не сервак не поднимут.
4. D1mOn - 20 Февраля, 2008 - 12:05:52 - перейти к сообщению
А как Вам идейка ввести переменную, допустим error? Поставить её в значение false, и проверять после КАЖДОГО МЕСТА ГДЕ ДОЛЖЕН БЫТЬ exit;? Если она равна true, то ничего дальше не делать (всмысле кода), а писать все оставшееся (html)
5. Gor - 20 Февраля, 2008 - 13:02:04 - перейти к сообщению
1) Структура c IF
2) Функция: PHP-код - убрать в функцию, а где нужно расставить return.
Пойдет?
6. valenok - 20 Февраля, 2008 - 18:11:11 - перейти к сообщению
А как вам сделать функцию ?

show_html()
{
?>
..
<?php
die();
}

Ну вы же сами себе нашли решение.
Вы себя не до оцениваете.
Не говорите что вы не могли бы сами додуматься до такого,
или до других предложеных решений.
Так что начинайте стараться.

 

Powered by ExBB FM 1.0 RC1