0

少し恥ずかしいのですが、PHP ベースのログイン システムを作成する際に問題が発生しました。ログイン プロセスの外観を処理するためにサイト テンプレートを使用しているので、コードは割愛します。ログインの処理方法に関する私の思考プロセスは次のとおりです。

シンプルな login.php ファイルを作成します。アクションがそれ自体に設定されているフォームがあります。送信がクリックされたかどうかを確認し、クリックされた場合は検証して、ユーザーが有効なパスワード/ユーザー名を入力したことを確認します。その場合は、ログイン情報 (パスワードではなくユーザー名) を保存するセッション変数を設定し、それらを制限された領域にリダイレクトします。ログイン情報が有効でない場合は、エラー メッセージをセッション変数に保存し、エラー メッセージを表示してさらに指示を出し、ユーザーが再送信するのを待ちます。ここに私が持っているものの一部があります - うまくいけば、あなたの専門家の一人が私が間違っていた場所を見て、私にいくつかの洞察を与えることができます:

<?php
session_start();

if(isset($_POST['submit'])) {
    if(!empty($_POST['username']) AND !empty(!$_POST['password']))
    {
        header("Location: http://www.google.com");
    } else {
        $err = 'All the fields must be filled in!';
    }
}

if($err) {
    $_SESSION['msg']['login-err'] = $err;
}
?>

上記は単なる例です。上記のコードの目的は、ユーザー入力を処理することです。スクリプトは、ユーザーがユーザー名とパスワードを入力したことを単純に検証します。持っている場合は、この場合は google.com にリダイレクトされるようにします (この例のために)。そうでない場合は、エラー メッセージを保存します。私の現在のコードを考えると、エラーメッセージは完全に表示されますが、ユーザーが送信してユーザー名とパスワードに何かを入力した場合、ページはリダイレクトされません。これはばかげた質問だと思いますが、私は初心者であり、正直なところ、今は少し混乱しています。本当にありがとう!

4

2 に答える 2

2

さて、あなたのコードの残りを見ずに言うのは難しいです。ただし、ヘッダーの場合、ヘッダーは応答ストリームに書き込まれる前に(つまり、echoステートメントまたはタグ内に含まれていないコードの前に)送信される必要が<?php ... ?>あるため、リダイレクトされない可能性があります。あなたが提供したコードは私には良さそうです。

于 2010-04-15T03:15:53.330 に答える
0
if(!empty($_POST['username']) AND !empty(!$_POST['password']))
                                         ^--- negating a string = pointless

そのロジックは非常に読みにくいので、次のようにやり直す必要があります。

if(empty($_POST['username']) OR empty($_POST['password'])) {
   die("Fill in both fields");
}
于 2012-12-13T17:26:09.993 に答える