我在一个非常简单的网站上实现了登录/注销系统。我已经通过会话成功实现了登录,我在这里读到了
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;将您重定向到主页的链接。否则,您只需看到登录链接并转到登录页面即可。那么当你看到注销链接时它如何制作它也会破坏会话?感谢。
答案 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.
}
?>