【问题标题】:How Check current PHP session set or unset如何检查当前 PHP 会话设置或取消设置
【发布时间】:2023-03-08 02:56:01
【问题描述】:

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

【问题讨论】:

  • 您想要检查特定会话值,而不是会话的存在.. if $_SESSION['logged_in']==1 ....
  • k.so 在初始登录时我应该设置logged_in =1,然后在登录页面上比较它并在注销时清空它。??
  • 这就是它的主要完成方式 - 在下面发布为答案,以便您可以接受(或不接受)

标签: php session login


【解决方案1】:

试试这个:

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

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

【讨论】:

  • 伙计们,如果我使用 php 的 header('Location: /login.php'); 它的 nt 重定向正确,如果我使用 JavaScript window.location 它再次循环。
  • 使用header时是否报错?你能发布你的完整代码吗?
  • firefox 向我展示了这个页面没有正确重定向..但是标题对于我的其他项目正常工作。
  • &lt;?php session_start(); if($_SESSION['logged_in']==1) { //session is set header('Location: index.php'); } else{ //session is not set header("Location: login.php"); } ?&gt; 下面这是我的 html 登录页面。
  • 如果logged_in = 1,它的工作正常,但它没有重定向到else循环。也是我的注销页面,因为这个&lt;?php session_start(); session_destroy(); ?&gt; &lt;script&gt; window.location.href="login.php"; &lt;/script&gt;会导致任何问题
【解决方案2】:

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

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

//
}else{

//
}

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

【讨论】:

    【解决方案3】:
    1. 记得包含 session_start();在每一页的顶部通过$_SESSION['example']获取SESSION中变量SET的值,否则你将无法获取会话变量值, 或

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

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 2016-10-01
      • 2013-02-17
      • 2015-10-08
      • 2016-08-03
      • 2014-02-20
      • 1970-01-01
      • 2020-11-26
      相关资源
      最近更新 更多