
| Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
![]() |
||
подскажите где баг php
|
||
| Что касается web-а... WebMaster-а Воронежа - объединяйтесь! |
![]() |
|
|
Опции темы |
|
|
#1 |
|
Форумец
Сообщений: 111
Регистрация: 02.05.2003
|
подскажите где баг php
57 if ($res[pass]==$pass) {
58 setcookie('fio',$res[fio],time()+3600); 59 setcookie('pa',$res[pass],time()+3600); 60 show_hello($res[fio]); }}} сыпет ошибки: Notice: Use of undefined constant pass - assumed 'pass' in z:\home\test2.ru\www\index.icn.php on line 57 Notice: Use of undefined constant fio - assumed 'fio' in z:\home\test2.ru\www\index.icn.php on line 58 Warning: Cannot modify header information - headers already sent by (output started at z:\home\test2.ru\www\test.php:12) in z:\home\test2.ru\www\index.icn.php on line 58 Notice: Use of undefined constant pass - assumed 'pass' in z:\home\test2.ru\www\index.icn.php on line 59 Warning: Cannot modify header information - headers already sent by (output started at z:\home\test2.ru\www\test.php:12) in z:\home\test2.ru\www\index.icn.php on line 59 Notice: Use of undefined constant fio - assumed 'fio' in z:\home\test2.ru\www\index.icn.php on line 60 пишу echo " res[fio] res[pass]"; всё нормально отоброжает alladin добавил [date]1064423251[/date]: написал Error_Reporting(E_ALL & ~E_NOTICE); остались только: Warning: Cannot modify header information - headers already sent by (output started at z:\home\test2.ru\www\test.php:12) in z:\home\test2.ru\www\index.icn.php on line 58 и Warning: Cannot modify header information - headers already sent by (output started at z:\home\test2.ru\www\test.php:12) in z:\home\test2.ru\www\index.icn.php on line 59 куки не работают(Outpost не логирует попытку их записи) |
|
|
|
|
#2 | |
|
Memory test: failed
|
1. По дефалту РНР, обрабатывая конструкцию $res[pass], ищет константу с именем pass, а затем уж "понимает", что это строка. Это не ошибка, но так все равно делать не стоит - обрабатывается чуть дольше (софффсем чуть-чуть, но иногда это критично), загаживает логи, да и код читать сложнее. Используй $res['pass'] и все будет гут.
2. До установки кукисов скрипт не должен выводить в браузер НИЧЕГО. Т.е. кукисы нужно устанавливать до тега '<html>'. Т.е.: Код:
<html>
<body>
<?
setcookie('pa',$res[pass],time()+3600);
// НЕ РАБОТАЕТ
?>
Hello world
</body>
</html>
Код:
<?
setcookie('pa',$res[pass],time()+3600);
// А так все нормально
?>
<html>
<body>
Hello world
</body>
</html>
Цитата:
|
|
|
|
|
|
#3 |
|
Форумец
Сообщений: 111
Регистрация: 02.05.2003
|
DMakeev спасибо за помощь в нелёгком деле
сел делать дальше только сейчас немного подправил теперь такай бойда $user=test_user(); # проверяет что в куках и есть ли они echo "$user"; #для контроля if ($user=='0') {show_login();} else {show_hello($user);} show_login() выводит форму ввода имени и пароля первый заход всё нормально но по нажатию вход происходит следуюшее: Fatal error: Cannot redeclare show_login() (previously declared in z:\home\test2.ru\www\index.icn.php:3) in z:\home\test2.ru\www\index.icn.php on line 3 в 3 строке заголовок show_login() $user не выводится Буду очень признателен за помощь |
|
|
|
|
#4 |
|
Memory test: failed
|
Дважды определяется функция show_login(). Она, насколько я понял, выведена в отдельный файл, который рекваирится дважды. Самый простой способ избежать подобных проблем - использовать require_once() вместо require().
PS Если она не в отдельном файле, посмотри, быть может случайно сделал копию функции и забыл переименовать? ![]() DMakeev добавил [date]1065043160[/date]: PPS Конструкция $variable=='0' не есть гут. Вообще, с мустыми строками и нулями нужно использовать $variable===0. У тебя 0 указан как стока, но хз как там PHP во внутреннем представлении это видит Бяка в том, что у тебя на локалхосте может все работать, а на хостинге, где другая версия PHP - нет.
|
|
|