随机生成验证码

来源:互联网 发布:捷克宫刑知乎 编辑:程序博客网 时间:2024/06/01 10:18
<?php //随机生成一个4位数的数字验证码 $num=rand(1000,9999);//"";// for($i=0;$i<4;$i++){// $num .= rand(0,9);// } //4位验证码也可以用rand(1000,9999)直接生成 //将生成的验证码写入session,备验证页面使用 Session_start();$_SESSION["Checknum"] = $num; //创建图片,定义颜色值 Header("Content-type: image/PNG"); srand((double)microtime()*1000000); $im = imagecreate(66,30);$black = ImageColorAllocate($im, 0,0,0);$gray = ImageColorAllocate($im, 237,237,237); //200,200,200 改成和背景一个灰色 2017-2-17 imagefill($im,0,0,$gray); //随机绘制两条虚线,起干扰作用 $style = array($black, $black, $black, $black, $black, $gray, $gray, $gray, $gray, $gray); imagesetstyle($im, $style); $y1=rand(0,28); $y2=rand(0,28); $y3=rand(0,28); $y4=rand(0,28); imageline($im, 0, $y1, 66, $y3, IMG_COLOR_STYLED); imageline($im, 0, $y2, 66, $y4, IMG_COLOR_STYLED); // 少画一条线//在画布上随机生成大量黑点,起干扰作用; for($i=0;$i<60;$i++) { imagesetpixel($im, rand(0,66), rand(2,28), $black); } //将四个数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成 $strx=6;//rand(5,12); $text_color = imagecolorallocate($im, 0, 0, 185);//蓝色 // imagecolorallocate($im, 233, 14, 91); 红色 255,0,0 大红 $font='C:\Windows\Fonts\arial.ttf'; for($i=0;$i<4;$i++){ $strpos=24;//rand(2,7); //imagestring($im,5,$strx,$strpos, substr($num,$i,1), $text_color); ImageTTFText($im, 18, 10, $strx, $strpos, $text_color, $font, substr($num,$i,1)); //imagettftext($im, 20, 0, 10, 20, $text_color,$font,"a"); $strx+=14;//rand(8,14); } ImagePNG($im); ImageDestroy($im); ?>登录页输出验证码function imgclick(){ reflash();}function reflash(){ document.getElementById("xxx").src ="xxx.php?tm="+Math.random();}