MySQL和PHP-验证密码,然后将数据插入数据库(如果正确)

时间:2018-08-24 16:08:36

标签: php mysql

我正在尝试从mysql表验证密码,然后在密码正确的情况下将其他数据插入其他表。我自己无法真正解决这个问题,所以希望我能在这里得到帮助:)

我肯定有一种更简单的方法:D

这是我的代码:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

    <textarea name="change"></textarea>
    <input type="date" name="date">
    <input type="password" name="password">
    <label for="password">Password</label>

    <input type="submit" name="submit">

</form>

<?php 
    if (isset($_POST['submit'])) {
        $date = $_POST['date'];
        $change = $_POST['change'];
        $pwd = $_POST['password'];

        $servername = "";
            $username = "";
            $password = "";
            $dbname = "";

        $conn = new mysqli($servername, $username, $password, $dbname);
            if ($conn->connect_error) {
                die("Connection lost: " . $conn->connect_error);
            } 

            $sql = "SELECT * FROM users WHERE password = '$pwd'";
            $result = mysql_query($sql) or die(mysql_error());
            $numrows = mysql_num_rows($result);
            if($numrows > 0)
               {
                $sql = "INSERT INTO data (datechanged, changemade) VALUES ('$date', '$change')";
                if ($conn->query($sql) === TRUE) {
                    echo "New record created successfully";
                } else {
                    echo "Error: " . $sql . "<br>" . $conn->error;
                }
               }
            else
               {
                echo 'Your not in';
               }
            $conn->close();
            }
?>

1 个答案:

答案 0 :(得分:-1)

在用户一次正确输入密码后,您可以使用PHP Sessions保持登录状态。

除此之外,它并没有比您的解决方案容易得多。 但是它应该变得更加安全!

您的方法存在三个缺陷:

  1. 具有相同密码的用户登录到同一帐户。 为了防止这种情况,他们还必须输入帐户名或其他唯一标识符。
  2. 密码未加密存储。您应该始终存储加密的密码。幸运的是,PHP提供了易于使用的密码encryptionvalidation函数。
  3. 用户输入直接插入SQL中。您应该从不直接在SQL中使用用户输入!任何人都可以使用一个“密码” 删除整个数据库,请参阅SQL Injection Attack。请改用MySQLi's prepared statements

这可能一次很多,但是如果您不可以使用此网站,则绝对有必要解决这些问题。

我希望这会有所帮助。 -思维