在网站上退出?

时间:2015-04-01 05:14:18

标签: php html

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

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>

所以我这样做了,如果您的会话处于活动状态,您将看到&#34;注销&#34;将您重定向到主页的链接。否则,您只需看到登录链接并转到登录页面即可。那么当你看到注销链接时它如何制作它也会破坏会话?感谢。

3 个答案:

答案 0 :(得分:0)

将Logout文本转换为调用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();

答案 1 :(得分:0)

创建一个新的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; ?>

答案 2 :(得分:0)

href属性应该包含在引号中。

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

然后针对您的问题,我建议您在注销时可以在重定向时在网址中注入一个变量,就像这样。

<?
    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.
    }
?>