1

次のように、管理パネルのすべてのページでセッションを設定しました。

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

2 に答える 2

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

推奨事項:ファイルからファイルへと再利用されるコンテンツを、header.php などの PHP インクルードに配置することもお勧めします。

PS:より多くの回答を受け入れてみてください。そうすることで、人々があなたの質問に回答する動機を得ることができます。また、コミュニティを存続させます。

于 2012-05-09T15:30:11.667 に答える
1

ヘッダーでリダイレクトする前に session_write_close() を呼び出して、セッションが閉じていることを確認できます。

于 2012-05-09T15:31:34.970 に答える