tp写一个微型论坛 (一)

第一节:数据库建模和目录介绍以及建议配置

*******数据库建模********

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('注销成功');
}

原文地址:https://www.cnblogs.com/yanran/p/4926312.html