zoukankan      html  css  js  c++  java
  • tp5博客项目实战2

    改虚拟主机

    (用www.tp5.com直接访问替代localhost/blog/tp5/public)

    1.host修改

    位置C:WindowsSystem32driversetc

    127.0.0.1 www.tp5.com
    127.0.0.1 localhost
    

    2.httpd.conf

    Include conf/extra/httpd-vhosts.conf//去掉前面的#
    

    3.httpd-vhosts.conf

    <VirtualHost *:80>
        #网站根目录
        DocumentRoot "C:wamp64wwwlog	p5public" 
        #域名
        ServerName www.tp5.com
        #这里配置欢迎首页面
        DirectoryIndex index.html index.htm index.php
        <Directory />
               Options FollowSymLinks
               #不允许别人修改我们的页面
               AllowOverride None
               #设置访问权限
               order allow,deny
               Allow from all
        </Directory>   
    

    访问tp5控制器里面的方法

    www.tp5.com/index/index/index//模块 控制器 方法
    

    配置index里面的config.php

    这里的config.php只是覆盖全局里面对应部分的配置,而并不是所有的。

    return [
        'view_replace_str'=>
        ['__PUBLIC__'=>SITE_URL.'/public/static/index',
        '__ROOT__'	=>	'/', ],
    ];//这个配置的作用是用__PUBLIC__代替一个路径
    

    在public里面的index定义了一个常量

    define('SITE_URL','http://127.0.0.1/blog/tp5');//用SITE_URL指向了站点根目录
    

    这样

    __PUBLIC__就能够代替http://127.0.0.1/blog/tp5//public/static/index这个路径
    

    这样前台的模板文件js图片等都放到了这个路径而且用

    __PUBLIC__就能够在html里面代替整个路径
    

    模板的分离

    把前端里面重复的部分提出来到

    在view里面新建common文件夹里面包含下面的文件

    foot.html

    header.html

    然后把重复部分删除掉用下面的代替

    {include file='common/header'}
    {include file='common/foot'}
    

    后端做类似的操作

    分理出top和left

    数据表的建立

    tp_admin(id,username,password)

    tp_article(id,title,des,keyword,content,author,time,click,pic,state,cateid)

    tp_cate(id,catename)

    tp_tags(id,tagname)

    点击链接修改

    index修改如下内容

    <li><a href="{:url('admin/lst')}">//主要改这里<span class="menu-text">管理列表</span><i class="menu-expand"></i></a></li>
    

    lst里面主要改

    <button type="button" tooltip="添加用户" class="btn btn-sm btn-azure btn-addon" onClick="javascript:window.location.href ='{:url('admin/add')}'">//主要改这里 <i class="fa fa-plus"></i> Add
    </button>
    

    数据库的连接

    相关的database.php设置

    主要设置如下

    'type'            => 'mysql',
        // 服务器地址
        'hostname'        => '127.0.0.1',
        // 数据库名
        'database'        => 'blog',
        // 用户名
        'username'        => 'root',
        // 密码
        'password'        => '123456',
            // 数据库表前缀
        'prefix'          => 'tp_',
    

    add函数里面用数组接收用户名和密码

       $date=[
              'username'=>input('username'),
              'password'=>md5(input('password')),
            ];
    

    使用db助手函数之前要引入

    use thinkDb;

    用db('admin')->insert($date)插入数据到数据库如果成功,显示添加成功并返回到lst列表

            if(db('admin')->insert($date)){    
              return $this->success('添加成功','lst');
            }else{
              return $this->error('添加失败');
            }
    

    数据验证

    前台js也会进行验证的,不过知道这种方法也是不错的

    use thinkValidate;//引入
    
     $validate	=	new	Validate([				
              'username'=>'require|max:25',	
              'password'=>'require|max:32']);//数据接收之前进行限制
    
            $date=[
              'username'=>input('username'),
              'password'=>md5(input('password')),
            ];
            if	(!$validate->check($date))//如果不满足限制报错,结束程序
            {$this->error($validate->getError());
            
            die;}
    

    验证场景

    在Admin文件夹下面新建validate文件夹,里面建一个Admin.php内容如下

    <?php
    namespace appadminvalidate;
    use thinkValidate;
    class Admin extends Validate
    {
        protected $rule=[
          'username'=>'require|max:25',	
          'password'=>'require'
        ];//验证规则
    
        protected	$message=[
        'username.require'	=>'管理员名称必填',
        'username.max'=>'名称不能大于25个字符',								
        'password.require'=>'管理员密码必填'
      ];//自定义违反规则提示文字
    
        protected $scene=[
            'add'=>['username'],
        ];//验证场景,例如在添加管理员里面的验证只用到验证规则的username的规则,如果想要用到多个规则可以'add'=>['username','password'],还可以这样'add'=>['username|max:25','password'],
    }
    

    写好的验证怎么用呢?

    如下

    $validate=	hinkLoader::validate('Admin');
    if	(!$validate->scene('add')->check($date))
            {$this->error($validate->getError());
            die;}
    

    管理员列表及分页

    model.php

    <?php
    namespace appadminmodel;
    use thinkModel;
    class Admin extends Model
    {
       
    }
    

    控制器下面的lst方法如下使用之前要使用

    use appadminmodelAdmin as AdminModel;//因为重名了我们as一下
    
        public function lst(){
          $list = AdminModel::paginate(3);//每页显示三条记录
          $this->assign('list',$list);
          return  $this->fetch();
        }
    

    lst模板下面

                                {volist name='list' id='vo'}
                                <tr>
                                    <td align="center">{$vo.id}</td>
                                    <td align="center">{$vo.username}</td>
                                    <td align="center">
                                        <a href="{:url('admin/edit',array('id'=>$vo['id']))}" class="btn btn-primary btn-sm shiny">//编辑操作
                                            <i class="fa fa-edit"></i> 编辑
                                        </a>
                                        <a href="#" onClick="warning('确实要删除吗', '{:url('admin/del',array('id'=>$vo['id']))}')" class="btn btn-danger btn-sm shiny">//删除操作
                                            <i class="fa fa-trash-o"></i> 删除
                                        </a>
                                    </td>
                                </tr>
                                {/volist}
    

    管理员删除修改操作

        public function del(){
          $id=input('id');
          if($id!=2){
            if(db('admin')->delete(input('id'))){
              $this->success('删除管理员成功!','lst');
            }else{
              $this->error('删除管理员失败');
            }
          }else{
            $this->error('初始化管理员不能删除');
            }
            }
    
        public function edit(){
          $id=input('id');
          $admins=db('admin')->find($id);
          if(request()->isPost()){
            $date=[
              'id'=>input('id'),
              'username'=>input('username'),
            ];
            if(input('password')){
             $date['password']=md5(input('password'));
            }else{
              $date['password']=$admins['password'];
            }
            if(db('admin')->update($date)){
              $this->success("修改成功",'lst');
            }else{
              $this->error("修改失败");
            }
            return;
          }
          $this->assign('admins',$admins);
          return  $this->fetch();
        }
    
  • 相关阅读:
    datum of data matrix
    data matrix with opensource
    wps出现“文档已被其他应用程序锁定,是否以只读模式打开”
    error MSB3073解决办法
    vc6下dll调试
    往客户机子上装dll时,报缺失mfc42d.dll
    进程通信编码和解码
    java后端选型20200729
    Git安装与使用
    Kitty基于Spring Boot、Spring Cloud、Vue.js、Element实现前后端分离的权限管理系统
  • 原文地址:https://www.cnblogs.com/chenguosong/p/11913610.html
Copyright © 2011-2022 走看看