我在我的网站上有一个ajax登录,但由于一些奇怪的原因,它在Internet Explorer中不起作用,但它适用于Webkit,最新版本的FireFox和Opera。所以我不认为这是我的代码,但是对于IE的ajax请求是否存在已知问题?谢谢!
使用Javascript:
$('.mainlogin').submit(function() {
var username = $('#main_username').val();
var password = $('#main_pword').val();
$.ajax({
url: 'log.php',
type: 'POST',
data: {
user: username,
pass: password
},
success: function(response) {
if (response == 'success') {
window.location.reload();
} else {
$('.logerror').fadeIn(250);
}
}
});
return false;
});
PHP:
<?php
require_once('.conf.php');
$user = mysql_real_escape_string($_POST['user']);
$pass = mysql_real_escape_string($_POST['pass']);
$result = mysql_query("SELECT * FROM accountController WHERE username = '$user'");
while ($row = mysql_fetch_array($result)) {
if (sha1($user.$pass) == $row['pword']) {
session_start();
$_SESSION['login'] = 1;
$_SESSION['uname'] = $row['username'];
$_SESSION['id'] = $row['id'];
echo "success";
}
}
?>
答案 0 :(得分:1)
因为IE8:
“使用第一个会话cookie集,而不是Firefox中的最后一个。” http://anvilstudios.co.za/blog/php/session-cookies-faulty-in-ie8/
要解决此问题,您只需设置:
session_regenerate_id(true);
删除旧会话ID并强制IE8使用新会话ID。
缓存可能是问题,请尝试添加:
cache: false,
success: function(response) {
if (response == 'success') {
document.getElementById('status').innerHTML=http.responseText;
}