第一节:数据库建模和目录介绍以及建议配置
*******数据库建模********
user:
id:用户的id信息
level:为0表示管理员,为1表示普通用户
name:注册的用户名
pwd:密码,这里存储用md5加密后的数据
board:
id:表示板块序号
name:表示模块名
post:
id:表示帖子序号
own:为0表示主题帖若为回复贴使用主题帖的id
board:使用板块的id
text:该帖子的内容
author:该帖子的作者
***********在mysql中创建他们*********
首先创建数据库 thinkbbs 并且设置他的编码格式为utf-8
http://www.5idev.com/p-php_mysql_data_types.shtml
**********建立目录结构********
在www目录下,新建一个thinkbbs文件夹
引入thinkphp框架
***********写配置文件*********
可以配置的地方:
1:thinkphp->conf->convention.php
2:Application->Common->conf->config.php //针对所有分组模块
3:Application->Home->conf->config.php //针对home模块
作用域大小不同
这里选择第二种
第二节:用户模块的建立和完善
*********目录的建立********
1:如果这个模块比较小,那么可以直接写到Home里面去,如果这个模块比较大,那么应该新建一个文件夹,他和home有相同的结构
2:css和js文件放在thinkbbs下面的public文件夹中,新建一个css文件夹
*******添加测试数据**********
1:向数据库添加一条测试数据:
insert into user(name,pwd) values('yanran','qqqqqq');
*******提供登陆的界面********
1:在Application的Home目录下的View目录下,新建一个User文件夹,然后新建一个login.html文件,
//__ROOT__:网站的地址
<form action="__ROOT_/Home/User/checklog" method="post" role="form">
<h2>yanran简易BBS</h2>
<input name="email" type="email" placeholder="账号" autofocus/>
<input name="xin" type="hidden"/><br/>
<input name="pwd" type="password" placeholder="密码"><br/>
<button type="submit">登陆</button></form>
2:在Application的Home的Controller下建立UserController.calss.php
内容为:
<?php
namespace HomeController;
use ThinkController;
class UserController extends Controller {
public function index(){
}
public function login(){
$this->display();
}
}
*********检测登陆界面*****
1:在UserController类中添加一个checklog(),他的功能是检测post过来的数据,然后从数据库中取出数据来判断一下
2:如果存在此用户名,则xierucookie,如果不存在则告诉用户用户名错误,
3:两种方法,一个是controller自带的success方法,他用于成功的跳转,一个是controller自带的error方法,他用于错误的跳转,其实他们的作用是基本一样的,只是换了一个名字
public function checklog(){
if(isset($_POST['email'])){
$name=$_POST['email'];
}
$pwd=$_POST['pwd'];
$m=M('user');
$msg=$m->where("name='$name'")->find();
if($msg['pwd']==$pwd){
setcookie("username",$name);
$this->success('登陆成功');
}else{
$this->error('用户名或者密码错误');
}
}
4:由于我们的cookie没有加密,因此非常危险的,如果是商业应用,这么做是非常愚
应该加密
*********注册功能*******
public function reg(){
$this->display();
}
public function checkreg(){
$data['name']=$_POST['email'];
$data['pwd']=$_POST['pwd'];
$m=M('user');
$msg=$m->create($data);
$result=$m->add();
if($result==true){
setcookie("username",$data['name']);
$this->success('注册成功');
}else{
$this->error('注册失败,用户名已经被占用');
}
}
<form method="post" action="__ROOT__/Home/User/checkreg">
<input name="email"type="text" placeholder="账号" autofocus/><br/>
<input name="pwd" type="password"placeholder="密码"/><br/>
<input type="submit" value="提交"/>
</form>
***********注销功能***********
public function logout(){
setcookie('username','',time()-1);
$this->success('注销成功');
}