我在制作php的注销代码时遇到了困难。 当我点击退出按钮时,它将返回主页,但是当我点击浏览器中的后退按钮时。我仍然可以访问上一页,其中用户必须登录才能访问它。 所以当用户点击浏览器上的后退按钮时,我正在考虑重定向到登录页面。
这是我的代码,在主页中(尚未登录用户。此页面由用户页面上的注销链接调用。
<?
session_start();
session_destroy();
?>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="checklogin.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="text" id="mypassword"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
答案 0 :(得分:2)
<?php header('Location:'. $myurl);exit;?>
假设没有任何内容发送到浏览器,应该做重定向的技巧。
但您的问题更多的是检查用户是否拥有此页面的正确凭据。在session_start()之后,您应该检查会话中是否存在用户。 例如,当用户记录时,在会话中添加一些内容以识别您的用户:
<?php $_SESSION['user_id'] = $userid; ?>
当您想要访问需要用户登录的任何页面时:
<?php if (empty($_SESSION['user_id)) { header('Location: /');exit;} ?>
因此,如果会话中没有user_id,则不会记录您的用户,因此会将他重定向到主页。
创建会话后也不应销毁会话。只有在用户注销时才能销毁会话。但会话开始应该一直进行(这样更简单)
答案 1 :(得分:0)
在您的退出页面中,只需取消设置$ _SESSION ['user_id'],然后才能将其重定向到主页。
unset($_SESSIOM['user_id']);
然后在要求用户首先登录的所有其他页面中,只检查会话的user_id是否设置,如果未设置,只是将它们重定向回主页,就像stunti在上面的评论中所说的那样
答案 2 :(得分:0)
脚本开始前的空格将破坏stunti提出的“位置”方法。
<?
^^^
小心并将其移除。