我已在管理员面板中的所有页面上设置了会话,如下所示:
session_start();
if(!isset($_SESSION['username']))
header("Location: login.php?e=please+login+first");
这似乎在我的所有网页上都能正常运行,但现在当我刷新页面或点击链接时,页面会自动重定向到login.php
。这种情况似乎很少发生。我不明白是什么导致了这个问题
例如,我的菜单栏就像:
home : doctors: hospitals: feedback
如果我在hospitals.php
,我会在几分钟后点击feedback.php
(或任何其他链接),我会被重定向到login.php
。下次如果我再次点击链接,我将不会被重定向
这是我的dologin.php代码
$qry = "select * from admin where username='$uname' and password='$pwd'";
//echo $qry;exit;
$rs = mysql_query($qry,$con);
if($rec= mysql_fetch_array($rs))
{
$_SESSION['username'] = $rec['username'];
header("Location: index.php");
}
else if (empty($uname))
{
header("Location: login.php?e=Please+enter+username");
}
else
{
header("Location: login.php?e=Invalid+username+or+password");
}
答案 0 :(得分:3)
编辑: 替换您的查询:
$qry = "select * from admin where username='$uname' and password='$pwd'";
有了这个:
$qry = "select * from admin where username='" . $uname . "' and password='" . $pwd . "'";
同样替换你的:
session_start();
使用:
if (!isset($_SESSION)) {
session_start();
}
建议:我还建议将在文件中重复使用的内容放在PHP包含文件中,例如header.php。
PS:尝试接受更多答案,这有助于激励人们回答您的问题。也让社区活着。
答案 1 :(得分:1)
您可以尝试在使用标头重定向之前调用session_write_close(),以确保会话已关闭。