其一知识点,就可以通过“登录”和“注册”的页面来上之知识点了
率先先举行一个“登录”功能
平、登录功能(父类)
(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>

关押下中心的运行页面效果!!注意浏览器的地址栏的书:http://localhost/tp/index.php/Home/Login/denglu

图片 3

(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)输入账号和密码,密码是谬误的常

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

 

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

机关验证是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>   

看下运行效果

图片 9

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)附加规则 (可选)

相当征规则下,包括下面有规则: 

图片 10

图片 11

(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周转可以拘留下结果

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

 

相关文章

网站地图xml地图