ThinkPHP 3.2.3 实例一:从零开始打造留言板

项目需求

1.用户注册、登陆
2.发表留言
3.删除本人留言
4.查看本人留言

项目环境参数

ThinkPHP3.2.3
PhpStorm

项目结构

ThinkPHP 3.2.3 实例一:从零开始打造留言板_第1张图片
message_board.png

Mysql数据库建表

注意 sql语句中 `` 与 '' 的区别
创建用户表

DROP TABLE
IF EXISTS `jiat_user`;

CREATE TABLE `jiat_user` (
    `user_id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    `username` VARCHAR (40) NOT NULL,
    `password` CHAR (32) NOT NULL,
    `create_at` INT (10) NOT NULL,
    PRIMARY KEY (`user_id`),
    KEY `createAt` (`create_at`) USING BTREE,
    KEY `username` (`username`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8; 

创建留言表

DROP TABLE
IF EXISTS `jiat_message`;

CREATE TABLE `jiat_message` (
    `message_id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `content` VARCHAR (100) NOT NULL,
    `create_at` INT (10) NOT NULL,
    `user_id` INT (10) UNSIGNED NOT NULL,
    PRIMARY KEY (`message_id`),
    KEY `createAt` (`create_at`) USING BTREE,
    KEY `userId` (`user_id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

ThinkPHP中的数据库配置

路径:message_borad/Application/Home/Conf/config.php

'配置值'
    'DB_TYPE' => 'mysql',
    'DB_HOST' => 'localhost',
    'DB_PORT' => 3306,
    'DB_USER' => 'root',
    'DB_PWD' => '',
    'DB_NAME' => 'message_board',
    'DB_PREFIX' => 'jiat_'
);

Model层

创建MessageViewModel.class.php
路径:message_borad/Application/Home/Model/MessageViewModel.class.php

 array('message_id', 'content', 'create_at'),
        'User' => array('user_id', 'username', '_on' => 'Message.user_id=User.user_id')
    );

}

Controller层

1.创建UserController.class.php
路径:message_borad/Application/Home/Controller/UserController.class.php

display();
    }

    //注册处理
    function do_register() {
        $username = I('username');
        $password = I('password');
        $password_repeat = I('password_repeat');

        if (empty($username)) {
            $this->error('用户名不能为空');
        }
        if (empty($password)) {
            $this->error('密码不能为空');
        }
        if ($password != $password_repeat) {
            $this->error('两次输入的密码不一致');
        }

        $userModel = new Model('User');
        $user = $userModel->where(array("username" => $username))->find();
        if (!empty($user)) {
            $this->error('用户名已存在');
        }
        $userInfo = array("username" => $username, "password" => md5($password), "create_at" => time());
        if (!($userModel->create($userInfo) && $userModel->add())) {
            $this->error('注册失败' . $userModel->getDbError);
        }
        $this->success('注册成功', U('login'));
    }


    //登陆
    function login() {
        $this->display();
    }


    //登陆处理
    function do_login() {
        $username = I('username');
        $password = I('password');

        if (empty($username)) {
            $this->error('用户名不能为空');
        }
        if (empty($password)) {
            $this->error('密码不能为空');
        }

        $userModel = new Model('User');
        $user = $userModel->where(array("username" => $username))->find();
        if (empty($user)) {
            $this->error('用户不存在');
        }
        if ($user["password"] != md5($password)) {
            $this->error('密码错误');
        }
        //写入session
        session('user.user_id', $user['user_id']);
        session('user.username', $user['username']);
        //跳转首页
        $this->redirect('Index/index');
    }


    //退出
    function logout() {
        if (!session('user.user_id')) {
            $this->error('请登录');
        }
        session_destroy();
        $this->success('退出成功', U('Index/index'));
    }

}

2.创建IndexController.class.php
路径:message_borad/Application/Home/Controller/IndexController.class.php

count();
        $page = new Page($count, 10);
        $show = $page->show();
        $message_list = $messageModel->order("message_id desc")->limit($page->firstRow . "," . $page->listRows)->select();
        dump($message_list);
        die();
        $this->assign("page", $show);
        $this->assign("message_list", $message_list);
        $this->display();
    }

    /**
     * 发表留言
     */
    public function add() {
        //$this->check_login();
        $this->display();
    }

    /**
     * 处理发表留言
     */
    public function do_add() {
        $this->check_login();
        $content = I("content");
        if (empty($content)) {
            $this->error("留言内容不能为空");
        }
        if (mb_strlen(trim($content), "utf-8") > 100) {
            $this->error("留言内容不能超过100个字");
        }
        $messageModel = new Model("Message");
        $user_id = session("user.user_id");
        $data = array("content" => $content, "user_id" => $user_id, "create_at" => time());
        if (!($messageModel->create($data) && $messageModel->add())) {
            $this->error("发表留言失败");
        }
        $this->success("发表留言成功!", U("Index/index"));
    }

    /**
     * 删除留言
     */
    public function delete() {
        $message_id = I("message_id");
        if (empty($message_id)) {
            $this->error("缺少参数");
        }
        $this->check_login();
        $messageModel = new Model("Message");
        $result = $messageModel->where(array("message_id" => $message_id, "user_id" => session('user.user_id')))->delete();
        if (!$result) {
            $this->error("删除失败");
        }
        $this->success("删除成功!", U("Index/index"));
    }

    /**
     * 检测登陆
     */
    public function check_login() {
        if (!session("user.user_id")) {
            $this->error("请先登陆", U("User/login"));
        }
    }

}

View层

1.创建register.html
路径:message_borad/Application/Home/View/User/register.html




    
    注册


用户注册

已有账号?点击登录

2.创建login.html
路径:message_borad/Application/Home/View/User/login.html




    
    登陆


用户登陆

没有有账号?点击注册

3.创建add.html
路径:message_borad/Application/Home/View/Index/add.html




    
    发表留言




首页

4.创建index.html
路径:message_borad/Application/Home/View/Index/index.html




    
    留言板


留言板

登陆 注册

{$Think.session.user.username},欢迎您!发表留言 退出登录

{$item.content}
留言者:{$item.user_id} 留言时间:{$item.create_at|date='Y-m-d H:i:s',###} 删除

项目测试

1.用户注册
http://localhost/message_board/index.php/Home/User/register

ThinkPHP 3.2.3 实例一:从零开始打造留言板_第2张图片
user_register.png

2.用户登录
http://localhost/message_board/index.php/Home/User/login

ThinkPHP 3.2.3 实例一:从零开始打造留言板_第3张图片
user_login.png

3.发表留言
http://localhost/message_board/index.php/Home/Index/add

ThinkPHP 3.2.3 实例一:从零开始打造留言板_第4张图片
message_add.png

4.留言列表
http://localhost/message_board/index.php/Home/Index/index

ThinkPHP 3.2.3 实例一:从零开始打造留言板_第5张图片
message_list.png

源码地址 https://github.com/jt1024/message_board

你可能感兴趣的:(ThinkPHP 3.2.3 实例一:从零开始打造留言板)