本文以实例形式讲述ThinkPHP实现的包括用户的注册、登录以及留言等功能,这里需要大家注意的是,在存在用户模型的情况下实例化一个用户类的时候使用D方法来实现。
UserActiion.class.php页面:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
<?php class UserAction extends Action{ public function add(){ $user = D( "user" ); $user ->create(); $result = $user ->add(); if ( $result ){ $this ->assign( "jumpUrl" , "__APP__/index/index" ); $this ->success( '注册成功!' ); } else { //echo $user->getError(); $this ->assign( "jumpUrl" , "__APP__/user/register" ); $this ->error( $user ->getError()); } } public function register(){ $this ->display(); } public function login(){ $this ->display(); } public function checklogin(){ $username = $_POST [ 'username' ]; $passwd = $_POST [ 'passwd' ]; $user = D( "user" ); //$User->where('id=8')->find();这里的where 语句要注意一下,如果是其他字段的话后面一定要有单引号 $userinfo = $user ->where( "username ='$username'" )->find(); if (! empty ( $userinfo )){ if ( $userinfo [ 'passwd' ] == $passwd ){ Cookie::set( 'userid' , $userinfo [ 'id' ],time()+3600*24); Cookie::set( 'username' , $username ,time()+3600*24); Cookie::set( 'lastlogintime' ,time(),time()+3600*24); $this ->assign( "jumpUrl" , "__APP__/index/index" ); $this ->success( '登陆成功!' ); } else { $this ->assign( "jumpUrl" , "__APP__/user/login" ); $this ->error( '密码出错,请重新输入!' ); } } else { $this ->assign( "jumpUrl" , "__APP__/user/login" ); $this ->error( '用户名不存在!' ); } } public function loginout(){ Cookie:: delete ( 'username' ); Cookie:: delete ( 'lastlogintime' ); $this ->assign( "jumpUrl" , "__APP__/index/index" ); $this ->success( '您已经成功退出,欢迎您的下次登录!' ); } } |
IndexAction.class.php页面:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action{ public function insert() { $content = new ContentModel(); $result = $content ->create(); if (! $result ){ $this ->assign( "jumpUrl" , "__URL__/index" ); $this ->error( $content ->getError()); //如果创建失败,表示验证没有通过,输出错误信息 } else { //验证通过,进行其他操作 $content ->userid=Cookie::get( 'userid' ); $content ->add(); $this ->assign( "jumpUrl" , "__URL__/index" ); $this ->success( '添加成功!' ); } } // 数据查询操作 public function index() { $content = new ContentModel(); $list = $content ->findAll(); //用户的cookie $username = Cookie::get( 'username' ); $lastlogintime = Cookie::get( 'lastlogintime' ); $this ->assign( 'list' , $list ); $this ->assign( 'title' , '我的首页' ); $this ->assign( 'username' , $username ); $this ->assign( 'lastlogintime' , $lastlogintime ); $this ->display(); } // 删除操作 public function delete (){ $content = new ContentModel(); $id = $_GET [ 'id' ]; if ( $content ->where( "id=$id" )-> delete ()){ $this ->assign( "jumpUrl" , "__URL__/index" ); $this ->success( '删除成功!' ); } else { $this ->assign( "jumpUrl" , "__URL__/index" ); $this ->error( '删除失败!' ); } } // 编辑操作 public function edit(){ $content = new ContentModel(); $id = $_GET [ 'id' ]; if ( $id != '' ) { //$data = $content->select($id); $data = $content ->where( "id=$id" )->select(); if (! empty ( $data )){ $this ->assign( 'data' , $data ); } else { echo "数据为空!" ; } } $this ->assign( 'title' , '编辑页面' ); $this ->display(); } // 更新操作 public function update(){ $content = new ContentModel(); //直接使用create(),自动会帮你进行数据的传值 /*$content->create(); $content->save(); // 根据条件保存修改的数据 echo "更新数据成功!";*/ // 使用post 传值过来,进行更新 $id = $_POST [ 'id' ]; if ( $id != '' ) { $data [ 'id' ] = $id ; $data [ 'title' ] = $_POST [ 'title' ]; $data [ 'content' ] = $_POST [ 'content' ]; if ( $content ->save( $data )) // 根据条件保存修改的数据 { $this ->assign( "jumpUrl" , "__URL__/index" ); $this ->success( '更新数据成功!' ); } else { $this ->assign( "jumpUrl" , "__URL__/index" ); $this ->success( '更新数据失败!' ); } } else { echo "保存数据失败!" ; } } } ?> |
ContentModel.class.php页面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php class ContentModel extends Model{ /* * 自动验证 * array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间) */ protected $_validate = array ( array ( 'title' , 'require' , '标题必须填写!' ), array ( 'content' , 'require' , '内容必须填写!' ), ); /* * 自动填充 * array(填充字段,填充内容,填充条件,附加规则) */ protected $_auto = array ( array ( 'addtime' , 'time' ,1, 'function' ), ); } ?> |
UserModel.class.php页面:
1
2
3
4
5
6
7
|
<?php class UserModel extends Model{ protected $_validate = array ( array ( 'username' , '' , '帐号名称已经存在!' ,0, 'unique' ,1), ); } ?> |
这里需要注意的是,使用自动验证的时候 实例化时要用 $user = D("user") 而不能用 $user = M("user"),用M这种方法会报错,D函数用于实例化Model,M函数用户实例化一个没有模型的文件。
success.html页面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> < html > < head > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" > < meta http-equiv = "refresh" content = "20; url='{$jumpUrl}'" /> < title >信息提示</ title > </ head > < body > < div id = "man_zone" > < table width = "40%" border = "1" align = "center" cellpadding = "3" cellspacing = "0" class = "table" style = "margin-top:100px;" > < tr > < th align = "center" style = "background:#cef" >信息提示</ th > </ tr > < tr > < td >< p >{$message}< br /> 2秒后返回指定页面!< br /> 如果浏览器无法跳转,< a href = "{$jumpUrl}" rel = "external nofollow" >请点击此处</ a >。</ p ></ td > </ tr > </ table > </ div > </ body > </ html > |