使用Ajax的Wordpress自定义登录不适用于IE


Wordpress Custom Login with Ajax not working with IE

我正在使用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 中则不然

终于找到了罪魁祸首并解决了问题:)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请求

相关文章: