PHP Instert将不会插入数据库

时间:2019-06-15 13:28:51

标签: php mysqli

(因此,我是一名高中生,因此不是最擅长使用术语的人,因此请尽最大努力指导而不是告诉您是否可以这样做)当使用插入将数据从网站上放入数据库时​​,它似乎起作用但数据库中没有任何内容,但没有错误代码。

我正在使用Mysqli,PHP和Wampserver运行本地服务器,并且网站不会将数据发送到数据库。

<?php 
include 'connect.php';
include 'header.php';

?>
Sign Up<br>
<form method="post" action="">

Username: <input type="text" name="user_name"><br>
password: <input type="password" name="user_pass"><br>
password <Check: input type="password" name="user_pass_check"><br>
Email: <input type="text" name="user_email"><br>
<input type="submit" value="Register">

</form>


<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $sql = "INSERT INTO users(user_name, user_pass,  user_email) VALUES('".mysqli_real_escape_string($con, $_POST['user_name'])."', '".sha1($_POST['user_pass'])."', '".mysqli_real_escape_string($con, $_POST['user_email'])."', NOW(), 0)";
    $result = mysqli_query($con, $sql);
    if (!$result) {
        echo 'Something went wrong';
        echo mysqli_error($con);
    } else {
        echo "you have successfully registered. you can now <a href='signin.php'>sign in</a> and start posting";
    }
}
}

include 'footer.php'?>

在我用于连接的文件中

<?php

$host = 'localhost';
$user = 'root';
$pass = '';
$dbname = 'seqevents';
$con = new mysqli($host, $user, $pass, $dbname) or die("cannot connect");

session_start();
if (!isset($_SESSION['user_level'])) {
    $_SESSION['user_level'] = 0;
}

我没有收到任何错误消息,并且在网站上没有任何反应,它只是重新加载并摆脱了文本框中的任何输入。

1 个答案:

答案 0 :(得分:1)

首先是(可能的)问题,然后是其他一些重要的指针:

插入时,您插入了3列设置(user_name,user_pass,user_email),然后向其中加载了5个值(NOW()0),这些值都不是什么地方价值观。


  • 请勿使用MD5 。如果您想“是的,但是我的网站不是很有趣,为什么要在乎”,请再次阅读此行。 请勿使用MD5 。或sha1:

      

    从不以明文形式或使用MD5 / SHA1存储密码!仅存储密码散列。使用PHP的password_hash()password_verify()。如果您运行的PHP版本低于5.5(我确实希望不是),则可以使用password_compat库来获得相同的功能。 – Dharman

  • 使用准备好的语句。 mysqli_real_escape_string是一个很好的第一步,但不够充分。准备好的语句为您保护查询。有点复杂,很多更安全。

  • 我建议删除$_SERVER['REQUEST_METHOD'] === 'POST'。如果页面上有两种形式怎么办?你被困住了。而是给您的“提交”按钮起一个类似submitRegForm的名称。然后,您可以if( isset($_POST['submitRegForm']) )

  • 请勿使用MD5或SHA1