1

伙计们在我的 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 会话,现在当用户从一个项目登录时,会话被设置,如果用户打开其他项目,则在同一台电脑上它们彼此没有链接,他甚至不这样做就直接登录,如果他从一个项目注销,他会从该电脑上运行的所有其他项目注销。

4

3 回答 3

6

尝试这个:

<?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');
    }
?>

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

于 2012-07-17T19:50:14.017 回答
2

你想检查一个特定的会话值,而不是一个会话的存在..

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

//
}else{

//
}

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

于 2012-07-17T19:54:41.763 回答
0
  1. 记得包含 session_start(); 在每一页的顶部通过$_SESSION['example']获取SESSION中变量SET的值,否则你将无法获取会话变量值,或者

  1. 另一种方法是使用 session_start(); 在 config.php 文件中,并将该文件包含在需要会话的每个页面的代码顶部,否则 U 将无法获得 SESSION 变量的值..!!
于 2013-11-28T10:42:40.387 回答