老生常谈php中传统验证与thinkphp框架(必看篇)

PHP(超文本预处理器)可用于小型网站的搭建,当用户需要注册登录是,需要与后台数据库进行匹配合格才能注册和登录,传统的方式步骤繁多,需要先连接数据库再用sql语句进行插入。

<?php
header("Content-type: text/html; charset=utf-8");
$conn =mysqli_connect("localhost","root","");
if (!$conn){
   echo "<script>alert('连接失败!');history.go(-1);</script>";
  }
mysqli_select_db($conn,"liuyanban");
mysqli_query($conn,'SET NAMES utf8');
$password=$_POST['password'];
$username=$_POST['username'];
$face="yellow.png";
$result=mysqli_query($conn,"SELECT username from user1 where username = '$username'");
$a=mysqli_num_rows($result);
if($a)
{
   echo "<script language=javascript>alert('用户名已存在!');location.href='reg.html'</script>";
}
else
{
    $sql = mysqli_query($conn,"INSERT INTO user1(username,password,face)VALUES('1' ,'2','yellow.png')");
   if($sql)
   {
      echo "<script language=javascript>alert('注册成功!');location.href='login.html'</script>";
   }
   else
   {
      echo "<script>alert('注册失败!');location.href='reg.html'</script>";
   }
}
?>

以上是一个原生php注册实例,需要用mysqli_select_db()、mysqli_query()等函数先进行数据库连接,同时只有通过mysqli_query()函数才能执行sql语句,最后通过if语句进行类别判断和其他一系列限制操作。在原生php阶段实用性比较高,便于理解,过程很清晰,但是在一个项目工程中用这样的语句代码编写不便于相互交流,非常繁重复杂,所以需要运用thinkphp框架搭建项目才能使编码人员相互可以对接,也便于后期代码的修改和功能的添加。那么这里就不赘述框架详细了,所以在thinkphp框架下mvc模式中运用控制器(C)和模型(M)进行表单自动验证:

控制器中使用表单静态验证:

public function doreg(){
       $data=D('user');
       $d=array();
         $d['username']=$_POST['username'];
         $d['password']=$_POST['password'];
         $d['time']=date("Y-m-d H:i:s",time());
         $d['qq']=$_POST['qq'];
         $d['class']=$_POST['class'];
         $mess=$data->create();
         if (!$mess){    //表单自动验证
            $this->error($data->getError(),'Member/member',3);
         }else{
            $data->add();
            echo "<script language=javascript>alert('注册成功!');location.href='member.html'</script>";
           }
         }

模板中列出需要验证的字段:

<?php
namespace Home\Model;
use Think\Model;
  class UserModel extends Model{
    protected $tableName ='user';
    protected $_validate=array(                 //进行静态验证
     //array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
      array('username','require','用户名必填!'),
      array('username','','帐号名称已经存在!',0,'unique',1),
      array('repassword','password','两次密码不一致!',0,'confirm'),
      array('qq','require','qq必填!'),
      array('qq','','帐号名称已经存在!',0,'unique',1),
      array('class','require','班级必填!'),
      array('j_verify','require','验证码必须!'),
    );

  }
?>

这里以注册为例,登录类似,若验证错误,则运用$this->error($data->getError(),'Member/member',3);表单静态验证使用很方便。

以上这篇老生常谈php中传统验证与thinkphp框架(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • ThinkPHP实现生成和校验验证码功能

    使用ThinkPHP实现生成/校验验证码功能,供大家参考,具体内容如下 首先了解父类Verity.class.php(ThinkPHP/Library/Think/Verity.class.php)中的一些函数 1:check() 校验验证码是否正确 2:entry()输出验证码并把验证码的值保存的session中 3:authcode() 加密验证码(此方法在check()方法中被调用) 控制器生成验证码代码: //验证码 function verifyImg(){ //验证码配置 $cfg

  • thinkPHP中验证码的简单实现方法

    本文实例讲述了thinkPHP中验证码的简单实现方法.分享给大家供大家参考,具体如下: 运行效果图如下: 1.php端生成验证码函数 public function verify(){ // 验证码 import("@.Util.Image"); Image::buildImageVerify(4,1,'png',40,20,'verify'); } /** * 生成图像验证码 * @static * @access public * @param string $length 位数

  • Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册

    动态验证:(不需要建Model模型) 1.建一个控制器,做表单操作(包含验证) <?php namespace Biaodan\Controller; use Think\Controller; class BiaodanController extends Controller { public function test() { if(empty($_POST))//如果$_POST空,显示添加页面, { $this->show(); } else //如果$_POST不为空,走验证,验证

  • thinkPHP自动验证机制详解

    本文实例讲述了thinkPHP自动验证机制.分享给大家供大家参考,具体如下: array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间]) 1.验证字段 需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等.有个别验证规则和字段无关的情况下,验证字段是可以随意设置的,例如expire有效期规则是和表单字段无关的. 2.验证规则 要进行验证的规则,需要结合附加规则,如果在使用正则验证的附加规则情况下,系统还内置了一些常用正则验证的

  • thinkPHP实现表单自动验证

    昨天晚上我们老大叫我弄表单自动验证功能,愁了半天借鉴了好多官网的知识,才出来,诶,总之分享一下我自己的成果吧! thinkphp 在Model基类为我们定义了自动验证的函数和正则表达式,我们只需要在对应的数据库表的模型类下建立$_validate属性就可以了. 1.我们找到Model基类,可以看到 protected $_validate       = array();  // 自动验证定,它是数组类型的,下面在对应数据模型文件定义它: 2. 复制代码 代码如下: public functio

  • ThinkPHP表单自动提交验证实例教程

    本文以实例讲述了ThinkPHP表单自动提交验证的实现过程,详细步骤如下所示: 一.模板部分: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <TITL

  • 老生常谈php中传统验证与thinkphp框架(必看篇)

    PHP(超文本预处理器)可用于小型网站的搭建,当用户需要注册登录是,需要与后台数据库进行匹配合格才能注册和登录,传统的方式步骤繁多,需要先连接数据库再用sql语句进行插入. <?php header("Content-type: text/html; charset=utf-8"); $conn =mysqli_connect("localhost","root",""); if (!$conn){ echo "

  • 老生常谈spring boot 1.5.4 日志管理(必看篇)

    spring boot日志默认采用logback进行输出,你可以对logback进行定制化,方法如下: 在resources文件夹下建立logback.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- base.xml in the spring-boot jar, --> <include resource="org/sprin

  • 老生常谈Session和Cookie之间区别与联系(必看篇)

    一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为 你浏览某个网页的时候,WEB 服务器会先送一些资料放在你的计算机上,类似于你打的文字,选的一些东西什么的,Cookie 会帮你都纪录下来.当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内容给你. Cookie 的使用

  • 在Tomcat中部署Web项目的操作方法(必看篇)

    在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Manager Web应用程序 一:部署解包的webapp目录 将Web项目部署到Tomcat中的方法之一,是部署没有封装到WAR文件中的Web项目.要使用这一方法部署未打包的webapp目录,只要把我们的项目(编译好的发布项目,非开发项目)放到Tomcat的webapps目录下就可以了.如下图所示: 这时,打开Tomcat服务器(确保服务器打开),就可以在浏览器访问我们的项目了,如下

  • 老生常谈计算机中的编码问题(必看篇)

    计算机中的编码问题 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. 一.目前常用的编码 ASCII编码:由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小

  • 老生常谈Eclipse中的BuildPath(必看篇)

    什么是Build Path? Build Path是指定Java工程所包含的资源属性集合. 在一个成熟的Java工程中,不仅仅有自己编写的源代码,还需要引用系统运行库(JRE).第三方的功能扩展库.工作空间中的其他工程,甚至外部的类文件,所有这些资源都是被这个工程所依赖的,并且只有被引用后,才能够将该工程编译成功,而Build Path就是用来配置和管理对这些资源的引用的. Build Path一般包括: JRE运行库 第三方的功能扩展库(*.jar格式文件) 其他的工程 其他的源代码或Clas

  • 老生常谈PHP面向对象之命令模式(必看篇)

    这个模式主要由 命令类.用户请求数据类.业务逻辑类.命令类工厂类及调用类构成,各个类的作用概括如下: 1.命令类:调用用户请求数据类和业务逻辑类: 2.用户请求数据类:获取用户请求数据及保存后台处理后返回的结果: 3.业务逻辑类:如以下的示例中验证用户登陆信息是否正确的功能等: 4.命令工厂类(我自己取的名字,哈哈):生成命令类的实例,这个类第一次看的时候我觉得有点屌,当然看了几遍了还是觉得很屌 :): 5.调用类:调用命令类,生成视图: 直接看代码: //命令类 abstract class

  • 老生常谈Java String字符串(必看篇)

    Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "hello";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("hello"); 对于这样的常识,不再赘述. 首先String类是final类,为什么定义成final形式呢? 简单点说,对于如此高频率被使用的数据类型,设计者们认为已经设计的足够优秀了,不需要被继承,否则胡乱继承重写可能会降低程序的性能. 正如标题所述,既然深入,那我们

  • 老生常谈Java字符串进阶(必看篇)

    前言 最常用的对字符串操作的类有三个,分别是String,StringBuilder,StringBuffer,下面将会详细的说说这三个类...... String String类代表字符串,这个是最基本的对字符串的类,这个也是使用比较多的类,这里就不再详细介绍了 构造 new String(String str) new String(StringBuilder str) new String(StringBuffer str) new String(byte[] bys,String cha

  • 老生常谈python的私有公有属性(必看篇)

    python中,类内方法外的变量叫属性,类内方法内的变量叫字段.他们的私有公有访问方法类似. class C: __name="私有属性" def func(self): print(C.__name) class sub_C(C): def info(self): print(C.__name)#派生类中不可以访问父类的私有字段 obj=C() obj.func() obj=sub_C() obj.info() 方法.属性的访问于上述方式相似,即:私有成员只能在类内部使用 以上这篇老

随机推荐