验证码上传文件

文件上传:

<?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>
时间: 2024-08-12 17:48:38

验证码上传文件的相关文章

Jquery上传插件Uploadify无刷新上传文件

Uploadify v3.2.1  上传图片并预览 前端JSP: <script type="text/javascript">                             $(function() {                 $("#upload_org_code").uploadify({                     'height'        : 27,                      'width' 

selenium 上传文件方法补充——SendKeys、win32gui

之前和大家说了input标签的上传文件的方式: <selenium2 python 自动化测试实战>(13)--上传文件 现在好多网站上传的标签并不是input,而是div之类的比如: 全部都是div标签,这时候用上面的方法就不好用了.今天船长在大神的帮助下学会了两种方法,现在船长来教大家上传div这种标签的方式. 最方便的--SendKeys 大家只需要pip install SendKeys库,然后再代码里直接用就OK了,这里用大鱼号上传视频作为例子上代码: 注意,浏览器用的是火狐,因为c

万家报账平台没有“上传文件”按钮的解决办法

在有的电脑没有"上传文件"的按钮? 第一步:首先检查浏览器设置. 第二步:找到IE的Internet选项菜单,开启菜单栏的根据下列方面找,如下图: 第三步:找到Internet选项后,点击,选择安全选项卡,并点击"自定义级别" 第四步:找到"将文件上载到服务器时包含本地目录路径"选择"启用".然后点击确定关闭IE,重启打开. 第五步:更新浏览器的flash版本.在百度中搜索"flash player官网"即

通过jQuery Ajax使用FormData对象上传文件

转自:http://www.cnblogs.com/labnizejuly/p/5588444.html FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". <form id="uploadForm" enctype="multipart/form-data"> <input id="file" type="file"

数据采集之Web端上传文件到Hadoop HDFS

前言 最近在公司接到一个任务,是关于数据采集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志采集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好最近都有在这方面做知识储备.正所谓养兵千日,用兵一时啊.学习到的东西只有应用到真实的环境中才有意义不是么. 环境 这里只做模拟环境,而不是真实的线上环境,所以也很简单,如果要使用的话还需要优化优化. OS Debian 8.7 Hadoop 2.6.5 SpringBoot 1.5.1.RELEASE 说明一下,这

ssh连接服务器以及scp上传文件方法

本地控制台输入 ssh [email protected]外网ip或内网ip,举例:ssh [email protected]      这是用用户名为root的用户登录192.168.133.196这个地址所在的后台.如果提示以下红色部分错误: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@

php+curl上传文件

因为公司项目用java做的,需要我这边用php上传文件.只给了个接口,参数都不明确,然后这边不提交表单,在生成pdf之后就立马上传.用了php+curl,总是没上传成功,这里看到了篇文章http://blog.sina.com.cn/s/blog_709475a101013dlf.html,希望可以借鉴.还有这篇http://www.cnblogs.com/jackluo/p/4113255.html

shell案例 - 统计用户上传文件的时间

问题与需求: 一个web服务跑论坛,每天都有很多用户会上传文件到服务器里,假设这些文件会保存在/data/www/attachment目录下,我想知道用户大概会在什么时候上传文件? 从而了解用户的行为习惯 解决思路: 1. 判断新文件是否被上传到了服务器里?以5分钟为一个间隔,进行检测. 2. 确定这些文件是什么时候被上传的? 3. 将新文件的列表输出到一个按年.月.日.时.分为名字的日志里,以方便我们进行查看分析 4. 写一个shell脚本来帮我们自动实现这个检测和记录的过程,当然只检测一次是

如何解决上传文件时文件内容相同

现在有这样一个需求:要求在上传文件时,凡是上传的文件,只要内容相同就只在服务器保存一份. 如何比较文件内容?如果当时思维受限,很难想到来比较文件内容的办法. 解决办法: 文件上传,肯定少不了用流来读文件,文件内容相同的根源就是:流读出来的字节码相同.这就想到了解决的办法,可是问题又来了.怎么比较字节码?想想那么长的字节码,如果用字符串的equals方法来比较,这不是一个好的解决办法.经过一番思考,我决定把流读出来的字节码进行MD5加密,用加密后的字符串来当作文件的文件名,然后在进行文件的上传(文