Php 页面在登录后不重定向
您好,我不熟悉使用AJAX和jquery,我正在尝试创建登录系统,但当我尝试登录时,它成功创建了$u会话,但无法重定向到下一页,我尝试使用window.location.replace,但它似乎不起作用。我一直在尝试查找答案,但似乎都不起作用。希望有人能帮助我 phpPhp 页面在登录后不重定向,php,jquery,ajax,Php,Jquery,Ajax,您好,我不熟悉使用AJAX和jquery,我正在尝试创建登录系统,但当我尝试登录时,它成功创建了$u会话,但无法重定向到下一页,我尝试使用window.location.replace,但它似乎不起作用。我一直在尝试查找答案,但似乎都不起作用。希望有人能帮助我 php try { // sql here $sql = ("SELECT * FROM users WHERE username = :username"); $stmt = $db->connectio
try {
// sql here
$sql = ("SELECT * FROM users WHERE username = :username");
$stmt = $db->connection->prepare($sql);
$stmt->execute(array(
':username' => $form_USERNAME
));
$row=$stmt->fetch(PDO::FETCH_ASSOC);
//check if username is existing in database
if($form_USERNAME == $row['username']){
if(password_verify($form_PASSWORD, $row['user_pass'])){
session_start();
$_SESSION['loggedin'] = true;
$_SESSION['userid'] = $row['user_id'];
$_SESSION['username'] = $row['username'];
$_SESSION['usertype'] = $row['user_type'];
echo json_encode(array('result' => 'ok'));
}
else{
echo json_encode(array(
'error' => array(
'msg' => 'Invalid Username or password'
),
));
}
}
else{
echo json_encode(array(
'error' => array(
'msg' => 'User not found'
),
));
}
} catch (Exception $e) {
echo json_encode(array(
'error' => array(
'msg' => $e->getMessage(),
'code' => $e->getCode(),
),
));
}
?>
jquery
<script>
$(function () {
$('#frmLogin').on('submit', function (e) {
e.preventDefault();
var FormData = $('#frmLogin').serialize();
$.ajax({
type: 'post',
url: '../forms/login.php',
data: FormData,
dataType: 'json',
encode: true,
beforeSend: function () {
$('#frmBtnLogin').text("Logging in");
},
success: function (data) {
if (data.error) {
$('#frmLoginUsername').text('');
alert(data.error.msg);
} else {
alert(data.result);
}
$('#frmBtnLogin').text("Log in");
}
});
});
});
<script>
$(function () {
$('#frmLogin').on('submit', function (e) {
e.preventDefault();
var FormData = $('#frmLogin').serialize();
$.ajax({
type: 'post',
url: '../forms/login.php',
data: FormData,
dataType: 'json',
encode: true,
beforeSend: function () {
$('#frmBtnLogin').text("Logging in");
},
success: function (data) {
if(data.result == "ok"){
window.location.replace("user-home.php");
}
else if (data.error) {
$('#frmLoginUsername').text('');
alert(data.error.msg);
$('#frmBtnLogin').text("Log in");
}
}
});
});
});
$(函数(){
$('frmLogin')。关于('submit',函数(e){
e、 预防默认值();
var FormData=$('#frmLogin').serialize();
$.ajax({
键入:“post”,
url:“../forms/login.php”,
数据:FormData,
数据类型:“json”,
编码:对,
beforeSend:函数(){
$('frmBtnLogin').text(“登录”);
},
成功:功能(数据){
if(data.error){
$('#frmLoginUsername')。文本('';
警报(data.error.msg);
}否则{
警报(数据、结果);
}
$('frmBtnLogin')。文本(“登录”);
}
});
});
});
所以我试着在网上搜索答案,尝试了一些方法,但仍然不起作用
更新jquery
<script>
$(function () {
$('#frmLogin').on('submit', function (e) {
e.preventDefault();
var FormData = $('#frmLogin').serialize();
$.ajax({
type: 'post',
url: '../forms/login.php',
data: FormData,
dataType: 'json',
encode: true,
beforeSend: function () {
$('#frmBtnLogin').text("Logging in");
},
success: function (data) {
if (data.error) {
$('#frmLoginUsername').text('');
alert(data.error.msg);
} else {
alert(data.result);
}
$('#frmBtnLogin').text("Log in");
}
});
});
});
<script>
$(function () {
$('#frmLogin').on('submit', function (e) {
e.preventDefault();
var FormData = $('#frmLogin').serialize();
$.ajax({
type: 'post',
url: '../forms/login.php',
data: FormData,
dataType: 'json',
encode: true,
beforeSend: function () {
$('#frmBtnLogin').text("Logging in");
},
success: function (data) {
if(data.result == "ok"){
window.location.replace("user-home.php");
}
else if (data.error) {
$('#frmLoginUsername').text('');
alert(data.error.msg);
$('#frmBtnLogin').text("Log in");
}
}
});
});
});
$(函数(){
$('frmLogin')。关于('submit',函数(e){
e、 预防默认值();
var FormData=$('#frmLogin').serialize();
$.ajax({
键入:“post”,
url:“../forms/login.php”,
数据:FormData,
数据类型:“json”,
编码:对,
beforeSend:函数(){
$('frmBtnLogin').text(“登录”);
},
成功:功能(数据){
如果(data.result==“确定”){
window.location.replace(“user home.php”);
}
else if(data.error){
$('#frmLoginUsername')。文本('';
警报(data.error.msg);
$('frmBtnLogin')。文本(“登录”);
}
}
});
});
});
使用AJAX与服务器通信时,服务器无法将用户重定向到相应的页面。您的前端将只接收最终重定向的响应数据 如果您没有使用AJAX,您可以简单地在php脚本中添加如下内容:
header('位置:https://my.page/to/redirect/to.php');
但是因为您使用的是AJAX,前端将只接收重定向提供的数据,就好像它是一个正常响应一样
相反,考虑使用Ajax实现来评估HTTP响应状态:
//您的PHP脚本
试一试{
//检查有效性
http_响应_代码(200);//正常响应状态
回音$应答;
}catch(\Throwable$exception){
//处理错误
http_响应_代码(401);//不正常响应状态
回音$应答;
}
然后让前端检查响应中的http状态代码,以决定下一步要做什么
例如:
//在Javascript中处理异步响应时
如果(xhr.status==200){
//重定向到成功登录页面
window.location.href=https://my.page/succesful-login';
}否则{
//重定向到无效的登录页面
window.location.href=https://my.page/invalid-login';
}
如果从AJAX调用此PHP页面,则需要在客户端的JS中进行重定向