这是代码:
<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,我该如何解决?另外,如果名称字段为空,我怎么能将其默认为某个东西?
答案 0 :(得分: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!";
}