所以当我用正确的详细信息登录时,我的系统给出了一个空白消息的错误消息,并且没有重定向?为什么会发生这种情况,我不知道如何在我的代码中返回一个空白错误?
调用:
$("#log").click(function () {
username = $("#user").val();
password = $("#password").val();
submit = $("#log").val();
$.ajax({
type: "POST",
url: "",
data: "submit=" + submit + "&username=" + username + "&password=" + password,
success: function (response) {
if (response == 'success') {
//should never be called?
} else {
$("#error-log").remove();
var error_msg = response;
$("#s-log").append('<div id="error-log" class="err welcome dismissible">' + error_msg + '</div>');
}
}
});
return false;
});
检查:
if($_POST['submit']=='Login')
{
// Checking whether the Login form has been submitted
$err = array();
// Will hold our errors
if(!$_POST['username'] || !$_POST['password'])
$err[] = 'All the fields must be filled in!';
if(!count($err))
{
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
// Escaping all input data
$row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
if($row['usr'])
{
// If everything is OK login
$_SESSION['usr']=$row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['rememberMe'] = $_POST['rememberMe'];
// Store some data in the session
setcookie('FRCteam3482Remember',$_POST['rememberMe']);
header("Location: workspace/index.php");
echo 'success';
}
else $err[]='Wrong username and/or password!';
}
if(count($err)) {
$_SESSION['msg']['login-err'] = implode('<br />',$err);
// Save the error messages in the session
echo $_SESSION['msg']['login-err'];
//php unset($_SESSION['msg']['login-err']);
//header("Location: index.php");
}
exit;
}
header("Location: workspace/index.php");
Ajax请求将数据传递给另一个页面(脚本),该页面处理该数据并通常返回一些数据。您应该只回显需要返回的数据,而不是尝试重新定位。发出Ajax请求的页面应该在必要时使用JavaScript重定向当前页面。
而且,您在header()调用之后回显数据,因此该回显数据可能不会发送。
-
关于成功函数location.reload(),将重新加载当前页面
-
另一个选项post你想重定向的url字符串,成功后使用var重定向。
$("#log").click(function(){
username=$("#user").val();
password=$("#password").val();
submit=$("#log").val();
currentpage=$("#currentpage").val();//submit current page url or some useful info about it
$.ajax({
type: "POST",
url: "",
data: "submit="+submit+"&username="+username+"&password="+password+"¤tpage="+currentpage,
success: function(response) {
if(response.msg=='success') {
window.location.href=response.url;
}
else {
$("#error-log").remove();
var error_msg = response;
$("#s-log").append('<div id="error-log" class="err welcome dismissible">'+error_msg+'</div>');
}
}
});
return false;
});
PHP if($_POST['submit']=='Login')
{
// Checking whether the Login form has been submitted
$err = array();
// Will hold our errors
if(!$_POST['username'] || !$_POST['password'])
$err[] = 'All the fields must be filled in!';
if(!count($err))
{
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
// Escaping all input data
$row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
if($row['usr'])
{
// If everything is OK login
$_SESSION['usr']=$row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['rememberMe'] = $_POST['rememberMe'];
// Store some data in the session
setcookie('FRCteam3482Remember',$_POST['rememberMe']);
header("Location: workspace/index.php");
echo "{'msg':'success','url':'".$_POST['currenturl']."'}";
}
else $err[]='Wrong username and/or password!';
}
if(count($err)) {
$_SESSION['msg']['login-err'] = implode('<br />',$err);
// Save the error messages in the session
echo $_SESSION['msg']['login-err'];
//php unset($_SESSION['msg']['login-err']);
//header("Location: index.php");
}
exit;
}