我正在尝试通过ajax完成一个简单的POST。 Ajax调用似乎有效,但返回500错误。
代码:
if(isset($_POST['name']) && isset($_POST['password']))
{
$sql = "SELECT * FROM kandidaat WHERE name = '".$_POST['name']."' AND password = '".$_POST['password']."' LIMIT 1;";
$conn= mysqli_connect("localhost", "user", "pw", "db")
or die(mysqli_error("error connecting to database"));
$result = $conn->query($sql);
$resultset = new Array();
if ($result->num_rows > 0) {
$resultset = $result;
session_start();
$_SESSION['login_user']= $_POST['name'];
} else {
$resultset = "0";
}
}
?>
连接正确,我之前已经测试过。
答案 0 :(得分:3)
这段代码有很多注意事项。
mysqli_error("error connecting to database")
错误,该函数将连接作为参数,而不是字符串。mysqli_connect_error()
来检查连接错误,而不是mysqli_error()
error_reporting(E_ALL); ini_set('display_errors', 1);
,以便找到实际错误。Array
课程,否则您不会使用new Array()
初始化新数组,只需$resultset = array();
password_hash()
函数
哪个更安全!
通过这些改进,代码应该可以工作 - 除非我们看不到其他错误。无论如何,要弄清楚什么不起作用会更容易。您还应该阅读并实施第4和第7点。
error_reporting(E_ALL);
ini_set('display_errors', 1);
if(isset($_POST['name']) && isset($_POST['password']))
{
$sql = "SELECT * FROM kandidaat WHERE name = '".$_POST['name']."' AND password = '".$_POST['password']."' LIMIT 1;";
$conn = mysqli_connect("localhost", "user", "pw", "db") or die(mysqli_connect_error());
if ($result = $conn->query($sql)) {
$resultset = array();
if ($result->num_rows > 0) {
$resultset = $result;
session_start();
$_SESSION['login_user']= $_POST['name'];
} else {
$resultset = "0";
}
} else {
echo "Query failed: ".mysqli_error($conn);
}
}
?>
注意:在开发过程中,您不应该在您的实际网站上显示错误。错误可用于查找漏洞并利用您的代码。