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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Неприемлимо использовать функцию exit

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
D1mOn
Отправлено: 20 Февраля, 2008 - 04:59:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Здравствуйте!

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

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

(Отредактировано автором: 20 Февраля, 2008 - 05:01:17)

 
 Top
RomAndry Администратор
Отправлено: 20 Февраля, 2008 - 10:23:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




ну первое на ум пришло использовать простейший шаблонизатор (хотя шаблонизатором назвать это сложно)
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) не забываем про "волшебные кавычки", проверяя
 
My status
 Top
SlavikSG
Отправлено: 20 Февраля, 2008 - 10:31:54
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Февр. 2008  


Помог: 0 раз(а)




А ничего тут не сделаешь!
Либо аварийный выход с остановкой скрипта, либо нужно писать сам скрипт таким образом, чтобы он обрабатывал твою ошибку и реагировал не нее соответствующим образом. Например, если далее, в срипте, должна была появиться и заполнится данными, какая-то таблица, то вместо таблицы можно вывести что-то другое. В общем. В любом случае программировать нужно самому.

Лично я Exit применяю там, где действительно возможна авария, и исполнять скрипт дальше смысла нет. К примеру, остановился у тебя сервак MySQL. Ну и ничего в скрипте работать, разумеется, не будет. Скрипт у тебя остановится на пол пути с сообщением:
"Нет доступа к базе MySQL".
И пусть так и будет. Ведь пользователь все равно со своей стороны ничего изменить не сможет. Ему придется просто ждать, пока не сервак не поднимут.


-----
Нет в русском языке слова дешеГО. Есть слово дешеВО.
 
 Top
D1mOn
Отправлено: 20 Февраля, 2008 - 12:05:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


А как Вам идейка ввести переменную, допустим error? Поставить её в значение false, и проверять после КАЖДОГО МЕСТА ГДЕ ДОЛЖЕН БЫТЬ exit;? Если она равна true, то ничего дальше не делать (всмысле кода), а писать все оставшееся (html)
 
 Top
Gor
Отправлено: 20 Февраля, 2008 - 13:02:04
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2007  
Откуда: Спб


Помог: 0 раз(а)




1) Структура c IF
2) Функция: PHP-код - убрать в функцию, а где нужно расставить return.
Пойдет?
 
 Top
valenok Модератор
Отправлено: 20 Февраля, 2008 - 18:11:11
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А как вам сделать функцию ?

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

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


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB