0

verifyUser が true を返すたびに、if ステートメントを実行する必要がありますが、何らかの理由でヘッダーの場所に移動する代わりに、ページが更新され、それがすべてです。入力情報が正しいことを確認しましたが、情報が正しくない場合、else ステートメントは完全に正常に実行されます。なぜこれが起こっているのかについて何か考えがある人は、私に知らせてください。ありがとうございました。

header() ステートメントが作成されるセグメントは次のとおりです。

function validateUser($name, $pass)
{
    $check = verifyUser($name, md5($pass));

    if($check)
    {
        $_SESSION['status'] = 'authorized';


        header('location: index.php');


    } else{

        echo'Please enter a correct username and password <br />';
        echo "<a href='http://localhost/cms/admin/login.php'>Try Again?</a>";
        exit;
    }



 }

これは、誰かが必要とする場合に備えて、verifyUser 関数です。

   function verifyUser($name, $pass)
   {
// Escape strings
$username = mysql_real_escape_string($name);
 $password = mysql_real_escape_string($pass);

$result = mysql_query("select * from users where username='$username' and password='$password' limit 1");

if (mysql_num_rows($result)>0)
{
    return true;
} else{
    return false;
}

  }
4

5 に答える 5

0

この行をプロジェクトの最初の行 (実際には出力を送信する前) に置くことができます。そうheaderしないと、出力を送信した後に関数が機能しなくなります (例: html コードや echo print など)。

ob_start();

または、新しいヘッダーを送信する前に、ヘッダーが既に送信されていることを確認してください。

if(!headers_send()){
   header("header params...");
} else {
   echo "<script>window.location.href="index.php"</script>";
}
于 2012-08-13T06:53:52.757 に答える
0

$_SESSION['status'] = 'authorized';が定義されていることを確認してください

于 2012-08-13T06:54:43.227 に答える
0

header()うまくいかない最も一般的な理由は、何か他のものが最初に出力されたためです。header()他の何かがブラウザに出力を送信する前にのみ呼び出すことができます。

この場合、PHP はheader()が呼び出されたときにエラーをスローします。ページにエラーが表示されない場合は、エラー ログをチェックして、エラーが発生しているかどうかを確認できます。

または、呼び出しの直後 (またはできるだけ早く) をdie()呼び出す必要があります。これにより、リダイレクト ヘッダーの後に何かが発生するのを防ぐことができます。最初の呼び出しが成功した場合でも、プログラムの後半の何かによってリダイレクトが失敗する可能性はほとんどありません。exit()header()header()

于 2012-08-13T06:55:19.957 に答える
0

「場所」の代わりに「url」を使用してみてください。

header("refresh:1;url=index.php");
于 2012-08-13T06:45:09.263 に答える
-5

mysql クエリでは、次のように変数名に引用符を使用します。

mysql_query("select * from users where username="'".$username."'" and password="'".$password."'" limit 1");

于 2012-08-13T06:42:44.367 に答える