0

a の単純なフォームが$_Sessionありますが、パスワードが間違っている場合にエラー メッセージが表示されません。エラーメッセージ以外は正常に動作し、実際に入力するまでエラーメッセージは機能header("Location: /cms/");しました。何か間違っていますか?

<?php 
session_start();
$error_msg = "";

if($_POST['username']) {

$username = $_POST['username'];
$password = $_POST['password'];

$admin = "a";
$adminpass = "s";

if(($username != $admin) || ($password != $adminpass)) {
$error_msg = 'Your login information is wrong dude!';
} 
else {
    $_SESSION['admin'] = '$username';
        header("Location: /cms/");
    exit();
}

}
if(!isset($_SESSION['admin'])) {
    header("Location: /cms/login");     
exit();
}
?>

<html>
<body>

<form action="/cms/loggedin.php" method="post" target=_self> 
<label>Username: <input type="text" name="username" id="username"></label>
<font color="#FF0000"><?php echo $error_msg; ?></font><br />

<br />
<label>Password: <input type="text" name="password" id="password"></label>
<br />
<br />
<label><input type="submit" name="Submit" value="Sign In"></label>
</form>

4

2 に答える 2

3

header("Location: /cms/");- メッセージが印刷される前に別のページにリダイレクトされるため、メッセージは表示されません。

編集 - 実際header("Location: /cms/login");、エラーの場合と同様にリダイレクトを行うのは、セッション変数が見つかりません。

于 2012-06-30T19:30:28.617 に答える
1

ここで変更する必要があります..

ユーザー名とパスワードを確認する時点で:

if(($username != $admin) || ($password != $adminpass)) {
  $_SESSION['error'] = 'Your login information is wrong dude!';
}

HTML 部分:

<?php 
    if (isset($_SESSION['error']))
    {
        echo '<p class="warning">',$_SESSION['error'],'</p>'; 
        unset( $_SESSION['error'] );
    }
?>

また、適切なセマンティック HTML の書き方を学んでください。この<font>タグは既に 10 年ほど前から非推奨になっています。コードが欠落<!DOCTYPEしており、<br>タグはレイアウトをフォーマットするためのものではありません。

ああ、あなたはこの記事が面白いと思うかもしれません。

于 2012-06-30T19:35:47.543 に答える