Невозможность установить файлы cookie в PHP

Я написал PHP-скрипт, который берет информацию о посетителях IP и браузере с веб-сайта и сохраняет его в таблице в моей базе данных. Этот скрипт включен в заголовок и запускается каждый раз, когда загружается каждая страница. survey.php

Я хочу, чтобы этот код запускался только для каждого нового посетителя веб-сайта, поэтому я регистрирую только каждого нового посетителя.

Я предполагаю, что это делается путем установки файла cookie, поэтому я написал этот другой код, чтобы установить файл cookie, а затем включить survey.php, только когда cookie не существует. Я использовал ! функцию в isset для запуска инструкции if, если она отсутствует, но она не устанавливает файл cookie и запускает скрипт при каждой загрузке.

Основываясь на том, что говорится в руководстве, я не вижу, где я ошибаюсь.

<?php if(!isset($_COOKIE['Name'])){ setcookie("Name"); include ('survey.php'); } ?> 

EDIT: я добавил значение, протестировал его с несколькими пользователями, и скрипт все еще запускает каждую загрузку. Не знаю, почему.

Дайте вашему файлу cookie значение:

 $value = 'something from somewhere'; if(!isset($_COOKIE['Name'])){ setcookie("Name", $value); include ('survey.php'); } 

Учитывая, что для идентификации новых пользователей достаточно использовать «0» или «1».

Если вы хотите, чтобы файл cookie истекал в будущем:

 setcookie("Name", $value, time()+604800); /* expires in a week */ 

РЕДАКТИРОВАТЬ:

Я пробовал это со следующим кодом на простой странице:

 <?php if(!isset($_COOKIE['Test'])){ setcookie("Test", '1'); echo "Cookie set"; //include ('survey.php'); } ?> 

Я получаю «Cookie set» один раз, а затем не вижу его снова при последующих обновлениях. Я также вижу куки в консоли:

 Test | 1 | www.domain.com | / | Session | 5 

Единственная потенциальная проблема (поскольку вы используете разных пользователей) заключается в том, что этот файл cookie настроен для текущего сеанса здесь, поэтому установка его срока действия в будущем будет хорошей для обеспечения стабильности и не позволит вашим пользователям увидеть ваш опрос в ближайшее время:

 <?php if(!isset($_COOKIE['Test'])){ //Expires on 31 december 2015 setcookie("Name","1",mktime (0, 0, 0, 12, 31, 2015)); include ('survey.php'); } ?> 

1) Постарайтесь установить значение для файла cookie как this $ value = 'Test'; setcookie («TestCookie», значение $);

2) проверьте, включены ли cookie в браузере

Чтобы установить cookie, а точнее, получить cookie, отправленный пользователю с PHP, вам нужно будет дать ему значение. Браузеры (по крайней мере, большинство современных) принимают пустой заголовок cookie в качестве порядка, чтобы очистить все файлы cookie, которые у них были с этим именем.

Таким образом, очевидно, что он не будет отправлен по дальнейшим запросам, поскольку браузеры вместо того, чтобы устанавливать его в null, отбрасывают его.

Дайте ему случайное, короткое значение, и все ваши проблемы исчезнут:

 setcookie("Name",rand(1,10)); 

или похожие.

ПОСТАНОВИЛИ

Я включил код как первый фрагмент кода, но не в первую строку.

Код для установки файлов cookie должен начинаться раньше всего, в строке 1.

Проводя это, чтобы другие могли извлечь выгоду.