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

  • 相关阅读:
    JavaScript 循环语句
    python 学习(day1)
    spring定时任务(@Scheduled注解)cron表达式详解
    IDEA 实用插件
    mysql版本和mysql-connector-java的对应关系记录
    CAS单点登录(理论部分)
    AOP
    获取post请求数据工具类
    nodeJs 安装
    docker 安装Nginx
  • 原文地址:https://www.cnblogs.com/yanran/p/4926312.html
Copyright © 2020-2023  润新知