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

Форум PHP

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

 

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

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

тема: Как проверить включение cookie
 
 автор: Сашинька   (13.08.2011 в 22:21)   письмо автору
 
 

Как проверить включение cookie

  Ответить  
 
 автор: Valick   (13.08.2011 в 22:22)   письмо автору
 
   для: Сашинька   (13.08.2011 в 22:21)
 

установить и прочитать
если прочиталось.... то включено

  Ответить  
 
 автор: Сашинька   (13.08.2011 в 23:42)   письмо автору
 
   для: Valick   (13.08.2011 в 22:22)
 

Почему то сразу не срабатывает, а только на второй раз

  Ответить  
 
 автор: Valick   (14.08.2011 в 05:48)   письмо автору
 
   для: Сашинька   (13.08.2011 в 23:42)
 

потому что так и должно быть

  Ответить  
 
 автор: Гавриленко Дмитрий   (14.08.2011 в 08:21)   письмо автору
 
   для: Сашинька   (13.08.2011 в 23:42)
 

Наверное потому что куки сначала читаются, а потом уже только устанавливаются.

  Ответить  
 
 автор: Valick   (14.08.2011 в 09:31)   письмо автору
 
   для: Гавриленко Дмитрий   (14.08.2011 в 08:21)
 

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

[поправлено модератором]

  Ответить  
 
 автор: Сашинька   (14.08.2011 в 13:48)   письмо автору
 
   для: Valick   (14.08.2011 в 09:31)
 

Eсть ли способ, установить cookie не используя setcookie("test","1") ?
Как сделать, что бы можно было прочитать на 100%?

  Ответить  
 
 автор: cheops   (14.08.2011 в 19:10)   письмо автору
 
   для: Сашинька   (14.08.2011 в 13:48)
 

Можно при помощи JavaScript, но все-равно пользователь должен будет загрузить сначала страницу с сервера и лишь после этого будет установлена cookie.

  Ответить  
 
 автор: Сашинька   (15.08.2011 в 13:46)   письмо автору
 
   для: cheops   (14.08.2011 в 19:10)
 

Правильно ли понят алгоритм,
1.JavaScript устанавливает при первом открытии cookie
2. После обращении к серверу, например отправкой формы, читаем возможность установки cookie.

Во время загрузки пользователем страницы PHP никак нельзя узнать возможность использования cookie, так да?
Только и только после окончания загрузки страницы и последующего чтения, можно узнать.

А если направить (до ответа пользователю, или во время загрузки)запрос куда-то в пустое место.

  Ответить  
 
 автор: cheops   (15.08.2011 в 14:30)   письмо автору
 
   для: Сашинька   (15.08.2011 в 13:46)
 

1. Что означает первое открытие cookie?
2. Если при установки cookie при помощи JavaScript у вас она не читается при помощи JavaScript - cookie не поддерживаются. Это можно проверить сразу без обращения к серверу.

PHP может узнать установлена cookie или нет только если ему придет/не придет соответствующий HTTP-заголовок. Т.е. он сначала просит клиента установить cookie при помощи Set-Cookie, а потом "смотрит" есть ли в ответе HTTP-заголовок Cookie и что в нем.

>А если направить (до ответа пользователю, или во время загрузки)запрос куда-то в пустое место.
Откуда? Если до клиента не дойдет HTTP-заголовок Set-Cookie, он ничего не установит, если клиент отправит заголовок другому серверу, он не получит Set-Cookie и значение, которое он должен установить в Cookie.

Проще всего проверить возможность установки cookie при помощи JavaScript - можно сразу не отходя от кассы удостоверится устанвливаются cookie или нет.

  Ответить  
 
 автор: Сашинька   (15.08.2011 в 15:48)   письмо автору
 
   для: cheops   (15.08.2011 в 14:30)
 

>1. Что означает первое открытие cookie?
Выше вы писали
>пользователь должен будет загрузить сначала страницу с сервера
Ответ есть? Подразумевалась по тексту открытие страницы, а не cookie, как продолжение вашей мысли

Подскажите пожалуйста, почему не работает под денвером
http://www.softtime.ru/scripts/checkcookie.php
Ответ браузера
На этой странице обнаружена циклическая переадресация
Веб-страница cookie.php?cookie=1 привела к избыточному количеству переадресаций. Чтобы устранить эту проблему, можно удалить файлы cookie для этого сайта или разрешить файлы cookie независимых поставщиков. Если проблема сохранится, возможно, она связана с конфигурацией сервера, а не с вашим компьютером.

И под PHPedit тоже не работает. нужен хоть один рабочий вариант, а то путаница в голове

  Ответить  
 
 автор: cheops   (15.08.2011 в 16:18)   письмо автору
 
   для: Сашинька   (15.08.2011 в 15:48)
 

Скрипт очень старый (хорошо, что обратили на него внимание, обновим в ближайшее время), нужно преобразовать $cookie в $_GET['cookie'], а $test в $_COOKIE['test'].

  Ответить  
 
 автор: Сашинька   (15.08.2011 в 16:37)   письмо автору
 
   для: cheops   (15.08.2011 в 16:18)
 

Так он от старости не может работать?
Смешнее, когда с кем-то общаешься в жизни, с теоретиком, а он постоянно ссылаясь на теоретиков, человека практика записывает в дураки.
Еще смешнее, когда в институте все такое дают, а теоретик свято верит и борется за правду.
Очень смешно, когда кругом одни теоретики, но давным давно они были практики по использованию ошибок и не проверили теорию до конца.
Совсем смешно, когда вся страна изучив отрицательный опыт прошлого, принимает его за положительное и начинает все крушить вокруг.
Извините если шутка кажется глупыми и неуместными. Пусть тогда модератор удалит.

Весь интернет из этого примера на эту тему. Все переписывают не проверяя.
Получается любая глупость в инете может быть, что мы и имеем.

То что вы сказали-заработало в денвере, а в браузере ни фига.
В браузере тоже самое пишет.
Можно ли использовать для поставленных целей, а то уже голова запарилась от комбинаций?
Подскажите пожалуйста.

  Ответить  
 
 автор: Valick   (15.08.2011 в 17:15)   письмо автору
 
   для: Сашинька   (15.08.2011 в 16:37)
 

Пусть тогда модератор удалит.
Хеопс и есть модератор) и автор множества книг и создатель этого форума)
вам просто нужна хорошая книга, чтобы последовательно изучить язык, без этого у вас в голове еще долго будет каша

  Ответить  
 
 автор: Сашинька   (15.08.2011 в 18:50)   письмо автору
 
   для: Valick   (15.08.2011 в 17:15)
 

Там написано, что у вас ошибка. А книга есть, с двумя словами не в эту тему и еще больше 10000 страниц, на другие темы.
А мне надо, после получения заполненной формы на сервере, узнать есть ли кука у пользователя и если нет, то отказать посетителю. А дискутировать можно вечно о том что для этого надо.
Не плохо бы понять, как сделать, что-бы код, приведенный в книгах по проверке включения кук должен работать, если он ни у кого не работал.
Можете для опоры и предметного общения пример привести?

  Ответить  
 
 автор: cheops   (15.08.2011 в 19:20)   письмо автору
 
   для: Сашинька   (15.08.2011 в 18:50)
 

Посмотрите новый пример http://www.softtime.ru/scripts/checkcookie.php. Лучше эту задачу не решать средствами PHP - не очень удобно, cookie находятся на стороне клиента, поэтому и задачу проверки того факта включены ли они, удобнее делать на стороне клиента (сервер можно известить по AJAX-каналу).

  Ответить  
 
 автор: Сашинька   (15.08.2011 в 19:31)   письмо автору
 
   для: cheops   (15.08.2011 в 19:20)
 

Спасибо за целебную помощь.
В книге тоже ошибка, но там уже другого рода, на лицо прогресс.

Дайте опорный пример JavaScript для опредмечивания темы, а то мы уже книги исследуем.
Мне принцип механики стал понятен, но отправная точка в пустоте.

В моем случае, наверное, при отправке формы, мне надо послать куку в пустое окно, а потом на серваке попытаться прочитать?

  Ответить  
 
 автор: cheops   (16.08.2011 в 10:49)   письмо автору
 
   для: Сашинька   (15.08.2011 в 19:31)
 

На JavaScript проверить существование cookie можно, отталкиваясь от следующего примера
<html> 
<head>
<script> 
  function loadpage() 
  { 
    var obj = document.getElementById ('id_cookie'); 
    if(obj) 
    { 
      // Устанавливаем cookie
      setcookie("ckeck_cookie", 1);
      // Извлекаем cookie
      var cookie = getcookie("ckeck_cookie"); 
      if(cookie != "1")  
      { 
        obj.innerHTML = 'У вас отключены cookie, ряд возможностей сайта вам будут не доступны'; 
      }
      else
      {
        obj.innerHTML = 'У вас включены cookie, сейчас мы вас ограбим'; 
      } 
    } 
  } 
  // Устанавливаем cookie 
  function setcookie(name, val) 
  { 
    var putdate = new Date(); 
    // Устанавливаем cookie на год 
    putdate.setTime(putdate.getTime() + (86400 * 365)); 
    document.cookie = name + "=" + val + "; expires=" + putdate.toGMTString() +  "; path=/"; 
  } 
  // Извлекаем cookie 
  function getcookie(name) 
  { 
    var re = new RegExp(name + "=([\\d])", "i"); 
    arr = re.exec(document.cookie); 
    return arr[1]; 
  } 
</script> 
</head>
<body onload='loadpage()'> 
<div id='id_cookie'></div>
</form>    
</body> 
</html>

  Ответить  
 
 автор: Сашинька   (16.08.2011 в 12:50)   письмо автору
 
   для: cheops   (16.08.2011 в 10:49)
 

Огромное спасибо.
Практическим испытаниям сейчас нет времени, но есть уверенность.
Для меня, именно для меня, эта Ваша помощь конкретна и бесценна.
Ваша помощь позволила мне прекратить бесплодные поиски в просторах интернет, создала у меня ощущение ясной законченности, устранила блуждания в лабиринте потёмков, создала мне твердую почву, на которой можно выстраивать мощную структуру проекта.
Я надеюсь, верю и в этом убежден, что этот ход развития задачи ПРОВЕРКИ ВКЛЮЧЕНИЯ КУК будет полезен многим начинающим и опытным программистам.
Вечером попробую силу практики и полезность кода, который думаю можно оформить в виде законченного, выделенного модуля.
З,Ы. Вроде локально не должно работать в браузере Google Chrome

  Ответить  
 
 автор: Сашинька   (15.08.2011 в 21:01)   письмо автору
 
   для: cheops   (15.08.2011 в 19:20)
 

Все работает.
Оригинальное решение.

А где, в какой папке, можно куку увидеть, если под денвером и если на сайте?

  Ответить  
 
 автор: cheops   (16.08.2011 в 10:37)   письмо автору
 
   для: Сашинька   (15.08.2011 в 21:01)
 

От браузера зависит... все складируют в разных местах (кроме того, сессионные куки вообще не записываются на жесткий диск, а хранятся в оперативной памяти). Вы каким браузером пользуетесь?

  Ответить  
Rambler's Top100
вверх

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