Неверное значение cookie при чтении в PHP

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

Итак, мои полные фрагменты кода:

<?php
setcookie("preview", "true", time() - 3600); // Kills Existing
setcookie("preview", "true", time() + 3600); // Sets New
?>

-

<?php
if (isset($_COOKIE["preview"])){
$admin_preview = ($_COOKIE["preview"]);
}
else{
$admin_preview = "false";
}
?>

-

<?php
echo $admin_preview;
?>

Поэтому, когда я повторяю $admin_preview, я ожидаю, что значение будет true, но вместо этого я получаю 1.

Я использую Firefox 62.0, поэтому я не могу просмотреть фактическое значение файла cookie, но, очевидно, я сделал что-то не так. Есть идеи, где и как?

1 = верно; 0 = ложь

AnTrakS 21.09.2018 14:10

@ D.Dimitrov Значит, вы говорите, что установка true делает его 1? Разве он не должен отображать true как слово, а не как числовое значение?

W.H. 21.09.2018 14:11

Этот $admin_preview = "false"; настроен на строковый литерал "false", а не на логическое значение false.

DinoCoderSaurus 21.09.2018 14:14

@DinoCoderSaurus Я заменил true / false на yes / no, но мне все еще показывают 1?

W.H. 21.09.2018 14:16

@ W.H. Я пробовал ваш код, получаю "верный" ответ. Может быть, что-то не так с вашей стороны. Можете выложить точно код?

AnTrakS 21.09.2018 14:17

@ D.Dimitrov код работает над 3 разными скриптами, поэтому я не могу опубликовать его полностью. Я устанавливаю cookie в своих административных файлах и читаю их на страницах веб-сайта. Не уверен, почему он вообще устанавливает числовой 1

W.H. 21.09.2018 14:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
253
2

Ответы 2

В PHP 1 означает истину, вы можете проверить это как if ($ admin_preview) // который примет это как истину,

также вы можете использовать фильтр var.

var_Dump(filter_var("TRUE", FILTER_VALIDATE_BOOLEAN));
//or
var_Dump(filter_var(1, FILTER_VALIDATE_BOOLEAN));

для получения дополнительной информации о логических значениях в php вы можете проверить http://php.net/manual/tr/language.types.boolean.php

Также ты не делаешь это неправильно, чувак.

Вместо этого сделайте это:

$admin_preview = var_export($_COOKIE["preview"], true);

Это будет означать, что значение cookie «предварительного просмотра» должно использоваться как строка, а не как логическое значение. В логических словах php (true / false) переводятся в 1 и 0 в этом порядке, вы должны явно указать, что значение должно использоваться как строка, если вы этого хотите.

Спасибо. Это все хорошо, но я изменил его на Yes/No, и я все еще вижу тот же 1 в качестве значения. Я попытался удалить файлы cookie из браузера, но когда я снова запускаю скрипт, я вижу, что установлено 4 файла cookie. Я не вижу, что это такое, но, конечно, должен быть только один набор?

W.H. 21.09.2018 14:24

Попробовать другой браузер? «Да» никогда не следует переводить в 1, поэтому я предполагаю, что некоторые старые файлы cookie все еще вызывают хаос.

Ilias 21.09.2018 14:27

Спасибо. Я снова удалил куки (на этот раз заметил кнопку save). Я повторно запустил скрипт, и теперь он работает правильно.

W.H. 21.09.2018 14:29

Замечательно, если бы вы могли принять ответ, было бы здорово :)

Ilias 21.09.2018 14:32

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