PHP Cookie Проверка не работает внутри начальной загрузки Navbar - PullRequest
0 голосов
/ 08 февраля 2019

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

Я попытался скопировать следующий код проверки 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, но вместо этого всегда было COOKIE FALSE внутри Navbar этого Bootstrap.

Так как вам нужно знать, где я установил этот файл cookie, вот код на моей login.php странице.Включенный database.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();
}
?>

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

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

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

, я должен заменить его на

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

или

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

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

Спасибо!

0 голосов
/ 08 февраля 2019

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

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

Например:

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

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

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