我写了一个页面,允许用户登录。但是它返回错误500。如果我注释掉$ resultCheck变量,它将至少传递指定的错误消息。 $ resultCheck有什么问题?我在注册页面上使用$ conn,所以我知道这可行。我也知道$ sql是正确的,因为我通过MariaDB运行了相同的命令并且它起作用了。我有一个可以正常运行的注册表单,因此PHP与MariaDB交互没有问题。我也有0个语法错误。到底为什么会给我500错误?
<?php
session_start();
if (isset($_POST['submit']))
{
include 'serv.db.php';
$uid = mysqli_real_escape_string($conn, $_POST['uid']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
//check if inputs are empty
if (empty($uid) || empty($pwd))
{
header("Location: signin.php?login=empty");
exit();
}
else
{
$sql = "SELECT * FROM users WHERE user_uid='$uid';";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck < 1)
{
header("Location: signin.php?login=error");
exit();
}
else
{
if ($row = mysql_fetch_assoc($result))
{
//echo $row['user_uid'];
//de-hash password
$hashedPwdCheck = password_verify($pwd, $row['user_pwd']);
if ($hashedPwdCheck == false)
{
header("Location: signin.php?login=error");
exit();
}
elseif ($hashedPwdCheck == true)
{
//Sucessfully create user here.
$_SESSION['u_id'] = $row['user_id'];
$_SESSION['u_first'] = $row['user_first'];
$_SESSION['u_last'] = $row['user_last'];
$_SESSION['u_email'] = $row['user_email'];
$_SESSION['u_uid'] = $row['user_iid'];
header("Location: signin.php?login=success");
exit();
}
}
}
}
}
else
{
header("Location: signin.php?");
exit();
}
答案 0 :(得分:0)
500 Internal Server Error是一个非常普通的HTTP状态代码,表示网站的服务器出了点问题,但是服务器无法确切说明具体问题是什么。 权限错误。在大多数情况下,“ 500 Internal Server Error”是由于对一个或多个文件或文件夹的不正确权限所致。在大多数情况下,应该归咎于对PHP脚本的错误权限 PHP超时。如果您的脚本连接到外部资源并且这些资源超时,则可能会发生HTTP 500错误。如果这是导致500错误的原因,则超时规则或脚本中更好的错误处理应会有所帮助。 .htaccess 中的编码错误。虽然不常见,但请确保检查站点的.htaccess文件的结构是否正确。