0

wp_signon 関数を使用して、ワードプレスで独自のカスタム ログインを作成しています。ユーザーが資格情報を入力するたびに、ajax を使用して別のページが呼び出されます。そのページで、ユーザーの資格情報を確認し、wp_signon 関数を使用してユーザーをログインさせます。その後、確認が送信され、現在のページがそれをキャプチャし、ユーザーが正常にログインしたことが表示されます。コードは Chrome と Firefox では機能しますが、IE では機能しません。これは、AJAX ファイル内のコードです。現在のページは、ユーザーがログインしているという応答を受け取りますが、更新すると、ユーザーがログインしていないことが示されます。:(何日も苦労しています。助けてください

    $creds = array();
    $creds['user_login'] = $user;
    $creds['user_password'] = $password;
    $creds['remember'] = $remember;
    $user = wp_signon( $creds, true );
    if ( is_wp_error($user) ){
        echo "Invalid Username or Password";
    }
    else {
        $current_user = wp_get_current_user();
        $userid=$current_user->ID;
        mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server");
        $dbquerry= 'select `login` from wp_users where user_login="'.$_GET['user'].'"';

        $result=mysql_db_query($dbname,$dbquerry);
        list($login)=mysql_fetch_array($result);
        if($login==1) {
            echo "change";
        }
        else {
            echo "success";
        }
    }

このコードは、IE ではなく Chrome と firefox でうまく機能します。

4

1 に答える 1

1

最終的に原因を突き止め、問題を解決しました:) IEはAJAXリクエストをキャッシュします。したがって、AJAX 呼び出しを使用してログイン Cookie を設定すると、IE で問題が発生します。注意してください!!!!! IEがキャッチしないように、ajax呼び出しでURLに乱数を入力します

Ajax呼び出しでこれを挿入しました

    var d = new Date();
    var n = d.getTime();
    req.open("GET", "something.php?user"+username+"&x="+n);

これを行うと、IEはAJAXリクエストをキャッシュしません

于 2012-07-25T19:34:13.590 に答える