Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    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  
Дата
Цитировать сообщение

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



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

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




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  
Дата
Цитировать сообщение

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



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

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




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


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

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



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

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




Цитата (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  
Дата
Цитировать сообщение

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



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

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




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  
Дата
Цитировать сообщение

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



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

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




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


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

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



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

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




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


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

Unregistered









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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 663
Пользователь №: 5285
На форуме: 9 лет, 2 месяца, 12 дней
Карма: 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  
Дата
Цитировать сообщение

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5671
Пользователь №: 35718
На форуме: 4 года, 8 месяцев, 28 дней
Карма: 176




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


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

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



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

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




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 Пользователей:

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