繁体   English   中英

如何检查当前的PHP会话设置或取消设置

[英]How Check current PHP session set or unset

伙计们在我的php项目中,我想检查登录页面会话的状态。如果未设置,我希望用户登录。 我已经将此代码添加到登录页面,但由于循环而无济于事。

if (strlen(session_id()) < 1) {
    ?>
    <script>window.location.href="login.php";</script>  
    <?php     
}
elseif(strlen(session_id()) > 1){ 
    ?>   
    <script>window.location.href="index.php";</script>   
    <?php 
}

现在我想要的另一件事是,如果会话已经开始,并且如果用户手动尝试从地址栏进入登录页面,则应将其重定向回该当前页面。

如果他未登录,则如果他尝试直接打开任何页面,则应将其重定向回登录页面。

还有一个新的疑问是
伙计们们正在使用wamp服务器来运行我的PHP项目。我已经在项目中使用了PHP会话,现在当用户从一个项目登录时,会话将被设置;如果在同一台PC上,如果用户打开了彼此不链接的其他项目,如果他从一个项目中注销,则他甚至直接从该计算机上运行的所有其他项目中注销。

尝试这个:

<?php
    session_start();
    if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == 1) {
        //session is set
        header('Location: /index.php');
    } else if(!isset($_SESSION['logged_in']) || (isset($_SESION['logged_in']) && $_SESSION['logged_in'] == 0)){
        //session is not set
        header('Location: /login.php');
    }
?>

作为对以上评论的答复,是的,您应该在用户登录时创建一个会话变量。编辑代码以反映该变量。

您想检查特定的会话值,而不是会话的存在。

if ($_SESSION['logged_in']==1){

//
}else{

//
}

在登录时将$ _SESSION ['logged_in']设置为1,在注销时将其取消设置(或将其设置为0)

  1. 记住要包括session_start(); 在每个页面的顶部通过$ _SESSION ['example']获取SESSION中的变量SET的值,否则您将无法进行会话变量值,或者

  1. 另一种方法是使用session_start(); 在config.php文件中,并将该文件包含在需要会话的每个页面的代码顶部,否则U将无法获取SESSION变量的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM