验证码上传文件
Posted 单大源
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证码上传文件相关的知识,希望对你有一定的参考价值。
文件上传:
<?php namespace Home\Controller; use Think\Controller; header("content-Type: text/html; charset=Utf-8"); class TestController extends Controller //如果不继承父类它就不是一个操作方法。 { public function shangchuan(){ $this->show(); } public function wjsc(){ $u = new \Think\Upload(); //使用这句话来把文件上传的对象给造出来(造对象)。造好对象后就可以使用这个对象里面的方法来进行文件上传了。 $u->maxSize = 1024000; //设置文件大小 最大只能到这么大 $u->rootPath = "./Public/"; //设置文件存放的根路径。 $u->savePath = "./upload/"; //设置当前上传的文件存放的位置 $u->exts = array(‘jpg‘, ‘gif‘, ‘png‘, ‘jpeg‘); $info = $u->upload(); //上传文件并且返回文件信息 if($info){ echo "上传成功,文件存放在: {$info["file"][‘savepath‘]}"; //返回的文件信息$info是个二维数组。$info是个关联数组,因为它支持多文件一起上传,索引应该是文件选择的form表单中的name值。 //$info它里面存的信息是多个文件的信息。是个二维数组。 }else{ echo $u->getError(); } } }
模板文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="__ROOT__/Public/js/jquery-1.11.2.min.js"></script> </head> <body> <h1>文件上传</h1> <form action="__CONTROLLER__/wjsc" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上传" /> </form> </body> </html>
验证码学习:
控制器的类文件 TestController.class.php
<?php namespace Home\Controller; use Think\Controller; header("content-Type: text/html; charset=Utf-8"); class TestController extends Controller //如果不继承父类它就不是一个操作方法。 { public function yanzheng(){ $this->show(); } //用来生成验证码的操作方法: public function yzm(){ $v = new \Think\Verify(); //先造一个验证码的对象出来。 //$v->useImgBg = true; //如果把这个背景图打为true后,验证码的背景图会随机变换。 //$v->fontSize = "56px"; //设置验证码字体的大小 //$v->imageW = "100"; //调整验证码图片的大小 //$v->imageH = "30"; //$v->length = 2; //设置验证码的位数 //$v->useZh = true; //开启了中文验证码 需要加字体文件。 //$v->fontttf = "simhei.ttf"; //生成中文验证码 $v->entry(); //生成验证码 } //用来验证验证码的操作方法: public function yz(){ $yzm = $_POST["yzm"]; //首先把用户给的验证码取出来 $v = new \Think\Verify(); //然后去验证用户给的验证码对不对,造验证码对象。 if($v->check($yzm)){ //把用户输入的验证码放进去就可以用check方法来检验了。这里如果验证成功就返回true,验证错误就返回false。 $this->ajaxReturn("OK","eval"); }else{ $this->ajaxReturn("NO","eval"); } //这个验证码使用起来非常简单,生成的话造完对象之后调生成的方法。验证的话,造完对象之后调验证的方法。并且把用户给的值,扔到括号里面作为参数就可以了 } }
模板文件yanzheng.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="__ROOT__/Public/js/jquery-1.11.2.min.js"></script> </head> <body> <h1>验证码</h1> <img src="__CONTROLLER__/yzm" id="img"/> <input type="text" name="yzm" id="txt" /> <input type="button" id="btn" value="验证" /> </body> <script type="text/javascript"> $("#btn").click(function(){ var yzm = $("#txt").val(); //取到用户输入的验证码 $.ajax({ url:"__CONTROLLER__/yz", //指向哪一个验证方法来验证呢 data:{yzm:yzm}, type:"POST", dataType:"TEXT", success:function (data){ if(data.trim()=="OK"){ alert("成功"); }else{ alert("失败"); } } }); }) //更换验证码的方法就是在点击事件里面给它重新赋一个src就可以了。 $("#img").click(function(){ //当我点击这张图的时候,我让它的src属性重新改一下,改完src属性之后,这个属性会重新去请求一遍的。只要改了就能重新请求。所以这样就能重新生成验证码。 var sjs = Math.floor(Math.random()*100); //以后做点击更换验证码的时候,一定要加上一个随机数,以防它出现这种缓存的情况。不给你刷新的情况,加上随机数后让每一次都变得不一样,不一样的话点击后就重新刷新了。 $(this).attr("src","__CONTROLLER__/yzm/code/"+sjs); }) </script> </html>
模板文件yz.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="__ROOT__/Public/js/jquery-1.11.2.min.js"></script> </head> <body> <form action="__ACTION__" method="post"> <input type="text" name="Uid" id="uid" /><span id="ts"></span> <input type="submit" value="验证"/> </form> </body> <script type="text/javascript"> $("#uid").blur(function(){ var uid = $(this).val(); $.ajax({ url:"__ACTION__", data:{Uid:uid}, type:"POST", dataType:"TEXT", success:function(data){ if(data.trim()=="OK"){ $("#ts").html("验证通过"); }else{ $("#ts").html("用户名不能为空"); } } }); }) </script> </html>
以上是关于验证码上传文件的主要内容,如果未能解决你的问题,请参考以下文章
python运维开发(二十一)----文件上传和验证码+session