留言板后台
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(二)ThinkPHP实践之留言板后台
-TTLSA
1、后台需求
(1)管理员登录:帐号密码验证,验证码验证
(2)管理留言:单条删除,单条修改,批量删除
(3)管理员退出:退出后台
2、建库
知识点:
1、IP记录类型
2、用户锁定标识符类型
数据库需求
需要提交留言板内容
id(留言用户id)类型为int,最大长度10位
username(管理员用户名)类型为char,最大长度20位,不能为空,默认值为“匿名用户”
password(管理员密码)类型为varchar,最大长度32位,不能为空
logintime(登录时间)类型为timestamp,默认值为“当前时间”
loginip(登录IP)类型为varchar,最大长度为30位
lock(用户锁定标识)类型为tinyint,最大长度为1,默认为不锁定
转化为数据库类型为
表名tb_broad
id int类型(10位长度),非负,非空,自增
username char类型(20位长度),非空,默认为空
password varchar类型(32位长度),非空,默认为空
logintime timestamp类型,非空,默认是当前时间戳
loginip varchar类型,非空
lock tinyint类型,非负,非空,默认为0(即非锁定)
以下是建表的
SQL
1 2 3 4 5 6 7 8 ; html-script: false ]
CREATE TABLE IF NOT EXISTS `tb_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` char(20) NOT NULL DEFAULT '',
`password` char(32) NOT NULL DEFAULT '',
`logintime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '留言时间', `loginip` varchar(30) NOT NULL,
`lock` tinyint(1) unsigned NOT NULL DEFAULT '0',
9
10
11 PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 为了方便测试我们建立一条测试数据
1
; html-script: false ]INSERT INTO `board`.`tb_user` (`id` ,`username` ,`password` ,`logintime` ,`loginip` ,`lock`) VALUES (NULL ,'admin',
MD5( 'admin' ) ,CURRENT_TIMESTAMP , '127.0.0.1', '0');
3、修改相关配置
知识点:
1、thinkphp单入口文件操作
2、admin.php入口文件,App配置,调试模式,引用框架
数据库配置好后,可在项目目录新建后台入口文件并定义项目名称,文件创建位置在网站根目录下(我的本地环境中为C:/wamp/ www/)message(自建项目目录)/admin.php
接下来就要在admin.php入口文件中定义相关项目,具体内容如下:
1 2 3 4 5 6 7 8 ; html-script: false ]
define('APP_NAME', 'admin'); //项目名,可自定义
define('APP_PATH', './admin/'); //项目路径,访问入口文件,即可自动生成,无需手动创建,注意最后的'/',如果不加,会将项目文件散落在message根目录下define('APP_DEBUG', TRUE); //调试模式,如果在开发阶段,建议在开发阶段开启
require './ThinkPHP/ThinkPHP.php'; //重点*,加了这条,框架才能生效
?>
老规矩,配置完这条,访问http://localhost/message/admin.php看见笑脸,就说明你配置框架成功了。同时可在message目录下,生成了admin目录。
接下来我们需要完成相关的数据库配置
文件路径为message/admin/Conf/config.php
添加内容如下:
1 2 3 4 ; html-script: false ]
//数据库相关配置
5 6 7 8 9
10
11
'DB_TYPE' => 'mysql', //数据库类型
'DB_NAME' => 'board', //数据库名
'DB_USER' => 'root', //连接数据库帐号
'DB_PWD' => '', //连接数据库密码
'DB_PREFIX' => 'tb_' //数据库表前缀,这样在后面实例化的时候就不需要再填写同样的表前缀了
);
?>
4、建立控制器Controller
知识点:
1、用户登录状态检查
2、用户登录验证
3、留言板信息显示、删除
4、验证码调用及使用方法
(1)配置全部完成,接下来就是我们开始写控制器的时候了,入口文件进来,都会找默认控制器,路径为message/admin/Lib/actio n/IndexAction.class.php
将原有内容删除,拷贝以下内容替代:
1 2 3 4 5 6 7 8 ; html-script: false ]
//留言板后台控制器
class IndexAction extends CommonAction {
//注意这里的CommonAction,这是自定义的类,主要用于一些初始化操作,如用户登录状态检查等,具体内容将在下面进行讲解
public function index(){
$this->display();
}
}
(2)接下来就来讲解下CommonAction,文件位置与IndexAction.class.php同级,命名为CommonAction.class.php 代码如下:
1 2 3 4 5 6 7 8 9 ; html-script: false ]
//通用类,这里主要是为了做登录验证,之后如果需要登录验证的页面,只要继承这个类,即可判断用户是否登录,如果未登录,即跳回登录页面Class CommonAction extends Action {
Public function _initialize () {
//_initialize是一个初始化方法,也就是程序自动执行的一个方法
if (!isset($_SESSION['uid']) || !isset($_SESSION['username'])) {
//判断是否定义$_SESSION['uid']或者$_SESSION['username']
$this->redirect('admin.php/Login/index');
//如果未定义,就跳转回login页面admin.php/Login/index