6月19 使用tp框架生成验证码及文件上传
ThinkPHP中自带能生成验证码的类:ThinkPHP/Library/Think/Verify.class.php
默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体
汉字的验证码:ThinkPHP/Library/Think/Verify/zhttfs/添加中文的字体格式
更改字体:ttf格式
关于验证码的一些知识点:



1.例题:通过验证码实现用户的登录,并利用jquery实现点击图片验证码进行新的刷新
LoginController.class.php(Login方法和yzm方法)
<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller
{
public function Login()
{
if(empty($_POST))
{
$this->display();
}
else
{
//判断验证码是否正确
$code = $_POST["yzm"];
$verify = new \Think\Verify();
if($verify->check($code))
{
if($_POST["uid"]!="")
{
$model = D("users"); $uid = $_POST["uid"];
$pwd = $_POST["pwd"]; $attr = $model->field("Pwd")->find($uid);
//echo $attr["pwd"]; if($pwd == $attr["pwd"])
{
session("uid",$uid);
$this->success("登录成功","Main");
}
else
{
$this->error("登录失败");
}
}
else
{
$this->error("登录失败");
} }
else
{
$this->error("验证码错误");
}
}
} //生成验证码的操作
public function yzm()
{
$config = array(
'fontSize' => 30, // 验证码字体大小
//'length' => 3, // 验证码位数
//'useNoise' => false, // 关闭验证码杂点
'imageW' => 300,
'imageH' => 90,
'useZh' => true,
'fontttf' => 'STXINWEI.TTF',
); $Verify = new \Think\Verify($config);
//$Verify->fontttf = '7.ttf'; // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->entry();
}
}
Login.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="../../../../../jquery-1.11.2.min.js"></script>
</head> <body>
<h1>在这里登录好了</h1>
<form action="__ACTION__" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:<input type="password" name="pwd" /></div>
<div>验证码:<input type="text" name="yzm" /><img id="yzm" src="__CONTROLLER__/yzm" /></div>
<input type="submit" value="登录" /> </form>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) {
$("#yzm").click(function(){
//点击图片验证码改变
$(this).attr("src","__CONTROLLER__/yzm"); })
});
</script>
显示效果:

当其中一个输入错误时都不能实现登录:

2.文件上传
文件上传使用Think/Upload.class.php
关于savePath和rootPath
1.rootPath文件上传保存的根路径(一开始要规定的)$upload->rootPath = './Public/';
2.savePath文件上传的保存路径(相对于根路径) $upload->savePath = 'Uploads/'; // 设置附件上传目录
//3. 上传成功 获取上传文件信息,$info遍历上传的路径
foreach($info as $file)
{
echo $file['savepath'].$file['savename'];
}
输出的结果:Uploads/2016-06-20/slide3.jpg
4.$upload->saveName = '';//保持上传文件名不变


命名规则:

2例子:文件上传:
LoginController.class.php中的方法ShangChu
//文件上传
public function ShangChuan()
{
if(empty($_FILES))
{
$this->display();
}
else
{
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Public/';
$upload->savePath = 'Uploads/'; // 设置附件上传目录
$upload->saveName = '';//保持上传文件名不变 // 上传文件
$info = $upload->upload();
//var_dump($info); if(!$info)
{
$this->error($upload->getError());
}
else
{
// 上传成功 获取上传文件信息
foreach($info as $file)
{
echo $file['savepath'].$file['savename'];
//$this->success('上传成功!');
}
} }
}
ShangChu.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>
</head> <body>
<form action="__ACTION__" enctype="multipart/form-data" method="post" > <input type="file" name="photo" />
<input type="submit" value="提交" > </form>
</body>
</html>
最后的结果是:
Public文件夹下新建的Upload目录下的

6月19 使用tp框架生成验证码及文件上传的更多相关文章
- PHP之ThinkPHP框架(验证码、文件上传、图片处理)
验证码 验证码是框架自带有的,比之前使用GD库简单方便许多,其实现原理基本相似,都是生成图片,保存验证码值到Session中,表单提交验证码,然后进行值的对比验证. 简单的显示: <form ...
- node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传
node.js下四种post提交数据的方式 今天说分享的是其中一种,就是上传文件. Express 4.0 以后,将功能原子化,高内聚,低耦合,独立出了很多中间件 今天主要分享文件上传 对于conne ...
- ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)
验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...
- 自定义MVC框架之工具类-文件上传类
截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...
- ThinkPHP讲解(十一)——验证码和文件上传
一.验证码 1.页面前端显示 (验证码是图片标签,来源是控制器里的yzm()操作方法) <h1>登录</h1> <form action="__ACTION__ ...
- Thinkphp 验证码、文件上传
一.验证码 验证码参数 例题:登录时验证下验证码 LoginController.class.php <?php namespace Home\Controller; use Think\Con ...
- java框架篇---struts之文件上传和下载
Struts2文件上传 Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传.上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的 ...
- MVC+WCF框架下广告位管理——文件上传
广告位是站点中不可缺少的内容之中的一个.也是能直接给我们站点带来经济收益的内容之中的一个. 好的广告位不仅不会强宾压主,而会为我们的站点锦上添花.起到画龙点睛的作用.因此设计好广告位也是开发过程中一大 ...
- Python Web框架篇:Django文件上传
上传方式: - Form表单上传文件 - Ajax上传文件 - 基于form表单和iframe自己实现ajax请求 1,创建项目 2,settings配置(注册app01,static路径等等这些)及 ...
随机推荐
- SQL SERVER查询的临时文件路径
C:\Users\用户\Documents\SQL Server Management Studio\Backup Files C:\Users\用户\AppData\Local\Temp\
- 【English】【托业】【四六级】写译高频词汇
大家都知道,四六级翻译每次考的话题不可能原句直接重复,但是,在研究了近几年的四六级真题后,我们惊奇地发现: 写译词汇在重复考! 写译词汇在重复考! 写译词汇在重复考! 因此,小编为大家整理了四六级写译 ...
- PyQt5的安装及基本配置
安装PyQt5 注:Pyqt5只支持python3.5以上版本 Mac安装 Mac上使用编译安装的话,后面使用pyinstaller打包可能会出问题,推荐使用命令行一键安装,Linux如果包管理没有的 ...
- Redis入门到高可用(二十)——Redis Cluster
一.呼唤集群 二.数据分布概论 三.哈希分布 1.节点取余 2.一致性哈希 添加一个node5节点时,只影响n1和n2之间的数据 3.虚拟槽分区 四.基本架构 五.redis clust ...
- 关于 ionic3 tabs 导航ico 点击 页面返回顶部
类似微信 双击 页面返回顶部功能,ionic3 中有一个 Content. 将 import { Content } from 'ionic-angular'; 放入想要实现此功能的 ts中. 实例化 ...
- c++赋值构造函数为什么返回引用类型?
目录 0 前言 1 内置类型 2 自定义类型 3 结论 4 源码 0. 前言 c++默认赋值构造函数的返回值是引用类型,c++赋值运算符=的本意是返回左值的引用,我们重载赋值构造函数的时候,返回值是否 ...
- Linux环境sftp配置
1.查看SSH版本,openssh版本必须大于4.8p1 ssh -V 2.创建用户组 groupadd sftp-users 3.在sftp-users用户组下创建admin,admin不用于登录系 ...
- phpstorm2018激活方法
直接用浏览器打开 http://idea.lanyus.com/点击页面中的“获得注册码”,然后在注册时切换至Activation Code选项,输入获得的注册码一长串字符串如果提示红字体信息,那么先 ...
- Pandas截取列的一部分
以股票代码为例: 型式为:6位数字+"."+交易所代码,如600028.SH 如只需保留前6位: pattern = '(\w+)(?:.SZ|.SH)$' df['股票代码'] ...
- 【题解】Luogu P4054 [JSOI2009]计数问题
原题传送门 我自闭了qaq 这道题非常简单,因为1<=c<=100,所以直接对每个c开二维树状数组,操作就跟模板一样 写码5分钟,调码半小时,这道题的输入顺序是x1,x2,y1,y2,我真 ...