会话没有';不工作?|PHP和jQuery


Session doesn't work? | PHP and jQuery

目前我正在为登录系统编写代码。登录系统将具有记住我的功能(它将在接下来的30天里记住你)。若用户为"记住我"功能选择"是",服务器将创建cookie并启动会话。若用户并没有为记住功能选择"是",服务器将只启动会话用户。现在,当登录的用户试图打开登录页面(prijava.php文件)时,我就分开了。我把这个代码放入jQuery文件

$.ajax({
    type: "POST",
    url: "_hsync_scripts/_hsync_prijavljen.php",
    success: function(response)
    {
        if(Number(response) == 1) window.location.href = "index.php";           
    }       
}); 

它将在每次页面加载时运行。文件_hsync_prijavljen.php包含下一个代码

<?php
if(isset($_COOKIE['_hsync_prijavljen'])) echo '1';
else if(isset($_SESSION['_hsync_prijavljen'])) echo '1'; // MAYBE PROBLEM IS HERE?
else echo '0';
?>

和登录代码

session_start();
if($_hsync_zapamti == 1) setcookie("_hsync_prijavljen", $_hsync_id, time() + 2592000, "/");
$_SESSION['_hsync_prijavljen'] = $_hsync_id; // MAYBE PROBLEM IS HERE?
echo '0';

如果登录的用户试图打开登录页面,他将被重定向到index.php,这部分工作。不起作用的部分是下一步——如果我在没有记住我功能的情况下登录,然后我在URL栏中键入登录页面的链接,服务器不会将我重定向到index.php。为什么?这是我第一次使用PHP会话,也许我不明白PHP会话的意义?我并没有关闭标签,所以seesion还必须是活动的吗?还是不?谢谢

您的代码看起来不错,但_hsync_prijavljen.php也需要session_start();,即:

<?php
session_start();
if(isset($_COOKIE['_hsync_prijavljen'])) echo '1';
else if(isset($_SESSION['_hsync_prijavljen'])) echo '1'; // MAYBE PROBLEM IS HERE?
else echo '0';
?>

请确保您了解$_SESSION(存储在Web服务器上的信息)和$_COOKIE(存储在用户设备上)之间的区别。