一个前端写的php博客系统2--前台展示+后台登录

部署的演示地址

我的博客地址: http://www.weber.pub 可以查看到具体的站点展示

github 地址:https://github.com/baiyuming/byblog

前台首页展示

首页的侧边预留的位置是给后面的统计,热门之类的版块预留位置。。。

控制器

文章列表展示要考虑到文章数量增多后分页展示,那么我们要统计文章数量,使用 count() 计算文章总数,然后使用thinkphp 提供的分页方法,传入总记录数和每页显示的记录数后进行输出。。。

统计各个月份分别发表了多少篇文章,这里使用的是query方法来执行sql语句。

代码如下:

public function index(){    // 文章列表     // 查询满足要求的总记录数    $count = M('article')->count();    $this->assign('count',$count);    // 实例化分页类 传入总记录数和每页显示的记录数    $Page  = new \Think\Page($count,15);    // 分页显示输出    $show  = $Page->show();    $article = M('article') ->order('a_time desc') -> field('a_id,a_title,a_remark,a_time,a_keyword,a_hit') ->limit($Page->firstRow.','.$Page->listRows)->select();    // 赋值数据集    $this->assign('data',$article);    // 赋值分页输出    $this->assign('page',$show);    //这块是统计各个月份的文章数量    $Count = M();    $sql = "SELECT DATE_FORMAT(FROM_UNIXTIME(a_time),'%Y%m') a_time,             COUNT(1) a_sum            FROM `by_article`            GROUP BY DATE_FORMAT(FROM_UNIXTIME(a_time),'%Y%m') desc";    $res = $Count->query($sql);    $this -> assign('count',$res);    $this->display();}

分页基于thinkphp,但是样式是我自己调整的,看起来稍微美观点。。。

前台展示页面(View)

    首页 - ByBlog                         {$vo.a_title}                    {$vo.a_remark}                    20{$vo.a_time|date="y/m/d H:i",### }发表                    {$vo2.a_time} ({$vo2.a_sum})        {$page}

侧边预留给多说评论的版块是评论排行,和评论展示。。。关于多说评论确实好用,推荐下。。。

内容详情页展示

控制器

这里就是根据首页文章链接的id 去数据库查询 Article 表中的数据,然后推到前台页面展示

public function content($id=2){    $Form   =   M('Article');    // 读取数据    $data =   $Form->find($id);    //var_dump($data);    if($data) {        $this->assign('data',$data);    }else{        $this->error('数据错误');    }    $this->display();}

页面

            {$data.a_title}            20{$data.a_time|date="y/m/d H:i",### }发表            {$data.a_content}            分享到:            22222222

这里文章详情页的底部我分别加了百度分享,和多说评论

后台登录功能的实现

登录功能主要是session控制做了挺久的。。。

登录页面

                    用户名                    密码                登录

登录控制器

前端提交用户名和密码到后台,首先我们判断是否是使用的 post 提交。。。

根据提交的用户名去查询用户表中的数据,如果数据库返回没有这个用户或者用户提交的密码经过md5加密后的值和数据库中密码不匹配,返回错误。

如果前面都没有问题,我们就可以更新用户表中的最后登录时间、登录电脑的ip,然后向session 中写入用户数据,用来判断用户的登录,从而禁止用户不登录直接操作。

public function login(){    // 判断是否是post提交    if(!IS_POST) halt('页面错误');    $db = M('user');    // 根据提交的用户名 查询数据库    $user = $db -> where(array('name' => I('post.username'))) -> find();    if(!$user || $user['password'] != I('post.password','','md5')){        $this -> error('账号或密码错误');    }    $data = array(        'id' => $user['id'],        'last_time' => time(),        'ip' => get_client_ip()    );    // 更新登录时间 和 ip    $db -> save($data);    // 写入session    session('uid',$user['id']);    session('username',$user['name']);    session('username',$user['name']);    session('logintime',date('Y-m-d H:i:s'),$user['last_time']);    session('ip',$user['ip']);    // 跳转到后台列表页    redirect('../Blog/listA');}

session信息的使用

在控制器文件夹创建一个common控制器,使用_initialize函数判断session,如果session不存在,跳转到登录页面。。。

让其他的控制器全部继承common 控制器,比如:

class BlogController extends CommonController {    ....}

CommonController 控制器代码如下:

class CommonController extends Controller {    Public function _initialize(){        // 判断session 是否存在,不存在跳转到登录页        if(!isset($_SESSION['uid'])){            $this -> redirect('Admin/Login/index');        }    }}

部署到阿里云

上传代码

使用 FileZilla 上传到服务器

创建数据库

执行上篇文章中的 sql 语句,再给用户表手动添加数据的时候密码是需要经过md5加密的

后续

php实在不怎么熟悉了,代码写的不够优雅,多担待哈。。。还有很多的功能尚未实现,后续会继续更新。。。有问题的话欢迎吐槽(但是别喷我啊。。。)

未完待续。。。

关键字:JavaScript, php, css, html

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部