0

我正在使用 wp_signon 函数在 wordpress 中进行我自己的自定义登录。每当用户输入他的凭据时,就会使用 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";
        }
    }

此代码在 Chrome 和 firefox 中运行良好,在 IE 中运行良好

4

1 回答 1

1

终于找到了罪魁祸首并解决了问题:) IE 缓存 AJAX 请求。因此,每当您使用 AJAX 调用来设置登录 cookie 时,您都会在 IE 中遇到麻烦。谨防!!!!!在您的 ajax 调用中,在 URL 中填写一个随机数,这样 IE 就不会捕获

在 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 回答