留言板项目实战
**
一、项目需求
-
用户登录
-
发表留言
-
删除本人留言
-
查看本人留言
二、编码实现
-
编写模型
代码如下:
<?php
/**
- Project:thinkphp-inaction
- User:zhangjinjin
- Date:2018/11/20
- Time:17:36
*/
namespace Home\Model;
use Think\Model\ViewModel;
class MessageViewModel extends ViewModel
{
public $viewFields = array(
'Message' =>array('message_id','content','created_at'),
'User'=>array('user_id','username','_on' =>'User.user_id=Message.user_id')
);
}
- 编写留言控制器
代码如下:
<?php
namespace Home\Controller;
use Home\Model\MessageViewModel;
use Think\Controller;
use Think\Model;
use Think\Page;
class IndexController extends Controller
{
/**
* 检测登陆
*/
private function checkLogin()
{
if(!session('user.userId')){
$this->error('请登录',U('User/login'));
}
}
/**
* 留言列表
*/
Public function index()
{
$model = new MessageViewModel();
$count = $model->count();
$page = new Page($count,1);
$show = $page->show();
$list = $model->order('message_id desc')->limit($page->firstRow . ',' . $page->listRows)->select();
$this->assign('page',$show);
$this->assign('list',$list);
$this->display();
}
/**
* 发表留言
*/
public function post()
{
$this->checkLogin();
$this->display();
}
/**
* 留言处理
*/
public function do_post()
{
$this->checkLogin();
$content = I('content');
if(empty($content)){
$this->error('留言内容不能为空');
}
if(mb_strlen($content,'utf-8')>100){
$this->error('留言内容最多100字');
}
$model = new Model('Message');
$userId = session('user,userId');
$data = array(
'content'=>$content,
'created_at'=>time(),
'user_id =>$userId'
);
if(!($model->create($data)&&$model->add())){
$this->error('留言失败');
}
$this->success('留言成功',U('Index/index'));
}
public function delete()
{
$id = I('id');
if(empty(id)){
$this->error('缺失参数');
}
$this->checkLogin();
$model = new Model('Message');
if(!$model->where(array('message_id'=>$id,'user_id'=>session('user.userId')))->delete()){
$this->error('删除失败');
}
$this->success('删除成功',U('index'));
}
}
- 编写用户控制器
代码如下:
<?php
/**
* Project:thinkphp-incation
* User:zhangjinjin
* Date:2017/11/20
* Time:19:56
*/
namespace Home\Controller;
use Think\Controller;
use Think\Model;
/**
* 用户控制器
* Class UserController
* @package Home\Controller
*/
class UserController extends Controller
{
/**
* 注册表单
*/
public function register()
{
$this->display();
}
/**
* 注册处理
*/
public function do_register()
{
$username = I('username');
$password = I('password');
$repassword = I('repassword');
if(empty($username)){
$this->error('用户名不能为空');
}
if(empty($password)){
$this->error('密码不能为空');
}
if($password!=$repassword){
$this->error('确认密码错误');
}
//检测用户是否已注册
$model = new Model('User');
$user = $model->where(array('username'=>$username))->find();
if(!empty($user)){
$this->error('用户名已存在');
}
$data = array(
'username'=>$username,
'password'=>md5($password),
'created_at'=>time()
);
if(!($model->create($data)&&$model->add())){
$this->error('注册失败!'.$model->getDbError());
}
$this->error('注册成功,请登录',U('login'));
}
/**
* 用户登录
*/
public function login()
{
$this->display();
}
/**
* 登录处理
*/
public function do_login()
{
$username = I('username');
$password = I('password');
$model = new Model('User');
$user = $model->where(array('username'=>$username))->find();
if(empty($user)||$user['password']!=md5($password)){
$this->error('账号或密码错误');
}
//写入session
session('user.userId',$user['user_Id']);
session('user.username',$user['username']);
//跳转首页
$this->redirect('Index/index');
}
/**
* 退出登录
*/
public function logout()
{
if(!session('user.userId')){
$this->error('请登录');
}
session_destroy();
$this->success('退出登录成功',U('Index/index'));
}
}