【发布时间】:2015-12-16 23:59:03
【问题描述】:
我正在使用 Ajax 将登录表单详细信息从 HTML 传递到 PHP。详细信息得到正确传递,所有功能都正常工作,警报也根据输出工作。
但是,如果我在json_encode 下面添加以下会话语句,它就不起作用。执行“检查元素”后,Chrome 的“网络选项卡”中的输出是正确的,但标头功能不起作用,也没有出现 Ajax 中指定的成功或失败警报。
代码如下:
<?php
ob_start();
session_start();
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kites";
//Create Connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
//Check connection
if(!$conn)
{
die("Connection failed: " . mysqli_connect_error());
alert("Connection failed");
}
else
{
if( empty($_POST['loginusername']) && empty($_POST['loginpassword']) )
{
echo json_encode(array('status'=>false,'msg'=>'No arguments provided'));
}
else
{
$loginusername = $_POST['loginusername'];
$loginpassword = $_POST['loginpassword'];
$stmt = $conn->prepare("SELECT * FROM register_form WHERE username = ?");
$stmt->bind_param("s", $loginusername);
if($stmt->execute())
{
$result = $stmt->get_result();
$num_of_rows = $result->num_rows;
if($num_of_rows > 0)
{
$user = $result->fetch_assoc();
$salt = $user['salt'];
$encrypted_password = $user['password'];
function checkhashSSHA($salt,$password)
{
$hash = base64_encode(sha1($password . $salt, true) . $salt);
return $hash;
}
$hash = checkhashSSHA($salt,$loginpassword);
if($encrypted_password == $hash)
{
echo json_encode(array('status'=>true, 'msg'=>'Login Successfull'));
session_regenerate_id();
$_SESSION['username']=$loginusername;
session_write_close();
//here you can redirect on your file which you want to show after login just change filename ,give it to your filename.
header("Location:http://localhost/kites/profile.php");
}
else
{
echo json_encode(array('status'=>false,'msg'=>$encrypted_password ));
}
}
else
{
echo json_encode(array('status'=>false,'msg'=>'Wrong username. Please check it and try again'));
}
}
else
{
echo json_encode(array('status'=>false,'msg'=>'Something went wrong. Please try again!'));
}
} } ?>
如果我删除以下语句:
session_regenerate_id();
$_SESSION['username']=$loginusername;
session_write_close();
header("Location:http://localhost/kites/profile.php");
代码运行正常。
【问题讨论】: