我有一个代码来登录数据库系统并执行一些简单的任务,例如查看用户详细信息,编辑用户详细信息类的任务。登录后,用户应该能够注销。我的问题出现在这里。我需要重定向到显示一些文本的页面(logoff.php页面),然后重定向到索引页面。但是一旦我点击退出链接,它就会直接转到索引页面,即登录页面。
用户被重定向到页面的注销页面,我的logoff.php代码就是这个
<?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>
如果用户被重定向到此处,它应该显示文本。但我确信它来到这个页面,因为当我删除代码的php部分时,它显示了html标签内的文本。我认为问题出在$_SESSION
代码段。它不验证用户吗?这是我被重定向到索引页面而不列出注销页面内容的原因吗?
我用于记录的索引页面就是这个。
<?php
session_start();
$mess="";
if(isset($_POST["submit"])&&$_POST["submit"]=="Sign in") {
//conncet to the database
require_once("./dbcon/user.php");
include("./dbcon/dbcon.php"); //database connection function
$user=$_POST["uname"];
$password=md5($_POST["password"]);
//retriving data from db
$query = "SELECT user_name FROM user_info WHERE user_name = '$user' AND password ='$password'";
$result=mysql_query($query);
while($row=mysql_fetch_array($result)) {
$name=$row["0"];
}
if(mysql_affected_rows()==0) {
$mess = "<font color=purple size=2><b>Wrong username or password.<br>Please try again.</b></font>";
} else {
$_SESSION["uname"]=$name;
header("Location:./user/user1.php");
exit;
}
}
?>
<html>
<!-- html form -->
</html>
在这种情况下,我是否需要将index.php页面包含在logoff.php页面中,因为在index.php页面中创建了SESSION变量?这是原因还是其他? 谢谢!
答案 0 :(得分:1)
答案就在那一行,并且是一个功能,而不是一个错误:
header("Location:../index.php");
这是重定向服务器端,因此您的用户永远不会看到页面正文,因为他只收到此标题,告诉浏览器转到该URL。
而不是这样做,你应该使用带有setTimeout()
的javascript重定向功能,或者使用在这种情况下我真正指出的元刷新:
<meta http-equiv="refresh" content="10;URL=yourindexpage.php" />
请注意上面行中的10
,它表示重定向发生前的延迟(以秒为单位)。
答案 1 :(得分:0)
你可以这样做
<?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>