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