使用PHP$\u会话进行身份验证
我有一个代码,可以登录到数据库系统并执行一些简单的任务,如查看用户详细信息、编辑用户详细信息之类的任务。登录后,用户应该能够注销。我的问题出现在这里。我需要重定向到一个显示一些文本的页面(logoff.php页面),然后重定向到索引页面。但一旦我点击了注销链接,它就会直接进入索引页面,即登录页面 用户从页面重定向到注销页面,我的logoff.php代码如下使用PHP$\u会话进行身份验证,php,html,session,Php,Html,Session,我有一个代码,可以登录到数据库系统并执行一些简单的任务,如查看用户详细信息、编辑用户详细信息之类的任务。登录后,用户应该能够注销。我的问题出现在这里。我需要重定向到一个显示一些文本的页面(logoff.php页面),然后重定向到索引页面。但一旦我点击了注销链接,它就会直接进入索引页面,即登录页面 用户从页面重定向到注销页面,我的logoff.php代码如下 <?php session_start(); if (isset($_SESSION["uname"])) { unset($
<?php
session_start();
if (isset($_SESSION["uname"])) {
unset($_SESSION["uname"]);
}
header("Location:../index.php");
exit;
?>
<html>
<head>
<title>Logged Off</title>
</head>
<body>
<br><br>
<div align="">
<h2>You are now logged off</h2>
<a href="../index.php">home</a></div>
</body>
</html>
在这种情况下,我是否需要将index.php页面包括在logoff.php页面中,因为会话变量是在index.php页面中创建的?这是原因还是其他原因?
谢谢 你可以这样做
<?php
session_start();
if (isset($_SESSION["uname"])) {
unset($_SESSION["uname"]);
}
?>
<html>
<head>
<title>Logged Off</title>
</head>
<body>
<br><br>
<div align="">
<h2>You are now logged off</h2>
<a href="../index.php">home</a></div>
</body>
</html>
注销
您现在已注销
答案就在那一行,是一个功能,而不是一个bug:
header("Location:../index.php");
这会在重定向服务器端执行,这样您的用户就永远看不到页面正文,因为他只收到这个标题,告诉浏览器转到那个URL
与其这样做,不如使用带有setTimeout()
的javascript重定向函数,或者使用元刷新,我想在本例中确实指出了这一点:
<meta http-equiv="refresh" content="10;URL=yourindexpage.php" />
注意上面这一行中的
10
,它表示重定向发生前的延迟(秒)。希望有一个出口,也有一个重定向?是这样吗?只要脚本点击标题(“Location:../index.php”)代码>,浏览器将直接转到定向页面。一旦脚本点击退出代码>,它将退出。如果你想显示你的“注销”页面,然后重定向,考虑使用元刷新或一些JavaScript做重定向。@ LIFHHACKER,一旦我点击一个不在这里的页面上的注销链接,它应该出现在这里给出的注销页面。一旦脚本看到重定向,它就会发生,而该脚本的其余部分不会执行。@BrettSantore不正确,浏览器没有义务执行头重定向。您必须添加一个exit()代码>以保证代码不会超过某一点执行。确实如此。这个header()
函数只将信息发送回浏览器,就像PHP透视图中的任何其他指令一样,它根本不会停止脚本执行,至少就我所知是这样。最好的证明是,如果你在那之后尝试执行回显
,你会得到一个错误,这意味着线路确实被击中。会话的用户身份验证没有问题吗?@buddhiweerasinghe>如果你想让数据保持活动状态,我认为没有比会话更好的解决方案了…我在用户身份验证方面没有任何错误吗?
<meta http-equiv="refresh" content="10;URL=yourindexpage.php" />