1

ユーザーにログインの詳細を尋ねるログインページがあり、それをCookieに送信してから詳細を検証しますが、何らかの理由でログインできません。コンピューターにインストールされた深淵のWebサーバーでローカルにテストすると、正常に動作しますが、ホスティングサーバーでテストしても機能しませんここに私のコードがあります:

ログインページが選択されるとすぐにこのように機能し、その後何が起こるかを尋ねます。ユーザーがアクティブ化されていない場合は、ユーザーをアクティブ化するように求められます。ユーザーがアクティブ化されている場合、ログインは機能しますが、ユーザーがアクティブ化されていないとすぐにアクティベーション要求より先に進まないでください。

ログインの質問:

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>?cont=true&loginUSER=true" style="font-family:Calibri;">
<fieldset style="border-style:none">
        <p>
        Email: <input style="position:absolute; left:30%;" onkeyup="javascript: this.value=this.value.toLowerCase();" class="details" type="text" name="email" id="email" />
        </p>
        <p>
        Password: <input style="position:absolute; left:30%;" class="details" type="password" name="password" id="password" />
        </p>
        <input type="submit" value="login" class="btn" style="background-color:#FFF;    border-style:solid; border-width:thin;  font-family:Calibri;" />
        </fieldset>
        </form>

Cookie が存在しない場合は最初にログインをチェックし、存在する場合は次にチェックします。

//A new login first create cookies and check if they are valid
        if(!isset($_COOKIE["thebillboard"]))
        {
            //Don't allow user to login if this is not true;        
            $thisIsValid = false;
            //set cookies for login details entered!
            $email = $_POST["email"];
            $pass = $_POST["password"];

            setcookie("thebillboard",$email,time()+3600);
            setcookie("password",$pass,time()+3600);

            //check if the login details exists
            $clients = mysql_query("SELECT * FROM clients");
            while($row = mysql_fetch_array($clients))
            {
                if(($row["businessEmail"] == $email) && ($row["password"]) == $pass)
                {
                    $thisIsValid = true;
                    break;
                }
            }
        }
        //If the cookies exists check if they are valid
        elseif(isset($_COOKIE["thebillboard"]))
        {
            //Don't allow user to login if this is not true;        
            $thisIsValid = false;
            //get cookies for login if it exists!
            $email = $_COOKIE["thebillboard"];
            $pass = $_COOKIE["password"];

            //check if the login details exists
            $thisIsValid = false;
            $clients = mysql_query("SELECT * FROM clients");
            while($row = mysql_fetch_array($clients))
            {
                if(($row["businessEmail"] == $email) && ($row["password"] == $pass))
                {
                    $thisIsValid = true;
                    break;
                }
            }

変数 $thisIsValid が true の場合は続行され、ログイン ユーザーが表示されます。それ以外の場合は、ログインの詳細でエラーが返されます。

4

2 に答える 2

0

Chrome を使用している場合、このアドオンをインストールすると、アクティブなサイトに関連付けられた Cookie を確認するのに役立ちます: https://chrome.google.com/webstore/detail/edit-this-cookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=en

ここから、何が問題なのかを推測できるはずです (Cookie に関連している場合)。

于 2013-01-15T08:12:38.043 に答える
0

プラグインなしで Cookie をデバッグできます。スクリプトの最後に、空のページへのヘッダー リダイレクトを配置します。

header("Location: /debug.php");

そこで、detub.php で print_r($_COOKIE) を実行し、何が含まれているかを確認します。

注: このリダイレクトによる誤ったヘッダーの可能性はあまり気にしません。これはデバッグ目的のためだけなので、これに関するコメントはありません。

于 2013-01-15T08:18:40.150 に答える