您的位置:

首页 >

腾博会官网9888 >

腾博会官网9888:PHP生成制作验证码的简单实例 >

腾博会官网9888:PHP生成制作验证码的简单实例

2016-11-17 12:21:01

分类:腾博会官网9888

看完就会,不会你打我,话不多说、开搞(人狠话不多)1.0 首先先看代码<?phpheader("Content-Type:text/html;Charset=UTF-8");// 设置页面的编码风格header("Content-Type:image/jpeg");// 通知浏览器输出的是jpeg格式的图像$img = imagecreatetruecolor(150,50);//创建画布并设置大小 x轴150 y轴50$bgcolor = imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));//分配背景颜色imagefill($img, 0, 0, $bgcolor); ////把背景填充到图像imagejpeg($img); // 输出图像imagedestroy($img); // 销毁图像?>好,现在结合以上代码,来分析分析以上用到的几个函数:① imagecreatetruecolor(); imagecreatetruecolor — 新建一个真彩色图像(感觉哇,那么长,其实仔细一看挺好记的 image/create/true/color,什么是真彩色图像?往下看) resource imagecreatetruecolor ( int $width , int $height )imagecreatetruecolor() 和 imagecreate()两个函数都能创建画布resource imagecreate ( int $x_size , int $y_size )imagecreatetruecolor()建立的是一幅大小为 x和 y的黑色图像(默认为黑色[即便叫法就是真彩色图像]),如想改变背景颜色则需要用填充颜色函数 imagefill($img,0,0,$color);imagecreate 新建一个空白图像资源,用imagecolorAllocate()添加背景色上面两个函数只不过是一个功能的两种方法② imagecolorallocate();imagecolorallocate — 为一幅图像分配颜色int imagecolorallocate ( resource $image , int $red , int $green , int $blue )颜色分别用 红 绿 蓝三色组合,这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。③ mt_rand();mt_rand — 生成更好的随机数int mt_rand ( int $min , int $max )$min 可选的、返回的最小值(默认:0)  $max 可选的、返回的最大值(默认:mt_getrandmax())这里就是用来让他随机生成背景颜色,0-255随便取值。所以页面没刷新一次画布背景颜色就不一样。效果图:2.0 开始往里面做干扰线,干扰点。防止验证图像被秒识别<?phpheader("Content-Type:text/html;Charset=UTF-8");// 设置页面的编码风格header("Content-Type:image/jpeg");// 通知浏览器输出的是jpeg格式的图像$img = imagecreatetruecolor(150,50);//创建画布并设置大小 x轴150 y轴50$bgcolor = imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));//分配背景颜色//添加干扰线,并循环3次,背景颜色随机for($i=0;$i<3;$i++){ $linecolor = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imageline($img, mt_rand(0,150), mt_rand(0,50), mt_rand(0,150), mt_rand(0,50), $linecolor);}//添加干扰点,并循环25次,背景颜色随机for($i=0;$i<25;$i++){ $dotcolor = imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); imagesetpixel($img, mt_rand(0,150), mt_rand(0,60), $dotcolor);}imagefill($img, 0, 0, $bgcolor); ////把背景填充到图像imagejpeg($img); // 输出图像imagedestroy($img); // 销毁图像?>函数分析:① imageline();imageline — 画一条线段bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )imageline() 用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条线段。imageline($img, mt_rand(0,150), mt_rand(0,50), mt_rand(0,150), mt_rand(0,50), $linecolor);这里意思就是 画布$img 中从坐标 x1,y1 到 x2,y2随机② imagesetpixel();imagesetpixel— 画一个单一像素bool imagesetpixel ( resource $image , int $x , int $y , int $color )imagesetpixel() 在 image 图像中用 color 颜色在 x,y 坐标(图像左上角为 0,0)上画一个点。imagesetpixel($img, mt_rand(0,150), mt_rand(0,60), $dotcolor);具体含义同上 效果图:3.0 添加验证字母数字<?phpheader("Content-Type:text/html;Charset=UTF-8");// 设置页面的编码风格header("Content-Type:image/jpeg");// 通知浏览器输出的是jpeg格式的图像$img = imagecreatetruecolor(150,50);//创建画布并设置大小 x轴150 y轴50$bgcolor = imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));//分配背景颜色//添加干扰线,并循环3次,背景颜色随机for($i=0;$i<3;$i++){ $linecolor = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imageline($img, mt_rand(0,150), mt_rand(0,50), mt_rand(0,150), mt_rand(0,50), $linecolor);}//添加干扰点,并循环25次,背景颜色随机for($i=0;$i<25;$i++){ $dotcolor = imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); imagesetpixel($img, mt_rand(0,150), mt_rand(0,60), $dotcolor);}//添加需要验证的字母或者数字$rand_str = "qwertyuiopasdfghjklzxcvbnm1234567890";//需要使用到验证的一些字母和数字$str_arr = array(); //命名一个数组for($i = 0;$i<4;$i++){ //循环4次,就是有四个随机的字母或者数字 $pos = mt_rand(0,strlen($rand_str)-1); $str_arr[] = $rand_str[$pos];//临时交换}$x_start=150/4;//单个字符X轴位置foreach ($str_arr as $key) { $fontcolor = imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); imagettftext($img, 25, mt_rand(-15,15), $x_start, 50/2, $fontcolor, "C:/Windows/Fonts/Verdana.TTF", $key); $x_start +=20;//遍历后单个字符沿X轴 +20}imagefill($img, 0, 0, $bgcolor); ////把背景填充到图像imagejpeg($img); // 输出图像imagedestroy($img); // 销毁图像?>函数:imagettftext();imagettftext — 用 TrueType 字体向图像写入文本 array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )分析下面的代码:imagettftext($img, 25, mt_rand(-15,15), $x_start, 50/2, $fontcolor, "C:/Windows/Fonts/Verdana.TTF", $key);$img-----------画布25-----------字体的尺寸。mt_rand(-15,15)----------角度制表示的角度,0 度为从左向右读的文本。更高数值表示逆时针旋转。例如 90 度表示从下向上读的文本。(就是字体角度的问题,)$x_start----------通俗易懂的讲就是字符的X轴位置50/2----------字符的高度$fontcolor----------字符颜色"C:/Windows/Fonts/Verdana.TTF"----------字符的字体样式路径$key-----------遍历出后的字符效果:看起来还是挺可爱的。以上这篇PHP生成制作验证码的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

本文实例讲一下如何用thinkphp实现数据的删除和批量删除吧。预期效果图: 原谅博主对照片的处理是如此的草率吧。。。仍然是 通过MVC模式进行拆分:首先是视图部分: <form action="__MODULE__/Admin/User/del" method="get"> <tr> <th width="4%"><input type="checkbox" name="checkbox10" id="checkbox10"></th> <th width="13%">用户名</th> <th width="10%">真实姓名</th> <th width="13%">手机号</th> <th width="21%">邮箱</th> <th width="11%">注册时间</th> <th width="17%">操作</th> </tr> <volist name = 'adminUsers' id = 'vo'> <tr> <td><input type="checkbox" name="id[]" id="checkbox" value="{$vo.id}"> <td>{$vo.username}</td> <td>{$vo.realname}</td> <td>{$vo.telphone}</td> <td>{$vo.email}</td> <td>{$vo.resgistertime}</td> <td><a href="__MODULE__/Admin/User/modi/id/{$vo.id}">修改</a><a href="#"></a> <a href="__MODULE__/Admin/User/del/id/{$vo.id}">删除</a></td> </tr> </volist> </table> </div> <div class="input-group pull-left form"> <button type="submit" class="btn btn-danger ">删 除</button> </div> </form>仍然是采用表单传值的方法,不过这次不需要验证,因为是对数据的直接处理而非让用户输入数据,所以不必担心数据的不合法性省略了model部分。这里采用的一种比较巧妙地一种方法是将name定义为了一个数组,而在控制器中则只需要对传入的id判断一下是不是数组,省去了分开写的麻烦。接下来是控制器的部分 public function del(){ // $name = getActionName(); //作为公共的函数使用时添加 $adminUsersModel = D("adminUsers"); //获取当期模块的操作对象 $id = $_GET['id']; //判断id是数组还是一个数值 if(is_array($id)){ $where = 'id in('.implode(',',$id).')'; }else{ $where = 'id='.$id; } //dump($where); $list=$adminUsersModel->where($where)->delete(); if($list!==false) { $this->success("成功删除{$list}条!", U("Admin/User/lists")); }else{ $this->error('删除失败!'); } }以上便是全部的是全部的实现过程了,不知道这种相对巧妙地方法小伙伴们GET到了吗?原文作者:

实例一(Ajax请求基本创建格式):<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>Ajax练习(GET,不考虑浏览器兼容性)</title> <script type="text/JavaScript"> function doRequest() { //不考虑浏览器兼容性问题 var xmlHttp = new XMLHttpRequest(); //打开一个与Http服务器的连接 xmlHttp.open("GET", "Default.aspx", true); //与服务器端交互 xmlHttp.send(null); //监听服务器端响应状态的改变事件 xmlHttp.onreadystatechange = function () { //客户端与服务器端交互完成 if (xmlHttp.readyState == 4) { //服务器端返回Http状态码:200表示请求成功,404未找到,403错误 if (xmlHttp.status == 200) { //获得服务器端资源 var result = xmlHttp.responseText; alert(result); } } } } </script></head><body> <form id="form1" runat="server"> <div> <input type="button" id="btn" value="异步请求" onclick="doRequest()" /> </div> </form></body></html><head runat="server"> <title>AjaxDemo实例</title> <script src="JS/jQuery-1.4.1-vsdoc.js" type="text/javascript"></script> <script type="text/javascript"> //使用Ajax读取浏览器的工作内容 function readRequest() { //不考虑浏览器的兼容性问题 var xmlhttp = new XMLHttpRequest(); //打开一个与服务器相关的链接 //发送请求 //请求的方式(获取/发送),请求页面,是否异步 xmlhttp.open("GET", "AjaxDemo.aspx", true); //发送数据 xmlhttp.send(null); //接受服务器返回结果 xmlhttp.onreadystatechange = function() { //请求完成 if (xmlhttp.readyState == 4) { //链接成功 if (xmlhttp.status == 200) { //输出浏览器的内容 var result = xmlhttp.responseText; alert(result); window.alert("读取浏览器的内容成功!"); } } }; }; function btn_Click() { var http = new ActiveXObject("Microsoft.XMLHTTP"); //或者使用这一句创建 var xmlhttp = new XMLHttpRequest(); if (!http) { alert("创建xmlhttp对象异常!"); return false; } http.open("POST", "AjaxDemo.ashx", false); http.onreadystatechange = function() { if (http.readyState == 4) { //链接成功 if (http.status == 200) { alert(http.responseText); document.getElementById("Text1").value = http.responseText; } else { window.alert("Ajax服务器返回错误!"); } } }; http.send(); }; </script></head><body> <form id="form1" runat="server"> <div> <input id="Button1" type="button" value="使用Ajax读取浏览器的内容" onclick="readRequest()" /> <br/> <input id="Text1" type="text" />   <input id="Button2" type="button" value="获取当前时间" onclick="btn_Click()"/> </div> </form></body>实例二(见附件)考虑浏览器兼容性Ajax请求处理,获取后台xml文件内容。实例三(见附件)使用$.Ajax获取后台读取xml文件内容信息。function readXML1() { //创建XML对象 var xmldom = new ActiveXObject("Microsoft.XMLDOM"); //设置为异步 xmldom.async = "false"; //加载需要读取的XML文档 xmldom.load("XML1.xml"); info = ""; //需要读取的根节点 var node = xmldom.selectNodes("student"); //依次读取其中的内容 info = node[0].childNodes[0].nodeTypedValue + " <br/>" + node[0].childNodes[1].nodeTypedValue+ "<br/>" + node[0].childNodes[2].nodeTypedValue; document.getElementById("xmlmsg").innerHTML = info; };    function readXML2() { //实例化xml对象 var xml = new ActiveXObject("Microsoft.XMLDOM"); //异步设置 xml.async = "false"; //加载需要读取的XML文档 xml.load("XML2.xml"); info = ""; //选择需要读取的对象名称 var fnode = xml.documentElement.selectNodes("people"); //循环输出文档的内容 for (var i = 0; i < fnode.length; i++) { for (var j = 0; j < fnode[i].childNodes.length; j++) { info += fnode[i].childNodes[j].text + "<br/>"; } } document.getElementById("xmlmsg").innerHTML = info; };好了,以上所述是小编给大家介绍的Ajax和$.ajax使用实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

本文实例分析了smarty高级特性之过滤器的使用方法。分享给大家供大家参考,具体如下:高级特性中过滤器的使用1、预过滤器function remove_dw_comments($tpl_source, &$smarty){ return preg_replace("/<!--#.*-->/U","",$tpl_source); //去除原tpl文件中的注释,使其在编译后的文件中不显示}//注册预过滤器$smarty->register_prefilter("remove_dw_comments");$smarty->display("test1.tpl");test1.tpl<h1>与过滤器的使用</h1><!--#hello-->  注释的格式这样的话,注释在编译后的文件中被过滤掉2、后过滤器function add_header_comment($tpl_source, &$smarty){ return "<?php echo \"<!-- Created by Smarty! -->\n\" ?>\n".$tpl_source; //添加头部注释}//注册后过滤器$smarty->register_postfilter("add_header_comment");$smarty->display('test2.tpl');模板文件:test2.tpl头部会产生注释:<!-- Created by Smarty! -->3、输出滤镜function protect_email($tpl_output, &$smarty){ $tpl_output = preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!', '$1%40$2', $tpl_output); return $tpl_output;}// register the outputfilter$smarty->register_outputfilter("protect_email"); $smarty->display("index.tpl");}$smarty->register_outputfilter("protect_email");$smarty->display("index.tpl");希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

本文实例讲述了Yii2使用swiftmailer发送邮件的方法。分享给大家供大家参考,具体如下:'mail' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@backend/mail', 'useFileTransport' => false,//set this property to false to send mails to real email addresses //comment the following array to send mail using php's mail function 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.gmail.com', 'username' => '[email protected]', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ],],控制器:Yii::$app->mail->compose('your_view', ['params' => $params]) ->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail']) ->setTo('[email protected]') ->setSubject('This is a test mail ' ) ->send();更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

焦点访谈

最新最热的文章

更多 >

COPYRIGHT (©) 2017 Copyright ©2017 腾博会官网 网站地图

联系我们

827570882

扫描二维码分享到微信