Я устанавливаю файл 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, но, очевидно, я сделал что-то не так. Есть идеи, где и как?
@ D.Dimitrov Значит, вы говорите, что установка true делает его 1? Разве он не должен отображать true как слово, а не как числовое значение?
Этот $admin_preview = "false"; настроен на строковый литерал "false", а не на логическое значение false.
@DinoCoderSaurus Я заменил true / false на yes / no, но мне все еще показывают 1?
@ W.H. Я пробовал ваш код, получаю "верный" ответ. Может быть, что-то не так с вашей стороны. Можете выложить точно код?
@ D.Dimitrov код работает над 3 разными скриптами, поэтому я не могу опубликовать его полностью. Я устанавливаю cookie в своих административных файлах и читаю их на страницах веб-сайта. Не уверен, почему он вообще устанавливает числовой 1






В 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. Я не вижу, что это такое, но, конечно, должен быть только один набор?
Попробовать другой браузер? «Да» никогда не следует переводить в 1, поэтому я предполагаю, что некоторые старые файлы cookie все еще вызывают хаос.
Спасибо. Я снова удалил куки (на этот раз заметил кнопку save). Я повторно запустил скрипт, и теперь он работает правильно.
Замечательно, если бы вы могли принять ответ, было бы здорово :)
1 = верно; 0 = ложь