登录和验证(控制器)

<?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登录验证码的使用的更多相关文章

  1. Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题

    日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...

  2. Java实现登录验证码

    登录验证码 Servlet /* 从请求中获取数据,获取验证码的session的值转为String类型,       销毁,防止返回后验证码不刷新,重新验证成功       判断验证码是否相同(忽略大 ...

  3. selemiun 自动化测试登录验证码处理

    selemiun 自动化测试登录验证码处理 一.软件及插件的安装 1.火狐浏览器版本(55.0(x64 zh-CN):https://www.cnblogs.com/sandysun/p/783811 ...

  4. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十七):登录验证码实现(Captcha)

    登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...

  5. 通过Cookie跳过登录验证码【限cookie不失效有用】

    验证码,相信每个写web自动化测试的同学来说,都是个头疼的事,怎么办呢? 方法还是有的,先说今天这种方式,通过cookie绕过登录验证码 思路: 需要你通过抓包工具抓到你登录的cookie 接下来开始 ...

  6. 登录验证码实现(Captcha)

    登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...

  7. Python - WebDriver 识别登录验证码

    Python - WebDriver 识别登录验证码 没什么可说的直接上代码! #-*-coding:utf-8-*- # Time:2017/9/29 7:16 # Author:YangYangJ ...

  8. 基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示

    headers: {"X-CSRFToken": $("[name='csrfmiddlewaretoken']").val()},data:$(". ...

  9. 15.Python实现识别登录验证码(入门)

    1.若想识别登录验证码,需要安装:Tesseract-OCR,其下载地址为:http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tess ...

随机推荐

  1. http之Session&Cookie

    百度了一波session与Cookie,我发现这东西远比我想象中更复杂(可能是因为我不明白底层的运行原理).网上也是一堆的关于Session与Cookie区别/联系的文章,然而,我看完了还是一脸懵逼的 ...

  2. 手势响应 ,避免点击多个cell同时响应同一手势多次,只响应第一个cell

    http://www.cnblogs.com/wfwenchao/articles/3700205.html UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相 ...

  3. 【OpenWRT】【RT5350】【二】烧写OpenWrt到RT5350开发板

    烧写bin文件到开发板的方式有很多种,我采用的是通过web页面直接上传文件的方式 首先通过浏览器登陆路由器(192.168.1.1),作者的开发板已经烧好了OpenWrt并且可以通过Luci登陆,所以 ...

  4. 给div加上背景图片

    <div class="panel-body" style="background:url('pages/upload/brief/img/bg.jpg');bac ...

  5. 随手记一次利用webbowser控件打开网页后cookie读取与设置

    利用wininet.dll 组件读取cookie : [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError ...

  6. 微信支付开发(7) H5支付

    关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html 本文 ...

  7. linux基础

    用户管理: id:可以查看当前用户 whoami:查看当前的用户 who:看当前已经登录的用户  w:也可以看 添加用户:useradd name 添加用户组: useradd -g groupnam ...

  8. leetcode 406

    该算法题就是leetcode 406题, 题目描述: Suppose you have a random list of people standing in a queue. Each person ...

  9. deep learning...深入学习深度学习 --工具篇

    Caffe( http://caffe.berkeleyvision.org/ )是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清( http://daggerfs.c ...

  10. JS新API标准 地理定位(navigator.geolocation)/////////zzzzzzzzzzz

    在新的API标准中,可以通过navigator.geolocation来获取设备的当前位置,返回一个位置对象,用户可以从这个对象中得到一些经纬度的相关信息. navigator.geolocation ...