0

まず英語が母国語じゃなくて遅くて昼から検索してます。ですから、甘やかしてください。

単純なログインフォームに問題があります。まあ、このログインフォームはとてもシンプルなので、私は何の問題もないと思っていました...

私がしたこと: それで、ログインフォームを含むページ index.php を作成しました。送信されると、スクリプトはフィールドが入力されているかどうかを確認し、DB に接続し、DB のデータをチェックします。パスワードとログインが正しい場合は、$_SESSION を開始して $_SESSION['login] を入力します。次に、session_start と $_SESSION['login'] へのチェックによって、バックオフィス コンテンツを含むページにユーザーをリダイレクトします。理論的には、うまくいくでしょう。

しかし、いいえ。

問題: ログイン フォームに情報を入力して送信すると、同じページがリロードされ、バックオフィス ページにリダイレクトされません。ゼロエラー起動

私のコード: index.php

<?php 
    include('functions.php');
    login();
 ?>
 <!DOCTYPE html>
 <head>
 ...
 </head>
 <body>

<div id="main">
 <h2>Authentification</h2>
 <form name="iam" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
   <label for="login" class="iconic comment"> Login <span class="required">* </span>
   </label>
   <input type="text" required="required" name="login" id="login">
   <label for="mdp" class="iconic comment"> Password <span class="required">* </span>
   </label>
   <input type="password" required="required" name="mdp" id="mdp">
   <input type="submit" name="Submit" value="Submit">
 </form>
</div>
</body> </html>

login() をfunctions.phpに:

<?php
include_once('conf/connec.php');
$connect_db=connect();

function login() {

        if(isset($_POST['Submit'])) {

            if(!empty($_POST['login']) && !empty($_POST['mdp'])) {

                $query = mysql_query("SELECT mdp, login FROM 2K13_id WHERE login = '".md5($_POST['login'])."'");

                if(mysql_num_rows($query) == 1) {
                    $user = mysql_fetch_object($query);

                    // On vérifie la concordance des mots de passe (en md5)
                    if(md5($_POST['mdp']) == $user->mdp) {     
                        session_start();
                        $_SESSION['login'] = $user->login;
                        header("Location:backoffice.php");

                    } else {
                        echo 'Mauvais mot de passe pour cet utilisateur.';
                    }

                } else {
                    echo 'Ce login n\'existe pas dans notre base.';
                }
            } else {
                echo 'Vous devez remplir tous les champs !';
            }
        }
    }

?>

そして、 backoffice.phpのすべての html 宣言の前にある一連のコード:

<?php
session_start();
    if(!isset($_SESSION['login'])) {
        die("NO PASARAN");
    }

なぜ振り向くのか本当にわかりません。すべてのパスワードとログイン、すべてのヘッダーをチェックしました。(ヘッダーで起こりうる問題を回避するために、ダーティなjsインクルージョンを試してみました

echo '<script>document.location = "backoffice.php"</script>';

私は少し絶望しているので、あなたが私を助けてくれるか、間違い/phpエラーの可能性に光を当てることができれば、私はとても感謝しています.

ありがとう!

4

1 に答える 1

1

入力タグを閉じてみてください。それ以外の

<input type="text" required="required" name="login" id="login">
<label for="mdp" class="iconic comment"> Password <span class="required">* </span>
</label>
<input type="password" required="required" name="mdp" id="mdp">
<input type="submit" name="Submit" value="Submit">

書く

<input type="text" required="required" name="login" id="login" />
<label for="mdp" class="iconic comment"> Password <span class="required">* </span>
</label>
<input type="password" required="required" name="mdp" id="mdp" />
<input type="submit" name="Submit" value="Submit" />

ifまた、ヘッダー リダイレクトで入力しているかどうかを確認します。空のスペースを含め、その前に html 出力があってはなりません。URL は通常、相対ではなく絶対である必要があるため、追加します。http://...

于 2013-02-27T22:30:48.927 に答える