验证码上传文件

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>

 

以上是关于验证码上传文件的主要内容,如果未能解决你的问题,请参考以下文章

验证码上传文件

生成随机验证码,上传图片文件,解析HTML

python运维开发(二十一)----文件上传和验证码+session

6月19 使用tp框架生成验证码及文件上传

ThinkPHP3验证码文件上传缩略图分页(自定义工具类session和cookie)

图片上传,图片加水印,验证码制作