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

Форум PHP

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

 

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

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

тема: Так есть куки или нет ?
 
 автор: Ralph   (20.02.2007 в 06:17)   письмо автору
 
 

Блин,5 часов уже сношаюсь,помогите кто нибудь...Авторизация,проверка кук...При запуске со стандартного браузера телефона пишет:'куки не включены...',с оперы-мини уходит в длительное ожидание ответа сервера,т.е не загружается страница,а просто "Подождите...".Установил в скрипте в начале set_time_limit(3)-не прерывает...Такое впечатление,что скрипт в состоянии постоянного редиректа

   
 
 автор: Ralph   (20.02.2007 в 06:28)   письмо автору
 
   для: Ralph   (20.02.2007 в 06:17)
 

if(!isset($_COOKIE['rth'])){$_COOKIE['rth']=-1;}
$session=$_COOKIE['rth'];
if(($session!=-1)&(!preg_match("/^[0-9a-z]{16}$/i",$session))){$session='';}
.....
if($session==-1)
{
if(isset($_GET['tcc'])){$err='У вас на телефоне выключен прием кук...<br/><br/>Включите куки и <a href="'.$adr.'">вернитесь обратно</a>';header('Location:http://'.$_SERVER['SERVER_NAME'].'/error/error.php?err='.urlencode($err));exit;}
elseif(isset($_SERVER['QUERY_STRING'])){$adr.='&';}
else{$adr.='?';}

   
 
 автор: Ralph   (20.02.2007 в 06:35)   письмо автору
 
   для: Ralph   (20.02.2007 в 06:28)
 

setcookie('rth',0,time()+10000);

header('Location:'.$adr.'tcc=1');exit;

}

   
 
 автор: Ralph   (20.02.2007 в 10:33)   письмо автору
 
   для: Ralph   (20.02.2007 в 06:35)
 

Или вообще забить на них и прикреплять имя сессии к url..? А то какая-то это мутная вещь...Чуть где вывод проскочил-уже не установятся,то их хрен установишь,то хрен удалишь...Вон на ОпереМини сколько ни колупался,так и не получается у меня их удалять :-(

   
 
 автор: Sl   (20.02.2007 в 11:03)   письмо автору
 
   для: Ralph   (20.02.2007 в 10:33)
 

Вы не можете удалить Куки ?
можно удалять например так

setcookie('cook','value',0);

Главное, чтобы эти заголовки устанавливались до любого вывода на странице

   
 
 автор: Ralph   (20.02.2007 в 11:15)   письмо автору
 
   для: Sl   (20.02.2007 в 11:03)
 

Да пробовал по разному,но сейчас больше волнует вопрос,почему не могу их установить :-) Насчет передачи только через глупость сморозил-а если человек решит зайти на сайт через 3 дня,что ж ему,номер сессии запоминать,чтобы в конец адреса добавить ...Значит,надо добивать куки ...Кто нибудь,просмотрите вышележащий код свежим взглядом,может,я зациклился и чего-то очевидного не вижу в нем ?

   
 
 автор: Ralph   (20.02.2007 в 13:25)   письмо автору
 
   для: Ralph   (20.02.2007 в 11:15)
 

С горем пополам определил,что почему-то не выставляются куки...Но ПОЧЕМУ ??? ЧТО В ЭТОМ КОДЕ НЕ ТАК ??????

   
 
 автор: isset   (20.02.2007 в 15:00)   письмо автору
 
   для: Ralph   (20.02.2007 в 13:25)
 

http://softtime.ru/forum/read.php?id_forum=1&id_theme=32947&page=1
очень важный ответ!!!

   
 
 автор: cheops   (20.02.2007 в 16:02)   письмо автору
 
   для: Ralph   (20.02.2007 в 13:25)
 

В браузере включена поддержка cookie? Cookie с других сайтов устанавливаются нормально?

   
 
 автор: Ralph   (20.02.2007 в 16:14)   письмо автору
 
   для: cheops   (20.02.2007 в 16:02)
 

Брат,пожизненный тебе респект за то,что хоть заглянул...Да,в браузере включено,проверял неоднократно,авторизация других сайтов не теряется...Ладно,код большой,писал сам,так что кроме меня,вряд ли кто захочет разбираться...

   
 
 автор: cheops   (20.02.2007 в 16:20)   письмо автору
 
   для: Ralph   (20.02.2007 в 16:14)
 

Ошибок вроде "Warning: Cannot modify header information - headers already sent by" нигде не проскакивает? Закомментируйте переадресацию
setcookie('rth',0,time()+10000);
//header('Location:'.$adr.'tcc=1');exit;

Экран остаётся чистым?

   
 
 автор: Ralph   (20.02.2007 в 16:38)   письмо автору
 
   для: cheops   (20.02.2007 в 16:20)
 

Да нет,насчет ошибок,так я до полной отладки скрипта всегда выставляю E_ALL даже без столь любимого почему-то народом ~E_NOTICE :-) Ты хочешь сказать,что редирект колбасит ? Вот я захожу с родного браузера и с ОперыМини,и что удивляет-разная реакция...Родной пишет:куки не установлены,а опера уходит в глубокий завис...Вот что меня интригует

   
 
 автор: Ralph   (20.02.2007 в 17:05)   письмо автору
 
   для: Ralph   (20.02.2007 в 16:38)
 

\m/ (о) (о) \m/

   
 
 автор: Ralph   (20.02.2007 в 17:05)   письмо автору
 
   для: Ralph   (20.02.2007 в 16:38)
 

Cheops,если сочтешь нужным и будет время,зайди пожалуйста на http://www.ralph.in.ua с компьютера и ответь,что комп скажет на это...И так,с точки зрения теории,скажи,верен ли в принципе,тот участок кода,который я прописал ? Если да,то уже легче,буду искать в остальном коде...Понимаешь,брат,весь вопрос в том,что компа нет и я все пишу с телефона,и у меня просто нет возможности прогнать через Денвер или что-то похожее,все только онлайн...Я уже трафа и времени убил нереально...

   
 
 автор: cheops   (20.02.2007 в 17:42)   письмо автору
 
   для: Ralph   (20.02.2007 в 17:05)
 

Зашёл, ответил - что должно произойти, на каком этапе устанавливается cookie (у себя её тоже не вижу).

   
 
 автор: Ralph   (20.02.2007 в 21:14)   письмо автору
 
   для: cheops   (20.02.2007 в 17:42)
 

Так,проснувшись-всем глубокие извинения...Бессонная ночь над долбаной программой,игнор моей темы,1.5 пива и ...в общем,Остапа понесло...

   
 
 автор: Ralph   (21.02.2007 в 00:18)   письмо автору
 
   для: Ralph   (20.02.2007 в 21:14)
 

Вот о чем подумал-а никакие настройки сервера не могут такое вызвать ?

   
 
 автор: cheops   (21.02.2007 в 00:23)   письмо автору
 
   для: Ralph   (21.02.2007 в 00:18)
 

Нет, как правило, никакие настройки сервера не влияют на cookie. Сервер лишь отправляет HTTP-заголовок клиенту с просьбой установить cookie, эту просьбу клиент может принять, может отклонить. Если он принимает её - он с каждым следующим запросом шлёт HTTP-заголовок со значением, которое "попросил" его установить сервер.

   
 
 автор: Ralph   (21.02.2007 в 02:01)   письмо автору
 
   для: cheops   (21.02.2007 в 00:23)
 

Вот еще мысль...Могут ли возникать проблемы из-за использования в header'ax разных адресов,т.е. www.ralph.in.ua Или ralph.in.ua ? Для перехода на страницу это пох,а вот для кук...

   
 
 автор: cheops   (21.02.2007 в 02:15)   письмо автору
 
   для: Ralph   (21.02.2007 в 02:01)
 

Да, запросто - это частая проблема - переходы должны быть везде одниковые (либо с www, либо без www). Если вы сейчас сидите под www.softtime.ru/forum, набирите sottime.ru/forum или соответственно наоборот - будете свидетелем как вы станете незарегитстрированным пользователем.

   
 
 автор: Ralph   (21.02.2007 в 02:57)   письмо автору
 
   для: cheops   (21.02.2007 в 02:15)
 

Вы извините,что съезжаю с темы,но не люблю плодить темы-кло(у)ны,поэтому помогите разобраться в некоторых неясностях и закрывайте нах тему... Не вызовет ли ошибку вторая часть этой конструкции,если переменная будет не установлена if((!isset($var))or($var=='')) или варианты (empty($var)) или (!$var) ??? Я все время боюсь,что пхп скажет:'как я тебе,блин,сравню переменную с '',если ее не существует !!!' и поэтому все время использую конструкцию ...if(!isset($var)){$var='';} if($var=='')...

   
 
 автор: cheops   (21.02.2007 в 03:04)   письмо автору
 
   для: Ralph   (21.02.2007 в 02:57)
 

Notice - это лишь совет, это не критическая ошибка, на всех хостингах вывод Notice-сообщений отключён. Вы тоже можете понизить чувствительность интерпретатора. Для этого, следует выставить соответствующее значение для директивы error_reporting http://www.softtime.ru/info/articlephp.php?id_article=23, в конфигурационном файле php.ini
error_reporting = E_ALL & ~E_NOTICE  

Так же можно изменить уровень обработки ошибок локально, для этого в начало скрипта следует поместить функцию
<?php 
Error_Reporting
(E_ALL & ~E_NOTICE); 
?>

После чего проверять переменную по человечески
if($var=='')

или
if(!empty($var))

Советам хорошо следовать до тех пор, пока они не начинают снижать читабельность кода.

   
 
 автор: Ralph   (21.02.2007 в 03:15)   письмо автору
 
   для: cheops   (21.02.2007 в 03:04)
 

Просто как-то не люблю игнорировать ошибки,но попробую :-) И вопрос насчет путей...Никак с ними не разберусь... там,где работает <a href="/total/session.php"> или header('Location:/total/session.php'),не работает include('/total/session.php') ,поэтому везде использую конструкцию Include($_SERVER['DOCUMENT_ROOT'].'/total/session.php') .Проясните,плз,этот вопрос,где какие пути можно использовать ?

   
Rambler's Top100
вверх

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