-1

这是代码:

<html>
<body>

<?php
$valid = true;



//Check for first name value
if (empty($_POST['texts'])) {
    echo 'You forgot to type something in<br />';
    $valid = false;
}

if ($valid == true) {
    $conn1 = mysqli_connect('xxx') or die('Error connecting to MySQL server.');

    $name=   $_POST['name'];
    $title=  sha1($_POST['title']);
    $texts= $_POST['texts'];
    $forum_id = $_POST['forum_id'];




        $name = str_replace("'","''",$name);
        $title = str_replace("'","''",$title);
        $title = str_replace("b074acd521","STREAMER",$title);

        $texts = str_replace("'","''",$texts);


        $title = substr($title,0,8);


        $sql = "INSERT INTO post (name,title, texts, forum_id) VALUES ('$name', '$title', '$texts', '$forum_id')";
        mysqli_query($conn1, $sql) or die('Error inserting to database.');
        mysqli_close($conn1);

        header('Location: requests.php');
        }
else {
    echo 'Click <a href="javascript:history.go(-1)">HERE</a> to go back and adjust your entry.';
}

?>

</body>
</html>

当我在网站上发帖并将 id 字段留空时,它仍然会生成一个 ID,我该如何解决这个问题?另外,如果名称字段为空,我怎样才能将其设为默认值?

4

1 回答 1

2

大多数(如果不是全部)散列算法将散列一个空字符串。如果他们不这样做,他们就不会真正成为“诚实”的哈希。这个想法是您不应该能够将散列解密为原始输入。例如,如果以下情况:

All good boys deserve fudge!

All good boys deserve  fudge!

使用哈希算法将空白空间视为不可哈希,然后他们将获得相同的哈希,这将使其更容易破解。

如果您不希望对空字符串进行散列,则需要在散列之前检查字符串。就像是:

 if(!empty($_POST['user_input']) {
      $user_hash = sha1($_POST['user_input']);
 } else {
      echo "No input given, wiseguy!";
 }
于 2012-05-01T06:32:49.853 回答