Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> как работают куки?, не пойму..
Arcoslov  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Здравствуйте.

Помогите, плз, разобраться, как работают куки.
вот тут http://php.net/manual/ru/function.setcookie.php написано, что:
Цитата
setcookie() задает cookie, которое будет передано клиенту вместе с другими HTTP заголовками. Как и любой другой заголовок, cookie должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться прежде остального вывода, включая вывод тэгов <html> и <head>, а также пустые строки и пробелы.


вот мой код:
<?php
setcookie('val',1);
$val= (isset($_COOKIE['val'])) ? $_COOKIE['val'] : 0;
echo $val;
?>


Почему при первом заходе на эту странице echo $val даёт ноль? куки же раньше всего уходят браузеру, значит, к моменту присвоения значения переменной val куки уже должны быть установлены в 1, и именно она должна записаться.

p.s. WebDeveloper показывает, что в куках val = 1

Это сообщение отредактировал Arcoslov - 14.12.2014 - 20:58
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22695
Пользователь №: 20039
На форуме: 7 лет, 3 дня
Карма: 599




Arcoslov
Потому что $_COOKIE создаются до начала обработки PHP, то есть на первой строчке они уже сформированы.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arcoslov  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









inpost, не понятно.

куки находятся в клиентской части.
Клиент(браузер) обращается к серверу, начинается выполнение скрипта.
На первой строчке у нас задаётся кука.
На второй строчке переменная её не получает.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22695
Пользователь №: 20039
На форуме: 7 лет, 3 дня
Карма: 599




Arcoslov
$_COOKIE создаётся на "нулевой" строчке. setcookie не расширяет массив, созданный ранее.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8740
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 8 дней
Карма: 591




Цитата (Arcoslov @ 14.12.2014 - 21:02)
На первой строчке у нас задаётся кука.
На второй строчке переменная её не получает.

В переменной $_COOKIE находится куки из заголовков запроса, при первом запросе никаких кук нет, они ещё не установлены.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arcoslov  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Товарищи,

я не понимаю последовательность происходящего.
В моём понимании (исходя из текста моего скрипта):

1) сервер устанавливает куку в браузер (это в веб-девелопере видно, что кука сетится нормально).
2) переменная запрашивает эту куку, но нихрена не получает.

и, как вы говорите, есть ещё пункт номер ноль, который до всего этого.. что делает? устанавливает пустые куки?.. ну, допустим. моего скрипта это же не отменяет.

я в упор понять не могу - почему, если я напишу
$a=2;
$b=$a, то echo $b однозначно даст "2", а та же самая вещь с куками не прокатывает.
Первая строчка же идёт ДО второй и она корректно сетит куку, это видно.

blink.gif
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arcoslov  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









вот тут - первый пример - абсолютно мой случай)
http://www.w3schools.com/php/func_http_setcookie.asp
сначала сетятся куки, но схватываются только после перезагрузки страницы.

я на пути к истине, просто видимо не могу понять последовательность действий клиент-серверного взаимодействия. кто куки делает, куда кладёт, и как они ходят.

Это сообщение отредактировал Arcoslov - 15.12.2014 - 01:17
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8740
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 8 дней
Карма: 591




1 первый запрос к серверу
GET /index.php HTTP/1.1
Host: example.com
...

в $_COOKIE ничего нет, потому что в запросе их не было

2 ответ сервера
HTTP/1.1 200 Ok
Set-Cookie: val=1
...


3 второй запрос к серверу
GET /index.php HTTP/1.1
Host: example.com
Cookie: val=1
...

теперь в $_COOKIE то что было установлено сервером в прошлом запросе
Как то так.
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22695
Пользователь №: 20039
На форуме: 7 лет, 3 дня
Карма: 599




Arcoslov
Сначала создаются $_POST, $_COOKIE, $_GET.
Потом начинает выполняться PHP код.
setcookie создаёт куки на стороне клиента, а не сервера, вот и всё.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8740
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 8 дней
Карма: 591




$_COOKIE это заголовки запроса, setcookie() устанавливает заголовки ответа сервера, это совершенно разные вещи.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arcoslov  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Спасибо, теперь всё понятно!
wink.gif
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Alchemist  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 663
Пользователь №: 5285
На форуме: 8 лет, 6 месяцев, 5 дней
Карма: 9




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

Там же на где ты читал про то как работает функция, строчкой(!) ниже написано:
Цитата
После передачи клиенту cookie станут доступны через массивы $_COOKIE и $HTTP_COOKIE_VARS при следующей загрузке страницы.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arcoslov  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата (Alchemist @ 15.12.2014 - 23:52)
Также рекомендую приобрести хорошую привычку читать мануалы до конца, а не только первое предложение.

Там же на где ты читал про то как работает функция, строчкой(!) ниже написано:
Цитата
После передачи клиенту cookie станут доступны через массивы $_COOKIE и $HTTP_COOKIE_VARS при следующей загрузке страницы.

да читал, просто механизм не был понятен.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 21 день
Карма: 167




inpost, вот эту строчку:
"Обучаю веб-программированию качественно и не дорого."
сотри, потому как обучатель из тебя мягко говоря не очень...


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22695
Пользователь №: 20039
На форуме: 7 лет, 3 дня
Карма: 599




Valick
Красавчик! У тебя забыл спросить laugh.gif


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса