登录和验证(控制器)

<?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. Sqlserver 导出数据脚本

    编写数据压缩选项的脚本 true 要编写脚本的数据的类型 仅限数据

  2. JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作

    基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...

  3. linear-gradient----渐变

    CSS3 渐变(gradient)可以让你在两个或多个指定的颜色之间显示平稳的过渡. 以前,你必须使用图像来实现这些效果,现在通过使用 CSS3 的渐变(gradients)即可实现.此外,渐变效果的 ...

  4. Issue 7: 网络in action

    网络运维基础 基础参数 配置:IP,子网掩码,网关,dns服务器,dhcp服务器 基础应用 在网关设置上搭建VPN组网 改host文件 单台主机原则上只能配置一个网关 协议 协议是全球都遵守的一套编码 ...

  5. 1.初识Linux

    1.严格来讲,Linux不是一个操作系统,只是Linux系统的内核,它是计算机的软件与硬件连通的枢纽. 2.关机和重启指令 关机:(1)init 0   关闭前清理和更新有关信息         (2 ...

  6. python成长之路-----day1-----作业(登录程序和三级菜单)

    作业: 作业1:用户登录 1)程序说明: a.用户输入密码验证成功然后打印欢迎信息 b.如果密码错误,用户登录失败,提示用户,密码错误 c.用户输入密码错误3次,则用户锁定 d.当用户多次输入不存在的 ...

  7. (转)HTTP 长连接和短连接

    1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...

  8. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command ' finished with non-zero exit value 1

    Error:Execution failed for task ':lenovoAlbum:processReleaseResources'. > com.android.ide.common. ...

  9. 2.6 C#的标识符命名规则

    C#标识符的命名规则 程序中的变量名.常量名.类名.方法名,都叫做标识符.C#有一套标识符的命名规则,如果命名时不遵守规则,就会出错.这套规则简单说有下面三条: ①标识符只能由英文字母.数字和下划线组 ...

  10. 用花生壳实现内网映射,决解无域名、无公网IP、无服务器空间问题

    无域名.无公网IP.无服务器空间用花生壳提供的免费内网映射吧.你的PC就是服务器,花生壳提供的自定义二级域名轻松访问你的个人网站. 1.首先你得注册哦,然后申请免费的域名(2个) 2.设置路由器,下面 ...