За последние 24 часа нас посетили 21515 программистов и 1024 робота. Сейчас ищут 680 программистов ...

Почему не сохраняются кукисы ?

Тема в разделе "PHP для новичков", создана пользователем AnteFil, 24 июл 2020.

  1. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Код
    Код (Text):
    1. if($_GET['city']!=null){
    2. $city = $_GET['city'];
    3. setcookie("City", $city, time()+3600*24*20, $_SERVER['SERVER_NAME']);/* срок действия 30 дней */
    4. }else {
    5. $city = $_COOKIE['City'];
    6. }
    Передаю ГЕТ параметры которые должны изходя из этого кода сохраниться в кукисы, следущим действием открываю страничку без гет параметров, по коду они должны были подтянуться из кукисов, но этого не происходит!
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    city != City
    --- Добавлено ---
    PHP:
    1. <?php
    2.  
    3. error_reporting ( E_ALL );
    4.  
    5. if ( filter_input ( INPUT_GET, 'city' ) ) // array_key_e...
    6. {
    7.     setcookie ( 'city', $_GET['city'], strtotime ( '+30 days' ) );
    8. }
    9.  
    10. $_GET['city'] ??= $_COOKIE['city'];
    11.  
    12. echo $_GET['city'];
     
  3. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Более или менее проблему локализовал куки почему то удаляються. Я создаю запись типа
    Код (Text):
    1. setcookie ( 'test', 'test', strtotime ( '+1 days' ) );
    при втором обращении запись создаётся, почему при повторном не понятно с первого раза не записывается, когда я обращаюсь на страницу без установки
    Код (Text):
    1. setcookie ( 'test', 'test', strtotime ( '+1 days' ) );
    кукисы удаляются смотрел через свойсва браузера их нет нет по этому и опа
     
    sickonhead нравится это.
  4. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Вообщем ситуация такая кукисы установленные через php удаляються если устанавливать через JS то спокойно существуют почему так?
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    и ?
    setcookie отсылает заголовки в браузер, а не присваивает переменной тут же значение.
    --- Добавлено ---
    что ?
     
  6. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Щас поясню
    Ситуация ещё больше становиться не понятно )))))
    Кукуи перестают работать если используется if
    Устанавливаю куки пишу такой код

    Код (Text):
    1.  
    2. SetCookie("gorod","проверка",time()+3600);
    3. print_r($_COOKIE);
    Всё ок работает куки установились всё пучком, удаляю код установки куки сохраняются, пишу следующий код используя условие
    Код (Text):
    1. if($_GET['city']!=NULL){
    2. $city = filter_input(INPUT_GET, 'city', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
    3. SetCookie("gorod","проверка",time()+3600);
    4. }
    5. print_r($_COOKIE);
    Передавая GET параметр куки устанавливаются, но без GET куки исчезают. Хорошо думаю меняю ИМЯ куков на test
    SetCookie("test","проверка",time()+3600);


    Устанавливаю их через проверку GET параметра, но GET в куки не записываю, текст по умолчанию "проверка".
    При добавлении GET, отображается сразу две куки test и gorod, а без GET пропадают оба.

    Ситуация такая что куки работают только внутри проверки if а за её пределами нет.
    Установленные куки внутри условия работают только внутри условия как то так получается
     
    #6 AnteFil, 25 июл 2020
    Последнее редактирование: 25 июл 2020
  7. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Вообщем работать всё начинает если указать домен
    SetCookie("gorod",$city, strtotime ('+30 days'), "/", "site.com");
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. $a = rand ();
    4.  
    5. SetCookie( "gorod", $a );
    6.  
    7. echo $a . PHP_EOL;
    8.  
    9. print_r ( $_COOKIE );
    Код (Text):
    1. 1513061286
    2. Array
    3. (
    4. )
    Код (Text):
    1. 885869497
    2. Array
    3. (
    4.     [gorod] => 1513061286
    5. )
    Код (Text):
    1. 1875562416
    2. Array
    3. (
    4.     [gorod] => 885869497
    5. )
    Код (Text):
    1. После передачи клиенту cookie станут доступны через массив $_COOKIE при следующей загрузке страницы. Значения cookie также есть в $_REQUEST.
    --- Добавлено ---
    бред.
    версия пхп какая ?
     
  9. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Текущая версия PHP: 7.3.15 но уже как бы не имеет смысла, с проблемой разобрался почему именно так работает вряд ли когда то узнаю )))))