【问题标题】:Logout on website?在网站上注销?
【发布时间】:2023-04-08 23:24:01
【问题描述】:

我正在我创建的一个非常简单的网站上实现登录/注销系统。我已经成功实现了通过会话登录,我在这里阅读过

How to connect user with a login cookie in PHP?

第一个答案很好地描述了会话,我想我掌握了它。我唯一的问题是退出。我将语句 session_destroy(); 放在哪里?显然我想把它放在注销链接中,同时销毁会话并将它们发送回主页。让我分享我的登录和注销链接的代码(在所有页面上都相同)。

<a href= <?php  
if(isset($_SESSION['user_id'])) 
    echo"index.php";
else 
    echo"login.php"; ?>>
<?php 
if(isset($_SESSION['user_id']))
    echo"Logout"; 
else
    echo"Login";
?>
</a>

因此,如果您的会话处于活动状态,您会看到一个“注销”链接,该链接会将您重定向到主页。否则,您只会看到登录链接并被定向到登录页面。那么,当您看到注销链接时,它也会破坏会话,我该怎么做呢?谢谢。

【问题讨论】:

  • 你想要 logout.php 而不是 index.php 吗?
  • 不要忘记在 href 属性周围加上引号。它需要一个字符串,所以用引号括起来。

标签: php html


【解决方案1】:

href 属性应该用引号括起来。

    href="<?php echo $this_var; ?>"

那么对于您的问题,我建议您可以在注销时在重定向时在您的 url 中注入一个变量,就像这样。

<?
    echo 'login.php?value=logout';
?>

并在您的 login.php

<?php
    if(isset($_GET['logout']))
    {   
       unset($_SESSION['user_id']);
       //use this if you only want the user_id session to be unset.
    }
?>

【讨论】:

    【解决方案2】:

    您将注销文本变成一个超链接,该超链接调用一个 php 脚本,该脚本从会话中取消设置 user_id 属性或使用session_destroy() 销毁它。

    <a href= <?php  
    if(isset($_SESSION['user_id'])) 
        echo"index.php?logout=true";
    else 
        echo"login.php"; ?>>
    <?php 
    if(isset($_SESSION['user_id']))
        echo"Logout"; 
    else
        echo"Login";
    ?>
    </a>
    

    在 index.php 中,在脚本顶部添加以下内容:

    if (isset$_GET['logout']))
        session_destroy();
    

    【讨论】:

    • 我有点明白,但我不确定语法是什么。
    【解决方案3】:

    创建一个新的logout.php 文件并将此内容放入其中。

    <?php  
    if(isset($_SESSION['user_id'])) {
        unset($_SESSION['user_id']);
        // and delete all the sessions you have created. 
        // or use session_destroy(); 
    }
    ?>
    

    我宁愿使用自定义对象来存储我所有的会话信息,而不是直接将其存储在随机的$_SESSION 关联数组值中

    无论如何,您在问题中显示的页面代码应修改如下

    <?php if(isset($_SESSION['user_id'])):?>
        <a href="logout.php">Logout</a>; 
    <?php endif; ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 2014-07-03
      相关资源
      最近更新 更多