php生成动态的验证码,是php防止恶意登陆或者注册等常规手段-废话不多说,直接看例子。(只是一个简单的应用,如果要安全或者更复杂的,请期待我以后的文章)
PHP生成验证码核心文件 (checks.php):
<?php /*成生随机的验证码。此实例只是一个简单的例子,如果不想被人识别,还可以加噪点等干扰技术*/ session_start(); //启动session header("Content-type:image/x-png"); //设置创建图像的格式 $image_width = 70; //设置图像的宽度 $image_height = 18; //设置图像的高度 srand(microtime()*100000); //设置随机数的种子。 --这里关于srand和microtime函数请自行查阅php手册 for($i=0; $i<4; $i++) //循环输出一个4位数的随机数 { $new_number.=dechex(rand(0,15)); //将十进制随机数转为十六进制 } /*将获取的随机数验证码写入到Session变量中 --这里注意php的变量作用范围,和别的高级语言可能有些 不同,所以要理解,自己去查手册*/ $_SESSION['check_checks'] = $new_number; $num_image = imagecreate($image_width,$image_height); //创建一个画布 imagecolorallocate($num_image,255,255,255); //设置画布的颜色 for($i=0; $i<strlen($_SESSION['check_checks']); $i++) //循环读取session变量中的验证码 { $font = mt_rand(3,5); //设置随机的字体大小 $x = mt_rand(1,8)+$image_width*$i/4; //设置随机字符所在的位置的X坐标 $y = mt_rand(1,$image_height/4); //设置随机字符所在的位置的Y坐标 //设置字符的颜色 $color = imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)); //水平画出一行字符串 --输出字符,此函数自行查阅php手册。要GD2库支持 imagestring($num_image,$font,$x,$y,$_SESSION['check_checks'][$i],$color); } imagepng($num_image); //生成png格式的图像 imagedestroy($num_image); //结束图像,释放资源 ?>