获取提交时间:
网上用的最多的肯定是JS方法,此方法是提交的时候再去获取时间,并将它赋值给一个input
<script type="text/javascript">
window.onload = function(){
var nowDate = new Date();
var str = nowDate.getFullYear()+"-"+(nowDate.getMonth() + 1) +"-"+nowDate.getDate()+" "+nowDate.getHours()+":"+nowDate.getMinutes()+":"+nowDate.getSeconds();
document.getElementById("mytime").value=str;
}
</script>
第二种是在表单添加PHP代码:此方法只适合动态预览或者伪静态,因为生成过后的表单,里面的时间字段始终是生成的时候的时间。所以达不到我们的要求,写法如下:
<input name="shijian" id="shijian" value="{dede:php} echo $showtime=date("Y-m-d H:i:s");{/dede:php}">
第三种是结合前台和后台一起实现获取时间同时获取浏览者IP地址:
在diy.php文件中加入以下代码:
if($fieldinfo[1] == 'textdata')
{
${$fieldinfo[0]} = FilterSearch(stripslashes(${$fieldinfo[0]}));
${$fieldinfo[0]} = addslashes(${$fieldinfo[0]});
}
//后面添加
if($fieldinfo[0] == 'ip')
{
${$fieldinfo[0]}=GetIP();
}
if($fieldinfo[0] == 'time')
{
${$fieldinfo[0]}=date("Y-m-d H:i:s");
}
接下来在留言表单页面添加两个hidden的input(测试的时候,我没有在前台添加这两个后台同样可以获取到);代码如下很简单:
<input type="hidden" name="ip" id="ip" value="">
<input type="hidden" name="time" id="time" value="">
以上三种方法,不用说肯定是第三种好很多,它没有JS那么多代码,也没有第二种方法死板,我所使用的任何网站当中都采用此方法获取提交时间。
接下来要说的是自定义表单如何防止垃圾流言,网上很多是结合验证码来实现,如果使用AJAX来提交表单的话,不是每次提交过后都要刷新验证码才行吗?不然加个验证码只是摆设而已,即浪费精力又浪费时间。对于我们这种懒人,用最简单的代码实现同样的功能就是我所需要的。
接下来说的就是使用IP来判定表单是否有过提交。两三句话就可以完成的事情,首先查找
$dsql->ExecuteNoneQuery($query)
这是留言插入数据库代码,我们在这个判断语句上一行,$query = “INSERT INTO `{$diy->table}` (`id`, `ifcheck` $addvar) VALUES (NULL, 0 $addvalue); “的下一行添加:
$get_ip = GetIP(); //获取IP
$select_ip = "SELECT * FROM `{$diy->table}` WHERE `ip` = '$get_ip'"; //查询IP语句
$se = $dsql->GetOne($select_ip); //$dsql->GetOne()函数是织梦dsql类的一个方法,返回一个数组;将查询到的结果赋值给$se;如果没有查询到返回空
有了查询结果还愁不知道怎么办吗?
在执行插入之前先判断一下此变量是否为空,如果为空说明数据库当中没有此IP留言,可以留言,如果不为空则此IP不能留言:
if( $se == '' && $dsql->ExecuteNoneQuery($query)) //$se == '' 也可以用函数判断是否为空,这个判断一定要在$dsql->ExecuteNoneQuery($query)它前面,学过IF都知道是为什么;
{
echo "可以留言";
}else{
echo "这个IP已经留过言了";
}
至此完美打造织梦自定义表单的IP和留言时间,并且根据IP来判定访客是否可以正常留言;像在一个小时之内只准留言一条,同样的道理,查询数据库当中的时间,再获取现在时间做一下对比就可以实现的。通过这种方法,可以延伸出各样的留言功能。希望对各位有所帮助
发表评论
沙发空缺中,还不快抢~