Проверка файлов cookie PHP не работает внутри Bootstrap Navbar

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

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

<?php 
if (isset($_COOKIE["login"]))        
{
echo "COOKIE TRUE"; 
}
else
{
echo "COOKIE FALSE";    
}      
?>

Итак, насколько я понимаю, что-то мешает проверке файлов cookie внутри этой панели навигации. Также я проверил этот файл cookie с помощью опции проверки браузера Chrome, и он отлично там. Это свежее печенье, срок годности которого не скоро истечет. Вот полный код navbar.php.

<nav class = "navbar sticky-top navbar-expand-lg navbar-dark bg-dark">
<a class = "navbar-brand" href = "http://example.com">
<img src = "http://example.com/static/logo.png" width = "75" height = "75" class = "d-inline-block align-top" alt = "">
</a>
<?php 
if (isset($_COOKIE["login"]))        
{
echo "COOKIE TRUE"; 
}
else
{
echo "COOKIE FALSE";    
}      
?>
</nav>

Я ожидал, что на странице будет отображаться COOKIE TRUE, но вместо этого внутри панели навигации Bootstrap всегда было COOKIE FALSE.

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

ОБНОВИТЬ: Спасибо @TheMouseMaster за указание на ошибки в коде входа. Я использую базу данных SQLite3 для этого входа в систему php, и я внес некоторые изменения.

<?php
include 'C:\inetpub\wwwroot\database.php';

if (isset($_POST['btnlogin']))
{
if ($db)
{
$login = $db->query('select email, password from users');
while ($row = $login->fetchArray())
{
$email=$row['email'];
$password=$row['password'];
if ($email==$_POST["txtemail"]&&$password==$_POST["txtpassword"])
{
setcookie("login", "true", time() + (86400 * 30), "/");
header("location: http://example.com");
}
else
{
header("location: http://example.com/register");
}
}
}
$db->close();
}
?>

Нам нужно увидеть, где вы установили файл cookie

Andreas 08.02.2019 18:23

@Andreas Андреас Я добавил информацию о том, где я установил этот файл cookie.

haZh 09.02.2019 02:26

Если я правильно читаю ваш пример кода php, вы читаете всю таблицу базы данных «users» и ПЕРЕЗАПИСЫВАЕТЕ переменные $email и $password в каждой строке БД. ТОГДА И ТОЛЬКО ТОГДА вы проверяете, соответствует ли то, что находится в $email и $password, вашей попытке входа в систему. Это означает, что ваш файл cookie будет установлен правильно только в том случае, если имя пользователя и пароль, которые вы пытаетесь сопоставить, являются самыми последними в вашей таблице пользователей.

TheMouseMaster 09.02.2019 02:54

@TheMouseMaster Спасибо, что указали на это. Я внес некоторые изменения.

haZh 10.02.2019 04:59
Стоит ли изучать 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 и хотите разрабатывать...
2
4
137
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Где и как вы устанавливаете куки? Вы устанавливаете 4-й параметр?

http://php.net/manual/en/function.setcookie.php

Например:

setcookie("cookiename", "cookievalue", $time); Только для текущего пути URL

Лучший вариант: setcookie("cookiename","cookievalue", $time,"/"); Для всех страниц/папок в этом домене

Я добавил информацию о том, где я установил этот файл cookie.

haZh 09.02.2019 02:28
Ответ принят как подходящий

Проблема была в том, как я включил navbar.php на каждой странице. Вместо того, чтобы загружать его с URL-адреса, например;

<?php include 'http://example.com/navbar.php';?>

Я заменил его на;

<?php include 'navbar.php';?>

или

<?php include '../navbar.php';?>

для страниц в подкаталогах, чтобы правильно подобрать его. Теперь это работает!

Спасибо!

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