资讯专栏INFORMATION COLUMN

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

guyan0319 / 506人阅读

摘要:前台展示页面首页博客系统前端博客博客系统前端博客发表预留给多说评论侧边预留给多说评论的版块是评论排行,和评论展示。。。一个前端写的博客系统支持哦一个前端写的博客系统文章的修改和删除

部署的演示地址 我的博客地址: 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 ThinkPage($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})

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

内容详情页展示 控制器

这里就是根据首页文章链接的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",###}发表


分享到:

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

未完待续。。。

一个前端写的php博客系统--支持markdown哦
一个前端写的php博客系统3--文章的修改和删除

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21817.html

相关文章

  • 一个前端写的php博客系统--支持markdown哦

    摘要:部署的地址我的博客地址起因最近买了个新的域名,同时在阿里云申请了免费的虚拟主机。。。一个前端写的博客系统前台展示后台登录一个前端写的博客系统文章的修改和删除 部署的地址 我的博客地址:http://www.weber.pub/ 起因 最近买了个新的域名,同时在阿里云申请了免费的虚拟主机。。。借此机会就想搞个自己的博客站点,虽然之前也使用了hexo + github 、 WordPres...

    wenhai.he 评论0 收藏0
  • 一个前端写的php博客系统3--文章的修改和删除

    摘要:写在后面这个简单的博客系统基本功能算是已经完善了,但是其中还有很多值得优化和修改的地方。。。另外篇博文地址一个前端写的博客系统支持哦一个前端写的博客系统前台展示后台登录 部署的地址 我的博客地址:http://www.weber.pub/ github 地址:https://github.com/baiyuming/byblog 文章的修改 文章的修改需要两步,第一步读取文章,第二步更...

    changfeng1050 评论0 收藏0
  • 用vue搭建的个人博客介绍----mapblog小站

    摘要:后端主要使用的框架,数据库采用。后台管理登录采用与后端进行登陆状态的确认。本文首发于小站,这是一个积累和分享知识的个人博客 这篇文章搁置了很长时间,最终决定还是把它写出来,给刚开始学习vue并且想用vue写个人博客的同学一个参考。因为当初我也是参考了其他人分享的知识,从一个vue小白变成了一个入门级选手,并最终完成了这个个人博客的搭建工作,代码已托管在Github-justJokee。...

    Ashin 评论0 收藏0
  • Vue-book 2.0 一个移动端简单的全栈 web APP

    摘要:本项目是一个简单的全栈项目,前端新手可以拿来练练手。项目实现了一些简单的功能,后台可以对图书进行录入录出扫码或手动,前台显示录入的图书,并且前台注册登录后可以将书的订单发给服务器,并存到服务器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【觉得不错就来个 star 吧 ^_^】 说明(菜鸟请进,大神绕道 ~) 前端...

    wh469012917 评论0 收藏0
  • Vue-book 2.0 一个移动端简单的全栈 web APP

    摘要:本项目是一个简单的全栈项目,前端新手可以拿来练练手。项目实现了一些简单的功能,后台可以对图书进行录入录出扫码或手动,前台显示录入的图书,并且前台注册登录后可以将书的订单发给服务器,并存到服务器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【觉得不错就来个 star 吧 ^_^】 说明(菜鸟请进,大神绕道 ~) 前端...

    NotFound 评论0 收藏0

发表评论

0条评论

guyan0319

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<