Php 尝试发布表单时出现错误500

Php 尝试发布表单时出现错误500,php,mysqli,Php,Mysqli,我正在尝试通过ajax完成一篇简单的文章。Ajax调用似乎有效,但返回时出现500个错误 代码: 连接是正确的,我以前已经测试过了。在这段代码中有很多东西需要注意 mysqli\u error(“连接数据库时出错”)错误,该函数将连接作为参数,而不是字符串 您应该使用mysqli\u connect\u error()检查连接错误,而不是mysqli\u error() 您应该添加错误报告(E_ALL);ini设置(“显示错误”,1)位于文件顶部,以便您可以找到实际错误 您应该在查询中使用准备好

我正在尝试通过ajax完成一篇简单的文章。Ajax调用似乎有效,但返回时出现500个错误

代码:


连接是正确的,我以前已经测试过了。

在这段代码中有很多东西需要注意

  • mysqli\u error(“连接数据库时出错”)
    错误,该函数将连接作为参数,而不是字符串
  • 您应该使用
    mysqli\u connect\u error()
    检查连接错误,而不是
    mysqli\u error()
  • 您应该添加
    错误报告(E_ALL);ini设置(“显示错误”,1)位于文件顶部,以便您可以找到实际错误
  • 您应该在查询中使用准备好的语句,特别是那些包含PHP变量/用户输入的语句
  • 除非您有一个
    Array
    类,否则不会使用
    new Array()
    初始化一个新数组,而只使用
    $resultset=Array()
  • 适当的缩进使代码更易于阅读
  • 不要将密码存储为纯文本!这根本不安全!PHP具有内置函数,您应该使用这些函数来处理密码的存储,请参见函数 这样更安全

    有了这些改进,代码应该可以工作——除非有其他我们看不到的错误。无论如何,找出什么不起作用会更容易。您还应该阅读并实施第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);
        }
    }
    ?>
    
    注意:在开发过程中,您不应该在实时站点上显示错误。错误可用于发现漏洞并利用代码进行攻击

    阅读材料

    您现在已将您的凭证发布到公共QA网站,并暴露于黑客攻击之下。你检查过错误日志了吗?表示了解的语句。即使是这样也不安全!永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
    密码\u hash()
    。在散列之前,请确保对它们进行了清理或使用了任何其他清理机制。这样做会更改密码并导致不必要的额外编码。哇,问题与原始postAn错误相比发生了重大变化,将/应该登录到服务器上,但这将为您提供更多信息
    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);
        }
    }
    ?>