Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите с setcookie
 
 автор: secondvad2   (21.05.2006 в 00:37)   письмо автору
 
 

я никак не могу записать переменную в куки! у меня Свойство RеgistredGlobals включено и я нехочу его выключать! как правельно записать переменную $X в куки? с включенным этим свойством?

   
 
 автор: WebTech   (21.05.2006 в 11:00)   письмо автору
 
   для: secondvad2   (21.05.2006 в 00:37)
 

register_globals не влияет на установку куки. Проверьте, чтобы куки устанавливались до вывода чего бы то ни было в браузер.

setcookie("mycookie", $X);

А register_globals лучше поставить в Off, так безопаснее.

   
 
 автор: cheops   (21.05.2006 в 12:01)   письмо автору
 
   для: secondvad2   (21.05.2006 в 00:37)
 

Подробнее об этом можно початить по ссылке http://www.softtime.ru/bookphp/gl8_2.php. Если останутся вопросы - задавайте, обязательно поможем.

   
 
 автор: secondvad2   (21.05.2006 в 13:12)   письмо автору
 
   для: cheops   (21.05.2006 в 12:01)
 

я слышал что РЕГИСТРЕТ ГЛОБАЛС безопаснее НЕ выключать! так какже на самом деле?


       setcookie("login",$login, time()+3600);
       setcookie("password",$password, time()+3600);


вот какая проблемма вроде все правельно но все равно эти значения не записываются в куки! я сматрел функцию http://ru.php.net/setcookie сдесь! там такая строка


Замечание: If the PHP directive register_globals is set to on then cookie values will also be made into variables. In our examples below, $TestCookie will exist. It's recommended to use $_COOKIE.

поэтому я и задумался о register_globals! и никак не могу понять почемуже не работает

кстати на эти 2 строки пишет такие ошибки
Warning: Cannot modify header information - headers already sent by (output started at D:\wwwApache Group\Apache2\htdocs\index.php:2) in D:\wwwApache Group\Apache2\htdocs\aut.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at D:\wwwApache Group\Apache2\htdocs\index.php:2) in D:\wwwApache Group\Apache2\htdocs\aut.php on line 8

   
 
 автор: Пётр   (21.05.2006 в 13:26)   письмо автору
 
   для: secondvad2   (21.05.2006 в 13:12)
 

register globals ставь в off - учись правильно прогить, скоро его уже может не стать вообще :)
у тебя кука ставиться до того, как на экран выводится что нибудь или после?

т.е. если у тебя

<?
$login
="Вася Пупкин";
echo 
$login/*низя в браузер ни одной строки выводить до установки куки - кука это принадлежность заголовка HTTP а не тела документа, а как ты наверно знаешь сначала передаются заголовки, потом тело*/
setcookie("login",$logintime()+3600);
?>

то это не правильно, сначала кука, потом текс документа (ни одного пробела даже не должно выдаваться на экран до установки куки)

т.е. правильно так

<?
$login
="Вася Пупкин";
setcookie("login",$logintime()+3600);
echo 
$login;

   
 
 автор: secondvad2   (21.05.2006 в 13:34)   письмо автору
 
   для: Пётр   (21.05.2006 в 13:26)
 


<?php
//Error_Reporting(0);
$login="123"//Правильный логин
$password="123"//Правильный пароль
                 
if($_POST['butt'])
                 {  
$info="Неверный пароль!!!"; }
if(
$_POST['user']==$login and $password==$_POST['pass'])
       {
       
//Добавляем данные в куки на +... секунд
       
setcookie("login",$logintime()+3600);
       
setcookie("password",$passwordtime()+3600);
       
//Добавляем данные в куки на +... секунд
      // echo "Вход выполнен !!!";
       //Аутентификация успешна


       
} else {//}
       //Аутентификация не успешна
       
?>

и дальше HTML

   
 
 автор: Пётр   (21.05.2006 в 13:44)   письмо автору
 
   для: secondvad2   (21.05.2006 в 13:34)
 

т.е. если у тебя

пробел<?

то на экран выведется символ пробела, хоть ты его и не увидишь,
или если у тебя

пустая строка
<?

и набирал ты код не в спец редакторе, а в блокноте например, то винда вставила признак окончания строки по своему, не по юниксовому и в юниксе это может вызвать ошибку

   
 
 автор: Dark_Wektor   (21.05.2006 в 13:35)   письмо автору
 
   для: secondvad2   (21.05.2006 в 13:12)
 

попробуйте посмотреть код до етих строк, удилить все пустые строки, если они есть, до тега "<?php ..."

эта ошибка означает что "headers" то-бишь заголовки уже отправлены и не могут быть модифицированы, так так куки отправляются только с ними.

у меня был док который на этом заострял особое внимание.

   
 
 автор: secondvad2   (21.05.2006 в 13:43)   письмо автору
 
   для: Dark_Wektor   (21.05.2006 в 13:35)
 

этот Код ПХП стоит в самом верху выше всего остального! а дальше только после него идеет ХТМЛ! Выкладываю всю страницу

   
 
 автор: Пётр   (21.05.2006 в 13:47)   письмо автору
 
   для: secondvad2   (21.05.2006 в 13:43)
 

если ты этот код используешь для отладки то не

$login="Lit-Company"; //Правильный логин
$password="123"; 


а,

$_POST['login']="Lit-Company"; //Правильный логин
$_POST['password']="123"; 

   
 
 автор: secondvad2   (21.05.2006 в 13:52)   письмо автору
 
   для: Пётр   (21.05.2006 в 13:47)
 

Петр походу все работает как ты сказал! я еще окончательно проверю! спасибо я просто неопытный прогер тока начинаю набираться опыта

   
 
 автор: Trianon   (21.05.2006 в 13:59)   письмо автору
 
   для: secondvad2   (21.05.2006 в 13:43)
 

Вы не тот файл смотрите / показываете.
Обратите внимание на то, что выставляемые кукисы вызывают ошибки в файле aut.php на строках 7 и 8, в то время как выводимый текст был отправлен совсем другим файлом - index.php на строке 2.

   
 
 автор: cheops   (21.05.2006 в 21:58)   письмо автору
 
   для: secondvad2   (21.05.2006 в 13:12)
 

>Warning: Cannot modify header information - headers already
Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.
http://www.softtime.ru/group/id_group=12
http://www.softtime.ru/forum/ead.php?id_forum=1&id_theme=147
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148
Вы можете также включить буфферизацию, если имеете доступ к конфигурационному файлу php.ini
output_buffering = On  


http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8484

   
 
 автор: Dark_Wektor   (21.05.2006 в 13:50)   письмо автору
 
   для: secondvad2   (21.05.2006 в 00:37)
 

попробуйте до кукисов вставить такой код

<?
if (@headers_sent()){ print "заголовки уже отправлены";}
else {print 
"хз в чём трабл, но заголовки ещё не отправлялись";}

?>

так вы и узнаете были они отправлены или нет ))

   
 
 автор: secondvad2   (21.05.2006 в 13:57)   письмо автору
 
   для: Dark_Wektor   (21.05.2006 в 13:50)
 

ПЕТР сделал как ты сказал и страничка вообше не открывается! так что проверь у тебя работает так?

   
 
 автор: Пётр   (21.05.2006 в 14:04)   письмо автору
 
   для: secondvad2   (21.05.2006 в 13:57)
 

нужен листинг файл index.php - в нем ошибка

в предыдущеп посте забыл написать слово "ещё":


$login="Lit-Company"; //Правильный логин
$password="123"; 


а, ещё

$_POST['login']="Lit-Company"; //Правильный логин
$_POST['password']="123"; 

   
 
 автор: secondvad2   (21.05.2006 в 14:08)   письмо автору
 
   для: Пётр   (21.05.2006 в 14:04)
 

вот !

   
 
 автор: secondvad2   (21.05.2006 в 14:09)   письмо автору
9.1 Кб
 
   для: secondvad2   (21.05.2006 в 14:08)
 

aut.php вот

в INDEX.PHP в форме action="" просто это FRONT PAGE так изменяет при сохранении

   
 
 автор: Trianon   (21.05.2006 в 14:17)   письмо автору
 
   для: secondvad2   (21.05.2006 в 14:08)
 

В файле index.php у Вас первая строка - пустая. Она и портит весь расклад. Удалите её.

   
 
 автор: secondvad2   (21.05.2006 в 14:20)   письмо автору
 
   для: Trianon   (21.05.2006 в 14:17)
 

ага удалил! все равно осталась проблемма с кукамИ! там в ndex.php есть кнопка на нее нажимаю и снова кидает на авторизацию я так понимаю куки не записываются

   
 
 автор: Trianon   (21.05.2006 в 14:38)   письмо автору
 
   для: secondvad2   (21.05.2006 в 14:20)
 

Может быть всё же записываются, но не проверяются должным образом?
Где Вы проверяете кукисы?

   
 
 автор: secondvad2   (21.05.2006 в 14:45)   письмо автору
 
   для: Trianon   (21.05.2006 в 14:38)
 

Возможно! вобшем мне надо сделать страницу авторицазии! никак не получается а проверить куки можна так


echo $_COOKIE["TestCookie"];

хотя у меня чето ниче не выводит

   
 
 автор: Trianon   (21.05.2006 в 15:06)   письмо автору
 
   для: secondvad2   (21.05.2006 в 14:45)
 

>Возможно! вобшем мне надо сделать страницу авторицазии!
>никак не получается а проверить куки можна так
>echo $_COOKIE["TestCookie"];
>хотя у меня чето ниче не выводит

И не выведет. Вы же login , password записывали, а не TestCookie.
Вот и смотрите echo $_COOKIE["login"] . '/' . $_COOKIE["password"];

Когда я спросил "Где Вы проверяете кукисы?" то имел в виду "Где у Вас в скрипте стоит нечто напоминающее

if($_COOKIE['login'] == ... && $_COOKIE['password'] == ... ) 

?

   
 
 автор: secondvad2   (21.05.2006 в 16:32)   письмо автору
 
   для: Trianon   (21.05.2006 в 15:06)
 


echo $_COOKIE["login"] . '/' . $_COOKIE["password"];


Я так и выводил я ему показал пример как это делается

   
 
 автор: Пётр   (21.05.2006 в 14:49)   письмо автору
 
   для: secondvad2   (21.05.2006 в 14:20)
 

а ты посмотри - записываются или нет - в виндах найди папку кукисов, например в икспях

c:\documents and settings\имя юзера виндов(под кем вошел в винды)\cookies
и ищи там файл примерно такой:
pit@localhost[1].txt
где pit - имя юзера виндов (под кем вошёл), спецсимвол @, localhost имя сервера поставившего куку
т.е. от яндекса у меня такая ставится кука pit@yandex[1].txt

   
 
 автор: secondvad2   (21.05.2006 в 14:52)   письмо автору
 
   для: Пётр   (21.05.2006 в 14:49)
 

я попробовал через OPERA браузер! да куки записались! значит дело не в них я не могу разобраться в чемже! нажимаю на кнопку в INDEX.PHP и кидает обратно

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования