更新
问题发布在 CodeReview:https://codereview.stackexchange.com/questions/2362/anti-bot-comment-system
根据SO的一些建议[如果您有兴趣,请参阅我以前的问题的详细信息]我开发了系统,我认为这对于机器人自动发表评论非常有用!
我正在发布我的代码,以便您查看并发布一些有价值的评论!!
任何建设性的建议都欢迎:)
index.php
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
function main()
{
var str=$("#key").load("getToken.php",function (responseText) {
$("#key").val(responseText);
}
);
setTimeout("main()", 100000);
}
</script>
</head>
<body onload='main()'>
<form name="f" action="poster.php" method="post">
<input type="text" name="text"/><br>
<input type="text" name="key" id="key" value=""/><br>
<input type="submit">
</form>
</body>
</html>
getToken.php
<?php
$key=date("Y-m-d H:i:s");
$hash=sha1($key.'mySecretKey');
echo $key.'#'.$hash;
?>
poster.php
<?php
if (!isset($_POST['key']))
exit;
$parts = explode('#',$_POST['key'],2);
$key = $parts[0];
$hash = $parts[1];
$date1 = $key;
$date2 = date("Y-m-d H:i:s");
$diff = abs(strtotime($date2) - strtotime($date1));
$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
$hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60));
$minuts = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60);
$seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minuts*60));
if ($seconds < 5)
echo $seconds.' Too fast, must be a naughty bot <br>';
else if ($seconds>5 && $seconds < 600)
echo $seconds.' In time <br>';
else
echo $seconds.' time out <br>';
if ($hash == (sha1($key.'sou')))
echo $_POST['text'];
else
echo 'You are a bot !';
?>
答案 0 :(得分:2)
它正在关闭,因为SO不是代码审查或改进。还有另一个SE site。
至于代码:365*60*60*24
应该是常量。
你应该真正改进你的变量命名。
$date2 = date("Y-m-d H:i:s");
date2
?这有什么意义吗? currentTime
更像是它。 始终描述变量包含的内容,而不是它们的内容。