php中的页面重定向不一致

时间:2012-05-09 15:24:47

标签: php

我已在管理员面板中的所有页面上设置了会话,如下所示:

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");
 }

2 个答案:

答案 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(),以确保会话已关闭。