Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
подскажите где баг php |
Что касается web-а... WebMaster-а Воронежа - объединяйтесь! |
|
Опции темы |
24.09.2003, 19:20 | #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 не логирует попытку их записи) |
25.09.2003, 00:38 | #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> Цитата:
|
|
02.10.2003, 00:04 | #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 не выводится Буду очень признателен за помощь |
02.10.2003, 00:16 | #4 |
Memory test: failed
|
Дважды определяется функция show_login(). Она, насколько я понял, выведена в отдельный файл, который рекваирится дважды. Самый простой способ избежать подобных проблем - использовать require_once() вместо require().
PS Если она не в отдельном файле, посмотри, быть может случайно сделал копию функции и забыл переименовать? DMakeev добавил [date]1065043160[/date]: PPS Конструкция $variable=='0' не есть гут. Вообще, с мустыми строками и нулями нужно использовать $variable===0. У тебя 0 указан как стока, но хз как там PHP во внутреннем представлении это видит Бяка в том, что у тебя на локалхосте может все работать, а на хостинге, где другая версия PHP - нет. |