Setcookie не работает php

PHP — setcookie () не работает

У меня есть эта страница, которая устанавливает cookie и echos из строки, если вы установите флажок. Строка правильно печатается, но cookie никогда не устанавливается, и я понятия не имею, почему.

" method="post">   
"; > else < setcookie("cookie", "off", time()+3600*24); echo "You didn't check the checkbox and a cookie was set with a value of:
"; > echo $_COOKIE['cookie']; ?>

3 ответа

Суперглобальные переменные PHP заполняются во время запуска script, а затем не изменяются или не затрагиваются PHP еще раз для жизни script. Это означает, что $_COOKIE представляет файлы cookie, отправленные на сервер в HTTP-запросе, который активировал script. Он не будет показывать файлы cookie, которые вы добавили/изменили/удалили в течение срока службы script. Эти изменения будут отображаться только по запросу NEXT. Единственное исключение — $_SESSION , которое заполняется при вызове session_start() . Если вам нужно, чтобы эти значения были в $_COOKIE немедленно, вам придется добавлять их вручную, например.

setcookie('cookie', $value, . ); $_COOKIE['cookie'] = $value; 

Если вывод существует до вызова этой функции, setcookie() не удастся и верните ЛОЖЬ. Если setcookie() успешно запущен, он вернется ИСТИНА. Это не указывает, принял ли пользователь cookie.

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

"; > else < setcookie("cookie", "off", time()+3600*24); echo "You didn't check the checkbox and a cookie was set with a value of:
"; > echo $_COOKIE['cookie']; ?> . " method="post">

Это правильный ответ. Вопрос, заданный Тимом, был «установить cookie не работает», а не «не может получить доступ к значению $ _COOKIE»: код, данный Тимом, все равно не будет работать с трюком «$ _COOKIE [‘cookie’] = $ value;» Марк Б.

Читайте также:  Python json loads decode

Куки файлы не срабатывают до тех пор, пока они не будут установлены, и будет отправлен новый запрос страницы. Это связано с тем, что файлы cookie отправляются с запросами страниц, они просто не волшебным образом отображаются на сервере.

Ваше решение — обновить страницу после настройки файла cookie.

// set cookie setcookie("cookie", "off", time()+3600*24); // not available because this cookie was not sent with the page request. echo $_COOKIE['cookie']; 

Как мне обновить страницу после установки cookie? Я не думаю, что обновление страницы может быть сделано с помощью PHP . Я бы использовал header чтобы перенаправить на ту же страницу или использовать JavaScript?

Ещё вопросы

  • 0 Попытка найти IP-адрес сервера для Red5 на сервере Wamp
  • 0 Не появляется диалоговое окно «Сохранить / Открыть файл» при нажатии на ссылки на файлы
  • 0 Правильный SQL-запрос — Обновление записей, где заголовок совпадает
  • 0 Как анимировать, когда нажмите класс или идентификатор с помощью CSS3?
  • 0 Как сделать перенаправление в новой вкладке с «POST» с помощью jquery?
  • 1 SQLDataReader с пустым чтением после ExecuteReader
  • 0 Jqmobile Pages — элементы со второй страницы видны на первой странице?
  • 0 Не загружайте часть HTML, пока кнопка не нажата
  • 1 Как условно установить деструктуризацию
  • 0 Как исключить строки со значениями ‘0’, но не строки со значениями NULL в SQL?
  • 0 Угловой пропуск метода get, вызывающего веб-сервис
  • 0 Android показать график просмотра текста
  • 1 Получение нескольких подстрок из одной строки C #
  • 0 Использование функции в качестве параметра в контроллере
  • 0 Отображение всплывающей подсказки jquery ui без события наведения мыши
  • 1 C # AppDomain загрузка (byte []) создает исключение FileLoadException (HResult 0x80131040 или ошибка манифеста)
  • 1 Получить совпадающее значение регулярного выражения
  • 1 Как получить размер итератора без зацикливания?
  • 1 Не получить фотографии с помощью Google API
  • 0 получить данные единой таблицы формы родительского дочернего запроса таблицы pos_parent_id в качестве дочернего идентификатора
  • 0 Проблема с SQL-запросом (работа с 3 таблицами)
  • 1 FirebaseVisionImage: переменная ‘image’, возможно, не была инициализирована
  • 1 Форматирование файла в список с ценой, названием продукта и количеством
  • 1 Как обеспечить входные данные времени выполнения в тестовых случаях Python
  • 1 MediaPlayer прекращает воспроизведение музыки из Интернета через несколько минут в спящем режиме
  • 0 обработка параллелизма в cron php
  • 1 Импорт телефонных номеров с облачным питоном Google Python
  • 1 C # — включить / отключить DHCP
  • 0 Строки исчезают на Datatables?
  • 1 Как я могу создать консольное приложение, которое utlilitize async / await
  • 1 JS вызвать конструктор базового класса
  • 1 Может кто-нибудь помочь с этим кодом MSDN?
  • 0 Ошибка: невозможно преобразовать параметры из int [10] в int
  • 0 как помешать yii2 выполнить запрос select при вызове Yii :: $ app-> user-> id
  • 0 Как преобразовать первые 15 символов в массиве символов в std :: string в C ++?
  • 0 Преобразование прототипа в JQuery — застрял с class.create и classname.prototype
  • 0 Обработчик событий Jquery не работает при вызове со страницы
  • 1 Суммирование массива чисел в javascript
  • 0 Как закрыть всплывающее окно при нажатии в любом месте на сайте
  • 0 Как вызвать клик при наведении курсора на элемент на x секунд, используя JQuery?
  • 1 Как повысить точность? — Распознавание активности с использованием непрерывных скрытых марковских моделей (Джамм)
  • 1 Сортировка списка наблюдаемых в нокауте
  • 1 извлечение определенных значений из JSON
  • 1 Пропуск рабочего до готового?
  • 0 CSS jQuery с функциями и свойствами
  • 1 Сортировка списка с помощью компаратора
  • 1 Как проверить, что одно из многих условий выполнено на Мокито? Можно ли проверить, был ли вызван один ИЛИ другой метод?
  • 0 Плагин jQuery Validation — добавление класса ошибок к дополнительным элементам
  • 0 Как создать URL api.ai моего агента в диалоговом окне (api.ai) и использовать этот URL API в PHP для хранения входных данных пользователя в базе данных MYSQL
  • 0 Инвертирование списка номеров и пропуск других [закрыт]
Читайте также:  Get field value html

Источник

PHP how to solve setcookie() function not working

The PHP setcookie() function is used to create cookie data in your web applications.

Any cookie value you set can then be accessed using the $_COOKIE global variable.

This tutorial provides solutions to try when the setcookie() function is not working:

Make sure you refresh the page after setcookie() call

The PHP superglobal variable $_COOKIE is populated when PHP runs the code.

This means that when you call the setcookie() function in a PHP script, the $_COOKIE variable is already assigned.

To access the cookie data, you need to make PHP runs another script by refreshing the page or executing another script.

To test your cookie data, run the script below:

     " The first time you load the page above, PHP should respond with “Cookie called ‘username’ is not set”.

Refresh the page, and you will see the following response:

This is because PHP populates the $_COOKIE variable before running the script.

If you need the cookie data to be accessible immediately, you can manually assign the cookie values to the $_COOKIE variable:

   Now you can access the cookie data immediately without sending another request to the server.

Make sure setcookie() is called before any output

The setcookie() function modifies the HTTP headers to include that cookie in your request.

This means that the function must be called before you produce any output in your script.

An output can be raw HTML or the echo / print construct in your PHP file.

Suppose you have a PHP script as shown below:

Then PHP will produce a warning in the output as follows:
The same warning appears when you have raw HTML output before calling setcookie() :
To solve this warning, you need to call the setcookie() function before any output:

You still need to send another request to access the cookie with $_COOKIE though.

If you really need to set the cookie after some output code, then you can use the output buffering function.

The output buffering function command PHP to store any output in the buffer until you manually release it.

The function to start output buffering is ob_start() and the function to release the buffer is ob_end_flush() .

Here’s how you buffer output in PHP:

   This solution works because PHP won’t send the HTTP headers until you release the buffer (PHP sends HTTP headers along with the output)

And now you’ve learned what to do when the setcookie() function is not working.

I hope this tutorial has been helpful to you. 👍

Take your skills to the next level ⚡️

I'm sending out an occasional email with the latest tutorials on programming, web development, and statistics. Drop your email in the box below and I'll send new stuff straight into your inbox!

About

Hello! This website is dedicated to help you learn tech and data science skills with its step-by-step, beginner-friendly tutorials.
Learn statistics, JavaScript and other programming languages using clear examples written for people.

Type the keyword below and hit enter

Tags

Click to see all tutorials tagged with:

Источник

setcookie не работает!

Добавлено через 5 минут
Дело в том, что куки видны только для данной страницы, на странице в пред. каталоге не рабоает, хотя хост тот же.

Не работает setcookie
Доброго времени суток.Дело в том,что при переносе кода на хостинг у меня возникла проблема с.

SetCookie и БД
Приветствую вас, братья программисты! :handshake: У меня появилась проблема в написании одного.

setcookie
Проблема в куках. На одной странице они создаются, на другой выводятся. Код первой страницы.

Ошибка setcookie
Здравствуйте. Такая проблема. Скрипт голосования не сохраняет куки. Скрипт: <?php include_once.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
error_reporting(E_ALL); include("connect.php"); $result=mysql_query("SELECT login,password FROM users"); while ($myrow=mysql_fetch_assoc($result)) { if ($_POST['login']==$myrow['login'] and $_POST['password']==$myrow['password']) { setcookie("log","AAA",time()+10); $_SESSION['userloggedin']=true; $_SESSION['login']=$myrow['login']; break; } } if ($_SESSION['userloggedin']!=true) { $_SESSION['mistace']="not_right_password"; if ($_POST['login']) {$_SESSION['sentlogin']=$_POST['login'];} header("Location: ".$_SERVER['HTTP_REFERER']); exit(); } else { $_SESSION['mistace']="user_logged_in"; if ($_SERVER['HTTP_REFERER']) { header("Location: ".$_SERVER['HTTP_REFERER']); } else { header("Location: ../index.php"); } exit(); }
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\curs\phpscripts\comein.php:8) in Z:\home\localhost\www\curs\phpscripts\comein.php on line 23

ЦитатаСообщение от Nazz Посмотреть сообщение

Добавлено через 2 минуты
Hagrael, а в браузере есть устанавливаемая кука?Или она удаляется при переходе на другую страницу? В таком случае, нужно посмотреть, как Вы используете эту куку на другой странице.

Источник

У меня этот код ничо не пишет, нормально ставит куку. Попробуй прямо отсюда скопировать код и вставить себе - мож, нормально будет )) Возможно, там какой-нибудь \r закрался или еще какая фигня.. . А если не сработает - давай код на почту

Прежде всего,
- Убедится что до вызова функции setcookie() не было ни одного echo/print

Протестировать куки - на предмет рабоспособности: 1) Установить через setcookie() 2) Проверить на следующем запросе, есть ли ключ в суперглобальном массиве $_COOKIE.
Если есть:

100% Что до вызова setcookie() сверху есть что-то вроде include/requre/ которые могут также отправлять HTTP заголовки, например что-то типа, header('Content-type: text/html; charset=UTF-8')

Если нет:
setcookie() не работает корректно. Решение - подавить уровень ошибки E_WARNING добавля супрессор к началу функции, вот так

Крайний вариант:
Проверить конфигурацию в PHP INI.
ww.php.net/function.setcookie.php - все описано

там пусто как в сахаре
куки работает проверял JS скриптом, масив есть print_r($_COOKIE); показывает все что поместил туда JS
100% Что до вызова setcookie() сверху есть ч. ничего там нет как я скинул код так и есть я вам даже скрин скину
@-непомогло

setcookie() не работает корректно. Решение - подавить уровень ошибки . ошибку не показывает но и в куки ничего не переещяется

Источник

Оцените статью