尝试发布表单时出错500

时间:2017-02-13 20:42:18

标签: php mysqli

我正在尝试通过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";
}
}
?>

连接正确,我之前已经测试过。

1 个答案:

答案 0 :(得分:3)

这段代码有很多注意事项。

  1. mysqli_error("error connecting to database")错误,该函数将连接作为参数,而不是字符串。
  2. 您应该使用mysqli_connect_error()来检查连接错误,而不是mysqli_error()
  3. 您应在文件顶部添加error_reporting(E_ALL); ini_set('display_errors', 1);,以便找到实际错误。
  4. 您应该利用在查询中使用预准备语句,特别是那些包含PHP变量/用户输入的语句。
  5. 除非您已获得Array课程,否则您不会使用new Array()初始化新数组,只需$resultset = array();
  6. 一些正确的缩进使代码更容易阅读。
  7. 不要以明文形式存储您的密码!这根本不是安全的 PHP有内置函数,您应该使用它来处理密码的存储,请参阅password_hash()函数 哪个更安全!
  8. 通过这些改进,代码应该可以工作 - 除非我们看不到其他错误。无论如何,要弄清楚什么不起作用会更容易。您还应该阅读并实施第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);
        }
    }
    ?>
    
      

    注意:在开发过程中,您不应该在您的实际网站上显示错误。错误可用于查找漏洞并利用您的代码。

    Readingmaterial