本例为生成中文验证码,专为laravel而生.

//控制器:
public function getVcode(Request $request){
$width=845;
$height=125;
$fp=fopen(url('/').'/front/register/chengyu.txt','r');//打开本地文件,里面存了150条成语!一行一条.
$hang=rand(0,149);
for($i=0;;$i++){
$get=fgets($fp);
if($i==$hang)
break;
}
$text=$get;//得到的成语字符串
header('content-type:image/jpeg');
//1、创建画布
$img = imagecreatetruecolor($width,$height);
//1-1、背景颜色随机 0~125深色 126~255 浅色
$bgColor = imagecolorallocate($img,rand(126,255),rand(126,255),rand(126,255));
imagefill($img,0,0,$bgColor);
//2、写字或画画
//2-1、画点点
for($i = 0 ; $i <= ($height*$width/15) ; $i++){
$pixX = rand(5,$width-5);//随机x的位置
$pixY = rand(5,$height-5);//随机的Y的位置
$pixColor = imagecolorallocate($img,rand(0,125),rand(0,125),rand(0,125));
imagesetpixel($img,$pixX,$pixY,$pixColor);
}
//2-2、写字 $code = 'abcdefghijklmnopqrstuvwxyz';
$len = mb_strlen($text,'UTF-8');
for($j = 1 ; $j <= 4 ; $j++){
//字体大小随机从15像素~20像素
$fontSize = rand(($height/2-5),($height/2+10));
//x的位置
$fontX = ($width/ 4) * ($j-1);//25 50 75 100
//Y的位置
$fontY = $height*0.75;
//字体颜色
$fontColor = imagecolorallocate($img,rand(0,125),rand(0,125),rand(0,125));
//每次随机出来的字 $fontText = mb_substr($text,$j-1,1,'UTF-8');//读取一个汉字
//echo $fontText;
imagettftext($img,$fontSize,0,$fontX,$fontY,$fontColor,$_SERVER['DOCUMENT_ROOT'].'/front/register/FZSTK.TTF',$fontText);
}
//3、输出或保存
imagejpeg($img);
//4、解析模板
view('front.register.showvcode',['dd'=> imagejpeg($img)]);
    //5销毁资源
     image_destroy($img);
}

  主要 解决以下一个问题:

1 laravel路由和模板文件自行设计.

2 fopen打开public目录下的文件:

 $fp=fopen(url('/').'/front/register/chengyu.txt','r');

3 截取汉字,utf8格式,使用mb_substr

mb_substr($text,$j-1,1,'UTF-8');

4 ttf文件访问

$_SERVER['DOCUMENT_ROOT'].'/front/register/FZSTK.TTF'

5 变量带到模板

['dd'=> imagejpeg($img)]

6 文件保存为utf-8无bom格式,以及注意TTF到底是要输出英文还是中文!!不要搞错.

laravel中如何写验证码文件,并防止中文乱码.的更多相关文章

  1. source命令 导入.sql文件时,中文乱码 或者是注释乱码

    1.source命令 导入.sql文件时,中文乱码 或者是注释乱码 首先进入dos命令,进入mysql数据库,之后use 数据库:之后查看你的mysql数据库编码 如下命令:模糊查询变量charact ...

  2. eclipse中添加进新的java项目中文乱码

    eclipse中添加进新的java项目中文乱码 添加学习的一些项目进eclipse中,结果其中的中文注释都变成了乱码 右击项目,点最下面的属性,出来新得弹框 在文本文件编码部分可以发现是GBK格式,选 ...

  3. 如何解决jQuery easyui中locale文件下easyui-lang-zh_CN中文乱码问题

    1.在保存eclipse项目的目录下找到引入easyui-lang-zh_CN.js 2.用记事本打开该js文件,若打开后的中文正常,直接复制,粘贴到项目中的该js文件中,保存 3.若打开后中文出现乱 ...

  4. securefx 系统中不到指定文件 (转中文)

    如何处理上传工具SecureFX中的中文乱码 工具/原料   SecureFX centos7 方法/步骤  转百度知道 https://jingyan.baidu.com/article/eae07 ...

  5. Linux中文件/文本的中文乱码解决方法

    Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb18030.因此,解决Linux打开txt/c ...

  6. bat脚本启动exe并打开文件后退出 + 中文乱码

    写了个脚本用于复制模板到新的cpp文件. 将脚本路径加到环境变量里,只需在cmd窗口输入“new hdu 1419”,就会自动将模板拷贝到WORK_DIR下的hdu文件夹内一个名叫"1419 ...

  7. spingboot项目在windows环境中运行时接收参数及日志中文乱码

    1.logback.xml配置 appender中添加 <param name="Encoding" value="UTF-8" /> <co ...

  8. JAVA本地读取文件,解决中文乱码问题

    JAVA本地读取文件出现中文乱码,查阅一个大神的博客做一下记录 import java.io.BufferedInputStream;import java.io.BufferedReader;imp ...

  9. 外部调用JS文件时出现中文乱码的解决办法

    若测试网页的编码格式为:gb2312,而调用外部JS文件时出现了乱码(前提是JS文件无错误),则将调用的外部JS文件用记事本打开,然后再保存成编码格式为UTF-8的JS文件即可. 若测试网页的编码格式 ...

随机推荐

  1. hdu4607 Park Visit(树的直径)

    Park Visit Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. Eclipse 关联项目的源码

    Eclipse 关联项目的源码 1.jdk源码的关联: 一般jdk自带的类,显示其源码的方式: 用jdk自带的src.zip吧:我的JDK目录是:D:\Java\jdk1.6.0_10 , JRE目录 ...

  3. Android Runtime

    [Android Runtime] Every Android application runs in its own process, with its own instance of the Da ...

  4. R常见的几种常见统计图

    1,向日葵散点图 2,热图  (颜色越深,数值越大) 3,折线图(散点图),绘制散点图集用 paris(data.frame)

  5. ECharts-基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表

    ECharts http://ecomfe.github.com/echarts 基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算 ...

  6. app进入后台之后接收到通知,点进去进入新的页面,再次进入后台,再点击通知进入页面(,两次通过通知进入的页面,创建了两次,会多一个页面,)解决办法监听

    在点击通知进入的页面的 //UIApplicationWillResignActiveNotification是app即将进入后台的方法 //增加监听使它在进入后台之前pop上一个页面 - (void ...

  7. ZT 螨虫知识2

    病情分析:过敏是治不好的,只能做到避免接触.指导意见:螨虫的话就不要跟狗多接触,狗的寄生虫很多,还有草地,尤其是狗经常去的地方,草地就是螨虫的传播介质.你是过敏性体质除了被免过敏性源外,还要增强体质, ...

  8. JavaScript数组的一些方法集合

    数组方法集合 push()添加到数组末尾,并返回修改后数组的长度 var a=array.push('a','b'); alert(a);//2 pop() 移除数组最后一项,返回移除的项. shif ...

  9. GPU高性能计算-CUDA

    前段时间有个同学的毕设是搞并行计算的,他基本不懂编程把我拉过去帮忙,我之前也没弄过,帮着搞了2天.先把代码贴上去,等有时间在把详细补充一些内容. CUDA编程主要是利用了显卡优越的并行计算能力,把一个 ...

  10. winxp计算机管理中服务详解

    winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blo ...