我正在使用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请求