ThinkPhp框架:父类及表单验证

这个知识点,就可以通过“登录”和“注册”的页面来学习这个知识点了
首先先做一个“登录”功能
一、登录功能(父类)
(1)登录的控制器
在我的控制器文件夹中新建一个登陆控制器
我的路径是这样的:

然后里面要书写正确才可以,其中要有命名空间,还有继承父类的控制器


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?php

namespace Home\Controller;

use Think\Controller;

class LoginController extends Controller

{

    public function denglu()

    {

        if(empty($_POST))   //判断传过来的值是不是空的

        {

            $this->show();   //空的显示页面

        }

        else

        {

                

        }

    

    }

}

(2)编写登录的页面 

我的这个页面我放在了

这个登录页面都是写过很多遍了,就不解释了,这里用的还是表单元素


1

2

3

4

5

6

7

<form action="__ACTION__" method="post">

    <div>用户名:<input type="text" name="uid" /></div>

    <br />

    <div>密 码:<input type="password" name="pwd" /></div>

    <input type="submit" value="登录" />

        

</form>

看下基本的运行页面效果!!注意浏览器的地址栏的书写:http://localhost/tp/index.php/Home/Login/denglu

(3)补充php页面中的否则语句


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

else

{

    $u = M("user");  //造表  

    $uid $_POST["uid"];  //接收传出过来得用户名

    $pwd $_POST["pwd"];  //接收传过来的密码

    $attr $u->find($uid);  //查找一条数据

    f($attr["password"]==$pwd && !empty($pwd))  //判断密码是不是相等还有是不是空的

    {

        session("uid",$uid);  //session存住用户名

        $this->success(‘登录成功!‘,U(‘Home/shouye‘));   //跳转页面("提示信息","跳转的页面","时间")

    }

    else

    {

        $this->error("登录失败!");  

    }

}

运行看下结果:

1)输入账号和密码,密码是错误的时

2)输入账号和密码,密码是正确的时

3)时间已过,跳转到首页面

这样有个bug就是,这个首页即使没有登录也可以查看这个页面,所以我们要加一个条件,来判断这个没有登录时,不能走这个页面,也就是返回登录页面,但是每个方法都要判断就会显得很繁琐,又不能直接修改原控制器文件,所以,可以在他们之间在建一个控制器文件,作为他们的桥梁

(4)搭建的他们之间的桥梁

(4.1)新建的一个控制器类文件


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?php

namespace Home\Controller;

use Think\Controller;

class FuController extends Controller

{

    //如果一个类要实例化,要使用一个构造方法__construct()

    public function __construct()

    {

        //调用父类的构造:执行父类之后再用自己的

        parent::__construct(); 

        

        //判断session是否存在

        if(!session(‘?uid‘))

        {

          $this->success(‘请先登录!‘,U(‘Login/denglu‘));

          exit;

        }  

        

    }

}

(4.2)这样之后,将除了Login的控制器外,其他的都要修改成这桥梁控制器类


1

2

3

4

5

namespace Home\Controller;

use Home\Controller\FuController;  //使用桥梁的控制器类

class HomeController extends FuController  //继承的就不是原类了,而是写的控制器类文件

{

}

运行之后查看效果,直接登录首页的页面,会出现下面的页面

   

二、注册功能(表单验证)

自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。

其中有两种验证:静态验证和动态验证

(1)静态验证

注意:静态定义方式因为必须定义模型类,所以只能用D函数实例化模型

1.我们可以在IndexController.class.php类文件中新建一个方法


1

2

3

4

5

6

7

8

9

10

11

public function zhuce()

{

    if(empty($_POST))

    {

        $this->show();  

    }  

    else

    {

        //使用后面的验证信息        

    }

}   

2.在View文件中新建一个Index文件夹,新建注册的显示页面

注意:如果使用收集表单元素,里面的name要和数据库中的保持一致


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<form action="__ACTION__" method="post">

    <div>用户名:<input type="text" name="uid" /></div>

    <br />

    <div>密 码:<input type="password" name="pwd" /></div>

    <br />

    <div>确认密码:<input type="password" name="pwd" /></div>

    <br />

    <div>姓名:<input type="password" name="amen" /></div>

    <br />

    <div>性别:<input type="password" name="pwd" /></div>

    <br />

    <div>年龄:<input type="password" name="pwd" /></div>

     <input type="submit" value="注册" />

        

</form>   

看下运行效果

3.添加表单验证

(1)静态验证

注意:在模型类里面通过$_validate属性定义验证规则。

这里要新建一个模板文件UserModel.class,记得要在Model文件夹中


1

2

3

4

5

6

7

8

9

10

<?php

namespace Home\Model;

use Think\Model;

class UserModel extends Model

{

  //在表单验证的时候,要用这个定义$_validate

  protected $_validate array(    

    array(‘验证字段‘,‘验证规则‘,‘验证码必须!‘),   //这就是验证的条件

  );

}

再写验证的时候要记住一下几点:

(1)验证字段 (必须)

需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。有个别验证规则和字段无关的情况下,验证字段是可以随意设置的,例如expire有效期规则是和表单字段无关的。如果定义了字段映射的话,这里的验证字段名称应该是实际的数据表字段而不是表单字段。

(2)验证规则 (必须)

要进行验证的规则,需要结合附加规则,如果在使用正则验证的附加规则情况下,系统还内置了一些常用正则验证的规则,可以直接作为验证规则使用,包括:require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字。

(3)提示信息 (必须)

用于验证失败后的提示信息定义

(4)验证条件 (可选)

包含下面几种情况:

  • self::EXISTS_VALIDATE 或者0 存在字段就验证(默认)
  • self::MUST_VALIDATE 或者1 必须验证
  • self::VALUE_VALIDATE或者2 值不为空的时候验证
(5)附加规则 (可选)

配合验证规则使用,包括下面一些规则:

(6)验证时间(可选)
  • self::MODEL_INSERT或者1新增数据时候验证
  • self::MODEL_UPDATE或者2编辑数据时候验证
  • self::MODEL_BOTH或者3全部情况下验证(默认)

这里的验证时间需要注意,并非只有这三种情况,你可以根据业务需要增加其他的验证时间。

4.我们可以让上面的注册页面再一些时候显示验证信息

  4.1用户名为空时,提示信息


1

2

3

protected $_validate array(    

    array(‘uid‘,‘require‘,‘用户名不能为空!‘),   //判断用户名是不是空的

);

  4.2怎么使用这个验证信息,我们要在IndexController.class.php类文件中编写


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

public function zhuce()

{

  if(empty($_POST))

  {

    $this->show();  

  }

  else

  {

    $u = D("user");  //造模型对象

    $r $u->create();  //自动验证字段

    if($r)

    {

      //$u->add();   //添加到数据库

    }

    else

    {

      exit($u->getError());  //显示错误信息

    }

  }

}

  4.3运行可以看下结果

这是静态验证,不能出现在文本框的后面,这样可以用动态验证,其他的条件可以根据注意的那几条自己进行练习

(2)动态验证

注意:使用模型类的validate方法动态创建自动验证规则。

总的来说就是要用ajax来写,给想要显示验证的上添加一个id,便于传值;而且也要引入jQuery文件


1

<script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script>

主体中的内容


1

2

<div>用户名:<input type="text" name="uid" id="uid" /></div>  <!--给个id名-->

<span id="tishi"></span>  <!--显示提示的地方-->

js的编写


1

2

3

4

5

6

7

8

9

10

11

12

13

14

<script type="text/javascript">

    $("#uid").blur(function(){

        var uid = $(this).val();

        $.ajax({

            url:"__ACTION__",

            data:{uid:uid},

            type:"POST",

            dataType:"TEXT",

            success: function(data){

                //这里是验证的返回结果

            }

        })

    })

</script>

方法中的写法(完整的)


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

public function yanzheng()

{

    if(empty($_POST))

    {

        $this->show();  

    }

    else

    {

        //定义验证规则

        $rules array(    

            array(‘uid‘,‘require‘,‘用户名不能为空!‘),

        );

            

        $u = D("user");

            

        if($u->validate($rules)->create())

        {

            $this->ajaxReturn("OK","eval");  //如果验证成功返回OK

        }

        else

        {

            $this->ajaxReturn($u->getError(),"eval");  //如果不成功,就返回提示信息   

        }

    }  

}

最后的显示页面中的内容


1

2

3

4

5

6

7

8

9

10

11

12

13

success: function(data){

    //验证通过后的结果

    if(data=="OK")

    {

        $("#tishi").html("通过");   //提示信息

        $("#tishi").css("color","green");   //提示的颜色

    }

    else

    

        $("#tishi").html(data);  //提示的验证信息

        $("#tishi").css("color","red");    

    }

}

运行看下提示结果

   

父级和表单验证就是这样的,熟悉他的使用规则就可以了

(转)

时间: 2024-08-25 20:56:03

ThinkPhp框架:父类及表单验证的相关文章

ThinkPHP框架表单验证

对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 数据验证可以进行数据类型.业务规则.安全判断等方面的验证操作. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则. 动态方式:使用模型类的validate方法动态创建自动验证规则. 无

tp框架表单验证

之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.验证的代码要写在模型层即Model里面. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则.静态方式定义好以后其它地方都可以使用. 动态方式:使用模型类的validate方法动态创建自动验证规

tp框架表单验证 及ajax

之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.验证的代码要写在模型层即Model里面. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则.静态方式定义好以后其它地方都可以使用. 动态方式:使用模型类的validate方法动态创建自动验证规

[JavaWeb基础] 015.Struts2 表单验证框架

在web开发的过程中,我们经常要用到一些填写表单的操作,我们一般都要在提交表单信息的时候对表单的内容进行验证,struts2给我们提供了简单的实现接口,让我们可以很容易的对表单进行验证.下面讲解下最传统的方法配置表单验证框架,还有更简单明了的就是利用注解,这里就不解释了. 1.首先我们要在要进行配置的Action的同级目录下,新建一个.xml文件,命名格式为:ActionClassName-validation.xml. 例如我的Action类名为:RegisterAction   那么xml名

ValidationSuar表单验证框架-支持ASP.NET MVC ASP.NET WebFroM

介强下ValidationSuar表单验证框架的好用: 1.支持javascript端和后端的双重验证 (前端目前依赖于jquery.validate.js,也可以自已扩展) 2.代码简洁 3.调用方便 4.功能齐全 使用方法: 新建初始化类,将所有需要验证的在该类进行初始化,语法相当简洁并且可以统一管理,写完这个类你的验证就完成了70% 函数介绍: Add 默认类型(邮件.手机.qq等) AddRegex 正则验证 在Add无法满足情部下使用 addFunc 使用js函数进行验证 (注意:js

简单的js表单验证框架

/** * 通常在我们的HTML页面表单中有大量的数据验证工作, * 免不了要写很多验证表单的js代码,这是一项非常繁琐 * 枯燥的工作.很多程序员也会经常遗漏这项工作.当然 * 一些JavaEE框架中有一些比较好的验证框架提供给我们 * 使用,但是也是需要很多繁琐的配置,页面查看起来也 * 不是很方便.一般程序员使用的也不多.所以写了这一 * 段JavaScript代码提供给大家使用.算是一个简单的 * JavaScript验证框架吧.使用起来很简单,配合下面几 * 种标签使用,能实现大多数表

python_way day17 jQuery表单验证,插件,文本框架

python_way day17 jQuery表单验证 dom事件绑定 jquery时间绑定 $.each return值的判断 jquery扩展方法 前段插件 jDango文本框架 一,jQuery:表单验证: 1.dom方法提交表单,并验证: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>表单验证</ti

jquery.validate.js【简单实用的表单验证框架】

在线演示1 本地下载 原文链接:http://www.gbtags.com/gb/share/5749.htm 最近在做用户登录.注册.以及用户中心...然后之前在慕课网学的jquery.validate用得着地方了,根据自己需求进行了细节修改,重要是样式方面吧. 第一次发表这些,说得不好不要介意,开始吧.首先: $("#form").validate({ //在这里面编辑 }); 验证的时候常常需要调试,该框架内置了一个方法,如下: debug:true, //调试模式(并不会提交)

Flask10 登录模块、表单框架、表单渲染、表单验证、bookie、请求之前钩子、g对象、编写装饰器

from flask import Flask from flask import request from flask import render_template from flask_wtf import CSRFProtect as WTF # 利用表单类去渲染模板时需要用到 from forms import LoginForm app = Flask(__name__) WTF(app) # 在app上注册一个 WTF (所有的flask插件都必须进行注册) app.config.f