手写一个评论图片验证

由于用了一个非常老的CMS系统,里面评论系统不带任何验证,导致了垃圾评论非常多。本想使用第三方评论的API直接调入的,但是由于多说已死,畅言需要多重验证才可以使用,并且还有AD,思前想后还是自己搞个吧。以下是简单示例,代码参考网络修改,本来想移植phpthink和pw的代码,但是由于本人非常懒,不想看代码所以算了。

思路:
建一个文件,生成随机数字,设定一个变量传导到图片生成图片,同时将码值保存在session中。
建一个tr,输入值提交值与session值想对比,正确返回post,false则拒绝。

//数字图片生成代码(文件另存为img.php)
<?php
header("Content-Type:image/png");
session_start();
session_register(‘img’);
$image = imageCreate(50, 18);
$black = imageColorAllocate($image, 0, 0, 0);
$white = imageColorAllocate($image, 255, 255, 255);
for ($i=0; $i<4; $i++)
{
$randnum .= rand(0, 9);
}
$_SESSION[‘img’] = $randnum;
imageFilledRectangle($image, 0, 0, 50, 18, $white);
imageString($image, 5, 8, 2, $randnum, $black);
for ($i=0; $i<100; $i++)
{
$randColor = imageColorAllocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
imageSetPixel($image, rand(0, 50), rand(0, 18), $randColor);
}
imagePng($image);
imageDestroy($image);
?>

//评论框表单输入,加入你想要验证的地方
<tr>
<td>验证码:</td>
<td align="center"><input name="image" type="text" id="image" value="" size="50">
<img src=".xxxx.com/img.php"></td>//调入上面图片生成文件
</tr>

//判断语句,可以自行按照条件修改,我用的是which+if语句判断
else {
session_start();
if($_SESSION[‘img’]!=$_POST[‘image’]) result("对不起,验证码错误!");
}

20190725028

发表评论

电子邮件地址不会被公开。 必填项已用*标注