我是Web开发的新手.
目前,我正在网站上使用登录功能.我使用Javascript / AJAX来获取用户名和密码,并将其发送到PHP文件以在MysqL数据库上进行验证.那就是我要做的.
我的问题是为什么header()函数不能正常工作?我想要在用户登录后将她重定向到个人资料页面(profile.PHP)
$query = "SELECT * from user WHERE username = '$uname' AND password = md5('$pass');";
$ret = MysqL_query($query) or die(MysqL_error());
if(!$ret) {
$msg = "Invalid query " . MysqL_error() . "\n";
$msg .= "Whole query " . $query;
die($msg);
}
$userid = -1;
while($row = MysqL_fetch_array($ret)) {
$userid = $row["ID"];
}
$cnt = MysqL_num_rows($ret);
if($cnt == 1) {
session_start();
$_SESSION["userid"] = $userid;
$_SESSION["uname"] = $uname;
echo "You have logged in successfully!";
header("Location: profile.PHP");
} else {
echo "Wrong Username/Password";
}
这是针对Javascript(AJAX函数)的:
var obj;
var url = "login.PHP";
var params = "uname=" + document.getElementsByName("uname")[0].value + "&pass=" + document.getElementsByName("pass")[0].value;
if(window.XMLHttpRequest) { // Major browsers
obj = new XMLHttpRequest();
obj.open("POST",url,true);
obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
obj.setRequestHeader("Content-length", params.length);
obj.setRequestHeader("Connection", "close");
obj.onreadystatechange = function() {
if(obj.readyState == 4) {
if(obj.status == 200) {
// success
} else {
alert("Problem in returned data" + "Error status=" + obj.status);
}
}
}
obj.send(params);
解决方法:
我认为重定向不会与AJAX一起使用.这将发生:
> AJAX请求发送到login.PHP
> login.PHP发回标头,其中包含Location:profile.PHP
>然后浏览器重定向并获取profile.PHP
> profile.PHP的结果然后传递到您的XMLHttpRequest对象.
> login.PHP的响应返回一个JSON响应,其中包含状态代码(302或301)以及重定向到的位置.
>响应本身的状态码为200(成功).
>处理JSON响应并检查302或301的状态码,然后重定向到该位置.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。