сыпет ошибки:
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 не логирует попытку их записи)
[Ответ]
DMakeev 00:38 25.09.2003
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>
Более того, даже пробела перед <? быть не должно. Собно, в мануале об этом сказано:
Сообщение от :
Cookies must be sent before any other headers are sent (this is a restriction of cookies, not PHP). This requires you to place calls to this function before any <html> or <head> tags.
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 не выводится
Буду очень признателен за помощь
[Ответ]
DMakeev 00:16 02.10.2003
Дважды определяется функция show_login(). Она, насколько я понял, выведена в отдельный файл, который рекваирится дважды. Самый простой способ избежать подобных проблем - использовать require_once() вместо require().
PS Если она не в отдельном файле, посмотри, быть может случайно сделал копию функции и забыл переименовать?
DMakeev добавил [date]1065043160[/date]:
PPS Конструкция $variable=='0' не есть гут. Вообще, с мустыми строками и нулями нужно использовать $variable===0. У тебя 0 указан как стока, но хз как там PHP во внутреннем представлении это видит Бяка в том, что у тебя на локалхосте может все работать, а на хостинге, где другая версия PHP - нет.
[Ответ]