本条知识点,就足以由此“登入”和“注册”的页面来学习这么些知识点了

首先先做叁个“登陆”成效
一、登入成效(父类卡塔尔
(1卡塔尔登入的调整器
在本人的调整器文件夹中新建四个登入调控器
自己的路子是那般的:
图片 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卡塔尔编写登入的页面 

自身的那一个页面我放在了

图片 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>

看下基本的运维页面效果!!注意浏览器的地址栏的书写:

图片 3

(3卡塔 尔(英语:State of Qatar)补充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卡塔尔国输入账号和密码,密码是张冠李戴的时

图片 4

2卡塔尔输入账号和密码,密码是千真万确的时

图片 5

3卡塔 尔(阿拉伯语:قطر‎时间已过,跳转到首页面

图片 6

如此有个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  //继承的就不是原类了,而是写的控制器类文件
{
}

运维之后查看效果,间接登入首页的页面,会合世上面的页面

图片 7 
 图片 3

 

二、注册功用(表单验证卡塔 尔(阿拉伯语:قطر‎

活动验证是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
    {
        //使用后面的验证信息        
    }
}   

意气风发、登陆作用(父类卡塔 尔(英语:State of Qatar)。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>   

看下运转效果

图片 9

3.增加表单验证

(1卡塔 尔(英语:State of Qatar)静态验证

意气风发、登陆作用(父类卡塔 尔(英语:State of Qatar)。在乎:在模型类里面通过$_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卡塔 尔(英语:State of Qatar)验证字段 (必得卡塔尔国

急需验证的表单字段名称,那几个字段不自然是数据库字段,也足以是表单的片段声援字段,比如确认密码和验证码之类。某些验证准绳和字段无关的情形下,验证字段是能够随便安装的,比如expire保质期法则是和表单字段毫无干系的。假设定义了字段映射的话,这里的证实字段名称应当是实际的数据表字段并不是表单字段。

(2卡塔 尔(英语:State of Qatar)验证法则 (必得卡塔尔国

要开展认证的规规矩矩,须要整合附加准绳,假若在运用正则验证的附加法则意况下,系统还停放了有些常用正则验证的规规矩矩,能够直接当作注解法则使用,满含:require
字段必需、email 邮箱、url U普拉多L地址、currency 货币、number 数字。

(3卡塔 尔(阿拉伯语:قطر‎提醒新闻 (必得卡塔尔

用来注明失败后的提醒音信定义

意气风发、登陆作用(父类卡塔 尔(英语:State of Qatar)。(4卡塔 尔(阿拉伯语:قطر‎验证条件 (可选卡塔 尔(阿拉伯语:قطر‎

含蓄下面两种意况:

  • 意气风发、登陆作用(父类卡塔 尔(英语:State of Qatar)。意气风发、登陆作用(父类卡塔 尔(英语:State of Qatar)。self::EXISTS_VALIDATE 可能0 存在字段就表达(默许卡塔 尔(阿拉伯语:قطر‎
  • self::MUST_VALIDATE 可能1 必得注脚
  • self::VALUE_VALIDATE也许2 值不为空的时候证实
(5卡塔尔国附加准绳 (可选卡塔尔国

合作验证法规使用,包罗上边一些规规矩矩: 

图片 10

图片 11

(6卡塔 尔(英语:State of Qatar)验证时间(可选卡塔 尔(英语:State of Qatar)
  • self::MODEL_INSERT或许1新扩充数据时候证实
  • self::MODEL_UPDATE也许2编辑数量时候证实
  • self::MODEL_BOTH大概3任何景况下验证(暗中同意卡塔 尔(英语:State of Qatar)

此地的求证时间需求专一,并不是唯有那三种情景,你能够依照业务供给扩展其余的证实时间。

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运作能够看下结果

图片 12

那是静态验证,不能够出今后文本框的末端,那样能够用动态验证,别的的尺度能够依照注意的那几条自个儿开展览演出习

 

(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");    
    }
}

运维看下提醒结果

图片 13 
 图片 14

 

父级和表单验证正是那样的,纯熟他的运用法规就足以了

相关文章