我确保我没有发送任何客户端数据,我开启了错误报告但没有发生任何事情。
这是一个简单的登录脚本,在验证时有重定向。
<?php
include_once "database-handler2.php";
require "password.php";
$UserName = $_POST["name"];
$Password = $_POST["pass"];
if(isset($UserName))
{
$query = "SELECT Password FROM users WHERE Username='$UserName'";
$hashed_password = mysqli_query($connection, $query);
while ($row = mysqli_fetch_row($hashed_password))
{
$res = $row[0];
}
if(password_verify($Password, $res)) {
// Show Errors
error_reporting(E_ALL);
ini_set('display_errors','On');
// Redirect
header('Location:http://example.com/ex/index.php', true);
die('redirect');
}
}
我确保其他包含的php没有额外的空格或其他任何内容。使用AJAX,成功函数什么都不做,如果我打开alert()或者debug.log()PHP响应的成功消息(不应该有一个),那么我得到一个打印页面我是尝试重定向到HTML而不会出现任何错误或其他信息。
Javascript代码:
$('#submitButton').click(function()
{
var userName = document.getElementById("user").value;
var pass = document.getElementById("pass").value;
$.ajax({
url: '/handlers/login-handler.php',
type:'POST',
data:
{
name: userName,
pass: pass
},
success: function(msg)
{
alert(msg);
}
});
});
请注意,如果我采取警报(msg);如果我点击按钮没有任何反应。
答案 0 :(得分:1)
删除这段PHP代码
header('Location:http://example.com/ex/index.php', true);
并在ajax的成功响应中添加以下代码行。
window.location.href="http://example.com/ex/index.php"
如果你是AJAX,那么服务器端重定向将不起作用,你必须使用jquery / javascript重定向。
答案 1 :(得分:0)
您应该从您的php代码返回success
类型响应到ajax响应,然后您应该使用window.location
JS代码在成功处理后重定向您的页面。
答案 2 :(得分:0)
不要使用javascript / jQuery提交表单,而是使用标准的html表单。您不需要任何javascript来提交表单。
<form method="post" action="/handlers/login-handler.php">
<label for="user">Username:</label>
<input type="text" id="user" name="user">
<label for="pass">Password:</label>
<input type="text" id="pass" name="pass">
<input type="submit" value="Submit">
</form>