これはlogin controllerの中核スクリプトです。つまり、ユーザのすべてのサニタイズと検証が完了しました。 login.phpphpリダイレクトの原因でajaxリダイレクトが発生する
try {
LoginController::UserLogin(); // Calling my method inside my controller
} catch (Exception $e) {
echo json_encode(array(
'error' => array(
'msg' => $e->getMessage()
),
), JSON_PRETTY_PRINT);
header('Content-Type: application/json');
exit;
}
<form id="login_form" action="<?php echo htmlspecialchars(pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME)); ?>" class="form" method="POST">
<div class="form-group">
<input type="text" name="login_username" placeholder="Enter username" class="form-control" />
</div>
<div class="form-group">
<input type="password" name="login_pass" placeholder="Enter password" class="form-control" />
</div>
<div class="form-group">
<input type="text" name="login_security" placeholder="Enter Security 25 * 2" class="form-control" />
</div>
<button class="btn btn-green" id="login-btn">Login</button>
</form>
私のAjaxの一部
$('#login_form #login-btn').on('click', function (e) {
e.preventDefault();
$.ajax({
url : $('#login_form').attr('action'),
type: 'POST',
dataType: 'json',
data: $('#login_form').serialize(),
success: function(data) {
console.log(data);
if (data.error) {
$('.error').html('<div class="alert alert-danger">' + data.error.msg + '</div>');
}
if (data.result === 'success') {
$('.error').html('<div class="alert alert-unknown">' + data.msg + '</div>');
setTimeout('window.location.href = "user/profile.php";',3000);
}
}
});
});
私の問題内側LoginController.php
if (password_verify($valid['pass'], $pass)) {
// My session stuffs
header('Content-Type: application/json');
echo json_encode (array(
'result' => 'success',
'msg' => 'Login successful..! You will be redirected in a moment'
));
redirect('user/profile'); //Ajax redirect only works when I remove this.
exit;
}
コード内部
コード:私はAJAXを使用するまで、すべてが正常に動作します。つまり、Ajaxのないページにはエラーが表示され、すべて正常です。しかし、私はajaxを使用するとエラーが返されますが、ログインの詳細が正しい場合(有効な詳細)、ページが停止します(ページはリダイレクトされません)。
私が見るものはログインページの302ですが、リダイレクトは行われていません(ただし、ログインコントローラのフォームからヘッダーを削除すると、これはユーザーにJavaScript無効)。
をあなたは '、304'を' 302'のない意味しますか?もしそうなら、それは完全に有効な応答です –
これは302エラーです。そして問題は、ページがajaxでリダイレクトされないということです。 –