我在网上有这个简单的验证码。我喜欢它,并且我编辑它以适应我的网站,但是想知道是否有人可以编辑它以在验证码本身添加一些随机线,因为它有点过于简单。
我确实找到了有关如何操作的教程,但它对我不起作用。
这是简单的验证码脚本;我很想修改它,以便在验证码上出现一些随机线:
$width = 150;
$height = 24;
$length = 5;
$font = 'caviardreams.ttf';
$font_size = 14;
$bg_color = array(245, 245, 245);
$chars = 'ABCDEFGHKMNPQRSTUVWXYZ23456789';
session_start();
//putenv('GDFONTPATH=' . realpath('.'));
$img = imagecreatetruecolor($width, $height);
$bkgr = imagecolorallocate($img, $bg_color[0], $bg_color[1], $bg_color[2]);
imagefilledrectangle($img, 0, 0, $width, $height, $bkgr);
$code = '';
for($i = 0; $i < $length; $i++)
{
$code .= $chr = $chars[mt_rand(0, strlen($chars)-1)];
$r = rand(0, 192);
$g = rand(0, 192);
$b = rand(0, 192);
$color = imagecolorallocate($img, $r, $g, $b);
$rotation = rand(-35, 35);
$x = 5+$i*(4/3*$font_size+2);
$y = rand(4/3*$font_size, $height-(4/3*$font_size)/2);
imagettftext($img, $font_size, $rotation, $x, $y, $color, $font, $chr);
}
$_SESSION['random_txt'] = md5($code);
header("Content-type: image/png");
header("Expires: Mon, 01 Jul 1998 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
imagepng($img);
imagedestroy($img);
答案 0 :(得分:2)
之前:
$_SESSION['random_txt'] = md5($code);
插入:
for ($i=0;$i<100;$i++)
imageline($img,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$width),mt_rand(0,$height),imagecolorallocate($img,rand(0,63),rand(0,63),rand(0,63)));
答案 1 :(得分:0)
鉴于您希望坚持使用该脚本,您可以查看this scripts源代码并了解设计模式的执行方式。很抱歉,如果这不是您要找的答案。我要强调的部分是:
/* generate random lines in background */
/* generate random dots in background */
这些项目似乎都在您想要做的事情上。