Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查当前PHP会话设置或取消设置_Php_Session_Login - Fatal编程技术网

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

如何检查当前PHP会话设置或取消设置,php,session,login,Php,Session,Login,在我的php项目中,我想检查登录页面会话的状态。如果未设置,我希望用户登录。 我已将此代码添加到登录页面,但由于它循环,因此没有任何帮助 if (strlen(session_id()) < 1) { ?> <script>window.location.href="login.php";</script> <?php } elseif(strlen(session_id()) > 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会话,现在当用户从一个项目登录时,会话会被设置,如果在同一台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');
    }
?>
在回答上述评论时,您应该在用户登录时创建一个会话变量。编辑代码以反映它。

尝试以下操作:

<?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{

//
}

登录时将$\u SESSION['logged\u in']设置为1,注销时将其取消设置或将其设置为0

要检查的是特定会话值,而不是会话的存在

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

//
}else{

//
}
登录时将$\u会话['logged\u in']设置为1,注销时将其取消设置或设置为0

记住包括会话启动;在每个页面的顶部,通过$_SESSION['example']获取会话中设置的变量值,否则您将无法获取会话变量值, 或 另一种方法是使用session_start;在config.php文件中,并在需要会话的每个页面的代码顶部包含该文件,否则您将无法获取会话变量的值。。!! 记住包括会话启动;在每个页面的顶部,通过$_SESSION['example']获取会话中设置的变量值,否则您将无法获取会话变量值, 或 另一种方法是使用session_start;在config.php文件中,并在需要会话的每个页面的代码顶部包含该文件,否则您将无法获取会话变量的值。。!!
您要检查的是特定的会话值,而不是会话的存在。。如果$_SESSION['logged_in']==1…k.那么在初始登录时,我应该将logged_in=1,然后在登录页面上比较它,并在注销时清空它。??这就是它的主要操作方式-发布为下面的答案,以便您可以接受它或不接受它。您想检查特定的会话值,而不是会话的存在。。如果$_SESSION['logged_in']==1…那么在初次登录时,我应该设置logged_in=1,然后在登录页面上比较它,并在注销时清空它。??这就是它的主要工作方式-发布为下面的答案,这样,如果我使用php的标题'Location:/login.php',您可以接受它,也可以不接受它;它的nt重定向正确,如果我使用JavaScript window.location,它将再次循环。使用标头时是否会出错?你能发布你的完整代码吗?firefox向我展示了这一点,页面没有正确重定向。但是标题的东西对我的其他项目正常工作。下面是我的html登录页面。dude如果登录=1,工作正常,但不会重定向到else循环。还有我的注销页面作为此窗口。location.href=login.php;如果我使用php的标题'Location:/login.php',这会导致任何问题吗;它的nt重定向正确,如果我使用JavaScript window.location,它将再次循环。使用标头时是否会出错?你能发布你的完整代码吗?firefox向我展示了这一点,页面没有正确重定向。但是标题的东西对我的其他项目正常工作。下面是我的html登录页面。dude如果登录=1,工作正常,但不会重定向到else循环。还有我的注销页面作为此窗口。location.href=login.php;这会引起什么问题吗