Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Веб-дизайн
Что касается web-а... WebMaster-а Воронежа - объединяйтесь!

Ответ
 
Опции темы
Старый 24.09.2003, 19:20   #1   
Форумец
 
Сообщений: 111
Регистрация: 02.05.2003

alladin вне форума Не в сети
подскажите где баг 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
 
Аватар для DMakeev
 
Сообщений: 699
Регистрация: 21.03.2003
Возраст: 41
Записей в дневнике: 7

DMakeev вне форума Не в сети
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.
  Ответить с цитированием
Старый 02.10.2003, 00:04   #3   
Форумец
 
Сообщений: 111
Регистрация: 02.05.2003

alladin вне форума Не в сети
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
 
Аватар для DMakeev
 
Сообщений: 699
Регистрация: 21.03.2003
Возраст: 41
Записей в дневнике: 7

DMakeev вне форума Не в сети
Дважды определяется функция show_login(). Она, насколько я понял, выведена в отдельный файл, который рекваирится дважды. Самый простой способ избежать подобных проблем - использовать require_once() вместо require().

PS Если она не в отдельном файле, посмотри, быть может случайно сделал копию функции и забыл переименовать?

DMakeev добавил [date]1065043160[/date]:
PPS Конструкция $variable=='0' не есть гут. Вообще, с мустыми строками и нулями нужно использовать $variable===0. У тебя 0 указан как стока, но хз как там PHP во внутреннем представлении это видит Бяка в том, что у тебя на локалхосте может все работать, а на хостинге, где другая версия PHP - нет.
  Ответить с цитированием
Старый 07.10.2003, 17:53   #5   
Форумец
 
Сообщений: 111
Регистрация: 02.05.2003

alladin вне форума Не в сети
DMakeev биг фанкс усё заработало
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind