Веб-страница не распознает файлы cookie

Я опытный программист (с 1974 года!), Который новичок в работе с передовыми веб-технологиями (я разбираюсь в HTML, basic PHP и MYSQL). Я никогда раньше не работал с файлами cookie, и я озадачен, так как, похоже, у меня проблемы с чтением файлов cookie, которые я установил.

В этом случае эта страница рекурсивно вызывается для обработки и отображения формы. В первый раз, когда пользователь отображает страницу, я ищу файл cookie (а его не должно быть). Пользователь заполняет форму и отправляет ее. Действие формы снова вызывает страницу, и я ищу файл cookie. По-прежнему не один, но есть данные $_POST, поэтому я установил cookie для пользователя (эта часть работает). Если пользователь возвращается на страницу после отправки формы, должен быть файл cookie, и я использую значение файла cookie для поиска пользователя и заполнения идентифицирующей информации в форме.

Запись cookie работает. Однако, когда я снова открываю эту страницу, файл cookie остается пустым.

Проверил настройки контента в браузере (Chrome); файл cookie есть и содержит необходимую информацию (и срок его действия не истек). Используя функцию консоли в браузере для страницы, я вижу все свои файлы cookie из этого домена, но не могу получить доступ к конкретному файлу для этой программы. Я удалил файл cookie, несколько раз выполнил процедуру, чтобы убедиться, что файл cookie перезаписан, и при следующем доступе по-прежнему нет файла cookie. Я удалил файл cookie, очистил кеш в браузере и повторил попытку безуспешно. Я закрыл браузер, перезапустил его и все еще не получил cookie. Я проверил файл php.ini, чтобы убедиться, что флаг variables_order установлен правильно (явный EGPCS). Я просмотрел предыдущие вопросы и не нашел ничего похожего на то, что здесь происходит (большинство связано с JS или связано с установкой пути в файле cookie).

Я добавил несколько эхо-операторов после тега <html>, чтобы показать мне состояние обработки файлов cookie, и они всегда указывают на то, что $_COOKIE пуст (или не существует).

Итак, есть кое-что, что я упустил из виду в коде. Может, кто-нибудь сможет увидеть, чем я не являюсь.

Вот код (я использовал обычный PHP, так как мой JS-fu слабый):

<?php 
//make sure I display errors
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

//cookie routine

//initialize variables
$cookie_name="SHS74"; //self-explanatory    
$cookie_set=FALSE; //flag to help debugging
$returning=FALSE;  //FALSE = no cookie, TRUE=cookie has been read
$returned_user=""; //value of the cookie

//actual  routine  
      if(!isset($_COOKIE['$cookie_name'])) {  //user has never submitted anything
              if (isset($_POST['email_from'])) {  //but has submitted a form this time – required field
              setcookie ($cookie_name, $_POST['email_from'], time()+3600*24*30, '/'); //works
              $returning=FALSE;  //so I don’t look for database records for this user
              $cookie_set=TRUE;  //flag to help debugging
              } // end of if $_POST[ email_from] - note: if not isset  $_POST[‘email_from’], I can safely fall through since flags are already initialized to FALSE
      } //if not isset
         else {   //the user has a cookie
         $returned_user = $_COOKIE['$cookie_name']; //who the user is
         $returning=TRUE; //user has been here before, submitted a form, and has a database record
         } //end else 

//database initialization
      session_start(); 
      include("connection.php");

?>

<!DOCTYPE HTML>
 <html>
     <head>

[… Вырезать…]

(да, действительно старая школа)

Итак, что я делаю не так? Это ошибка конфигурации, которую я пропустил, или я испортил работу с $_COOKIE в самом начале?

Спасибо!

10 августа 2018 г. 11: 00edt - как и было предложено, я удалил одинарные кавычки около $ cookie_name в тесте isset и везде, где я ссылался на $ _COOKIE. Это сработало! Спасибо. Да, это все в новинку для меня - мой предыдущий опыт создания веб-сайтов был очень простым - без обработки массивов, без файлов cookie, так что я нахожусь на крутом этапе обучения. Спасибо всем, кто предложил помощь!

$_COOKIE['$cookie_name'] <- потому что вы использовали апострофы, которые буквально будут искать файл cookie с именем $cookie_name, см. Строки PHP
CD001 10.08.2018 14:49

^ Что он сказал. Так что просто используйте вместо него $_COOKIE[$cookie_name].

IncredibleHat 10.08.2018 14:50

Круто, кто-то назвал куки advanced web technique. ;)

Mladen Ilić 10.08.2018 14:51

Я должен отдать должное всем показанным усилиям, предыдущей отладке, объясненному вопросу. Жаль, что проблема свелась к простой опечатке с именем переменной :(

IncredibleHat 10.08.2018 14:55
1
4
91
0

Другие вопросы по теме