-1

signin.phpユーザーが電子メールとパスワードを入力できるログインページがあります。送信ボタンをクリックすると、ページが に移動しますconnection_validate.php。このページでは、ユーザーが入力したデータをデータベースで検証します。登録済みのユーザーの場合、ページは に移動しcalendar.phpます。入力したデータが正しくない場合は、 にリダイレクトされsignin.phpます。入力したデータが正しくない場合、次のように Cookie を配置しました。

//action to be done if e mail id and password matches with database records             
if(mysql_num_rows($result)>0)
{
    header('location:calendar.php');
}
//action to be done if e mail id and password does not matches with database records 
else
{
    setcookie('message','incorrect login data');
    header('location:signin.php');
}

signin.php に、ログイン情報が間違っている場合にアラートを表示するコードを次のように記述しました。

<?php
include("include/minfooter.php"); 
if(isset($_COOKIE["message"]))
{
    if(!($_COOKIE["message"]==" "))
    {
        echo "<script>
    alert('Incorrect login information');
    </script>";
    setcookie("message"," ",time()-3600);
    }
}
?>

私の問題は、エラー ログイン データを 1 回入力すると、サインイン ページを読み込むたびにアラートが表示されることです。calendar.php から signin.php に戻るボタンを押すと、アラートが表示され始めます。問題はCookieにあることを理解しました。Cookie は削除されていません。この問題を解決するにはどうすればよいですか?

4

3 に答える 3

1

セッションを使用している場合は、Cookie値の代わりに$_SESSION変数を使用できます。また、setcookie()はHTTPヘッダーを送信するため、コンテンツを出力した後でsetcookie()を使用することはできません。HTTPヘッダーは、コンテンツを送信する前に送信する必要があります。

session_start();
//action to be done if email id and password matches with database records
if (mysql_num_rows($result) > 0)
{
    header('Location: calendar.php');
    exit;
}
//action to be done if email id and password does not matches with database records
else
{
    $_SESSION['message'] = 'incorrect login data';
    header('Location: signin.php');
    exit;
}

それで:

<?php

session_start();
include("include/minfooter.php"); 

if (!empty($_SESSION['message']))
{
    echo "<script>alert('" . $_SESSION["message"] . "');</script>";
    $_SESSION['message'] = '';
}

?>
于 2012-12-18T05:28:11.427 に答える
1

次のように signin.php を更新します。

<?php
    include("include/minfooter.php");
    if (isset($_COOKIE["message"]))
    {

        echo "<script>
                var delete_cookie = function(name) {
                    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
                };
                var msg = '" . $_COOKIE["message"] . "';
                if (msg != '')
                    alert('Incorrect login information');
                delete_cookie('message');
            </script>";
    }
?>
于 2012-12-18T05:21:23.573 に答える
0

$ _SESSION配列のインデックス['messages']を使用するセッションを使用してからクリーンアップする方がよいかもしれません。ユーザーがページから出た後に情報を参照する場合は、Cookieを使用する必要があります。Cookieの使用に関するコードを作成しましたが、セッションの使用を検討してください。

<?php include("include/minfooter.php"); 
        if(isset($_COOKIE["message"]) && !empty($_COOKIE["message"])
        {
                echo "<script>
                    var msg = '<?php echo $_COOKIE["message"];?>';
                    if (msg != "")
                    alert('Incorrect login information');
                  </script>";
              unset($_COOKIE["message"]);
        }
?>
于 2012-12-18T05:29:05.573 に答える