2.准备中文
3.把中文写入到画布
imagettftext:须要一个字体作为参数
4.输出或者保存
5.销毁画布资源
前台与后台的差异?
前台是指的用户去访问的界面,项目为用户访问所写的那些代码;后台是用于管理员管理的那部分代码。从区分用户的角度出发。
前端与后真个差异?
前端指的是那些html+css+js,后端指的是做事器真个脚本,如PHP等,从事情内容的角度出发。
美工和程序员的差异?美工做前端,程序员做后端
前台和后台都须要美工和程序员。
代码见demo01_chinisecaptcha.php
<?php
//header('Content-type:text/html;charset=utf-8');
//中文验证码
//准备好须要制作验证码的中笔墨符(多放字符,这里我只放了几个)
$str=\"大众的一是在了反面有大这主中人上为们地个用工时要动国产以\"大众;
//准备画布
$im = imagecreatetruecolor(400,200);
//给画布上色
$bg = imagecolorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagefill($im,0,0,$bg);
//得到要写入的字符串(中文)
//你好天下
//0 1 2 3 4 5 6 7 8 9 10 11
//1. 获取字符串长度
$len = strlen($str);
//声明$last
//$last = '';
for($i = 0 ;$i < 4;$i++){
//2. 得到随机的字节的位置
$rand = mt_rand(0,$len - 1);
//3. 判断得到的字节的位置
if($rand%3 == 0){
//所在位置为汉字的起始位置
$last = substr($str,$rand,3); //====== $last = $last . substr($str,$rand,3)
}elseif($rand%3 == 1){
//所在位置的前一位是汉字的起始位置
$last = substr($str,$rand - 1,3);
}elseif($rand%3 == 2){
//所在位置的前两位是汉字的起始位置
$last = substr($str,$rand - 2,3);
}
//echo $last;
//把笔墨写入到画布上
//笔墨上色
$text_color = imagecolorallocate($im,mt_rand(50,150),mt_rand(50,150),mt_rand(50,150));
//得到每个汉字的一个随机位置,横坐标上是顺移,纵坐标随机
switch($i){
case 0:
$width = 50;
break;
case 1:
$width = 150;
break;
case 2:
$width = 250;
break;
case 3:
$width = 350;
break;
}
//imagestring
//imagestring($im,5,200,100,$last,$text_color);
//把稳:imagettftext只能写utf-8格式的中文,如果当前文件的字符集不是utf-8,须要利用iconv函数先将字符转成utf-8格式再写
imagettftext($im,30,mt_rand(0,360),$width,mt_rand(50,150),$text_color,'STHUPO.TTF',$last);
}
//输出图片
header('Content-type:image/png');
imagepng($im);
//销毁图片资源
imagedestroy($im);