tinkphp登录验证码的使用
登录和验证(控制器)
<?php
namespace Come\Controller;
use Think\Controller;
class RenController extends Controller
{
public function denglu()
{
//var_dump(get_defined_constants(true));
// 判断提交方式
if (IS_POST) {
// 实例化users对象
$users = D('users');
// 自动验证 创建数据集
if (!$data = $users->create()) {
// 防止输出中文乱码
header("Content-type: text/html; charset=utf-8");
exit($users->getError());
}
// 组合查询条件
$where = array();
$where['uid'] = $data['uid'];//取输入的用户名
$result = $users->where($where)->field('uid,pwd')->find();
// 验证用户名 密码
if ($data['uid'] == $result['uid']) //判断用户名是否正确
{ if ($data['pwd'] == $result['pwd']) //判断密码是否正确
{
$verify = new \Think\Verify();//取显示中的验证码
if ($verify->check(I('post.verify'))) //判断输入的验证码和显示的验证码是否一致
{
// 存储session
session('uid', $result['uid']); // 当前用户名
$this->success('登录成功,正跳转至首页...',U('Index/index'),3);
}
else
{
$this->error('登录失败,验证码不正确!');
}
}
else
{
$this->error('登录失败,密码不正确!');
}
}
else
{
$this->error('登录失败,用户名不正确!');
}
}
else
{
$this->display();
}
}
* 验证码
*/
public function verify()
{
// 实例化Verify对象
$verify = new \Think\Verify(); // 配置验证码参数
$verify->fontSize = 14; // 验证码字体大小
$verify->length = 4; // 验证码位数
$verify->imageH = 34; // 验证码高度
$verify->useImgBg = false; // 开启验证码背景
$verify->useNoise = false; // 关闭验证码干扰杂点
$verify->entry(); }
登录页面:
<body style=" background-color:#099">
<div class="container">
<!--登录-->
<div class="row">
<div class="col-xs-12 deng">
<div class="panel panel-warning p1">
<div class="panel-heading">
<h3 class="panel-title">留言板</h3>
</div>
<div class=" panel-body p2">
<div class="input-group" style="margin-top:10px;color:#5f5f5f">
<h4>请使用账号和密码登录</h4>
</div>
<form action="__ACTION__" method="post">
<div class="input-group" style="margin-top:20px">
<span class="input-group-addon">用户名</span>
<input id="uid" type="text" class="form-control" name="uid" placeholder="username" >
</div>
<div class="input-group" style="margin-top:20px">
<span class="input-group-addon">密码 </span>
<input id="pwd" type="password" class="form-control" name="pwd" placeholder="password"/>
</div>
<div class="input-group has-feedback ">
<input type="text" name="verify" class="form-control" placeholder="验证码" style="width:100px;" />
<!--<span class="glyphicon glyphicon-qrcode form-control-feedback" style="right:120px;"></span>-->
<span><img class="verify" src="{:U(verify)}" alt="验证码" onClick="this.src=this.src+'?'+Math.random()" /></span>
</div>
<div class="input-group" style="margin-top:20px">
<button id="login" type="submit" class="btn btn-danger"
>登 录</button>
</div>
</form>
</div>
</div>
</div>
</div>
</body>
//判断用户名是否正确
tinkphp登录验证码的使用的更多相关文章
- Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题
日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...
- Java实现登录验证码
登录验证码 Servlet /* 从请求中获取数据,获取验证码的session的值转为String类型, 销毁,防止返回后验证码不刷新,重新验证成功 判断验证码是否相同(忽略大 ...
- selemiun 自动化测试登录验证码处理
selemiun 自动化测试登录验证码处理 一.软件及插件的安装 1.火狐浏览器版本(55.0(x64 zh-CN):https://www.cnblogs.com/sandysun/p/783811 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十七):登录验证码实现(Captcha)
登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...
- 通过Cookie跳过登录验证码【限cookie不失效有用】
验证码,相信每个写web自动化测试的同学来说,都是个头疼的事,怎么办呢? 方法还是有的,先说今天这种方式,通过cookie绕过登录验证码 思路: 需要你通过抓包工具抓到你登录的cookie 接下来开始 ...
- 登录验证码实现(Captcha)
登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...
- Python - WebDriver 识别登录验证码
Python - WebDriver 识别登录验证码 没什么可说的直接上代码! #-*-coding:utf-8-*- # Time:2017/9/29 7:16 # Author:YangYangJ ...
- 基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
headers: {"X-CSRFToken": $("[name='csrfmiddlewaretoken']").val()},data:$(". ...
- 15.Python实现识别登录验证码(入门)
1.若想识别登录验证码,需要安装:Tesseract-OCR,其下载地址为:http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tess ...
随机推荐
- http之Session&Cookie
百度了一波session与Cookie,我发现这东西远比我想象中更复杂(可能是因为我不明白底层的运行原理).网上也是一堆的关于Session与Cookie区别/联系的文章,然而,我看完了还是一脸懵逼的 ...
- 手势响应 ,避免点击多个cell同时响应同一手势多次,只响应第一个cell
http://www.cnblogs.com/wfwenchao/articles/3700205.html UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相 ...
- 【OpenWRT】【RT5350】【二】烧写OpenWrt到RT5350开发板
烧写bin文件到开发板的方式有很多种,我采用的是通过web页面直接上传文件的方式 首先通过浏览器登陆路由器(192.168.1.1),作者的开发板已经烧好了OpenWrt并且可以通过Luci登陆,所以 ...
- 给div加上背景图片
<div class="panel-body" style="background:url('pages/upload/brief/img/bg.jpg');bac ...
- 随手记一次利用webbowser控件打开网页后cookie读取与设置
利用wininet.dll 组件读取cookie : [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError ...
- 微信支付开发(7) H5支付
关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html 本文 ...
- linux基础
用户管理: id:可以查看当前用户 whoami:查看当前的用户 who:看当前已经登录的用户 w:也可以看 添加用户:useradd name 添加用户组: useradd -g groupnam ...
- leetcode 406
该算法题就是leetcode 406题, 题目描述: Suppose you have a random list of people standing in a queue. Each person ...
- deep learning...深入学习深度学习 --工具篇
Caffe( http://caffe.berkeleyvision.org/ )是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清( http://daggerfs.c ...
- JS新API标准 地理定位(navigator.geolocation)/////////zzzzzzzzzzz
在新的API标准中,可以通过navigator.geolocation来获取设备的当前位置,返回一个位置对象,用户可以从这个对象中得到一些经纬度的相关信息. navigator.geolocation ...