一个前端写的php博客系统2--前台展示+后台登录
2016-08-01 14:29
435 查看
部署的演示地址
我的博客地址: 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)
<!DOCTYPE html> <html> <head> <title>首页 - ByBlog </title> <meta name="keywords" content="ByBlog,markdown,thinkphp,博客系统,前端博客" /> <meta name="description" content="ByBlog,markdown,thinkphp,博客系统,前端博客" /> <include file = "./Public/Public_head_link"/> </head> <body> <include file = "./Public/Public_header"/> <div id="content" class="home-index container"> <div class="row pt-xlg"> <div class="col s12 m12 l9"> <volist name="data" id="vo"> <div class="a-list"> <p class="f-24 mb-none"> <a class="waves-effect waves-light" href="{:U('Home/Content/content/id/'.$vo['a_id'])}">{$vo.a_title}</a> </p> <p class="c-666">{$vo.a_remark}</p> <p class="c-999">20{$vo.a_time|date="y/m/d H:i",###}发表</p> </div> </volist> </div> <div class="col s12 m12 l3"> <div> <volist name="count" id="vo2"> <p class="f-18 m-none">{$vo2.a_time} ({$vo2.a_sum})</p> </volist> </div> <!--预留给多说评论--> </div> </div> <div class="pagination center"> {$page} </div> </div> <include file = "./Public/Public_footer"/> <include file = "./Public/Public_foot_script"/> </body> </html>
侧边预留给多说评论的版块是评论排行,和评论展示。。。关于多说评论确实好用,推荐下。。。
内容详情页展示
控制器
这里就是根据首页文章链接的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(); }
页面
<div class="container pt-xlg"> <div class="row"> <div class="col s12 m8 l9"> <p class="f-36 mb-none">{$data.a_title}</p> <p class="c-999">20{$data.a_time|date="y/m/d H:i",###}发表</p> <hr> <p id="contentMd" style="display: none">{$data.a_content}</p> <div id="content"> </div> <p class="f-18">分享到:</p> <div class="bdsharebuttonbox"> <a href="#" class="bds_more" data-cmd="more"></a> <a title="分享到新浪微博" href="#" class="bds_tsina" data-cmd="tsina"></a> <a title="分享到微信" href="#" class="bds_weixin" data-cmd="weixin"></a> <a title="分享到QQ空间" href="#" class="bds_qzone" data-cmd="qzone"></a> <a title="分享到QQ好友" href="#" class="bds_sqq" data-cmd="sqq"></a> <a title="分享到Facebook" href="#" class="bds_fbook" data-cmd="fbook"></a> <a title="分享到linkedin" href="#" class="bds_linkedin" data-cmd="linkedin"></a> <a title="分享到Twitter" href="#" class="bds_twi" data-cmd="twi"></a> </div> <!-- 多说评论框 start --> <div class="ds-thread" data-thread-key="{$data.a_id}" data-title="{$data.a_title}" data-url="{:U('Home/Content/content/id/'.$vo['a_id'])}"></div> <!-- 多说评论框 end --> </div> <div class="col s12 m4 l3"> 22222222 </div> </div> </div>
这里文章详情页的底部我分别加了百度分享,和多说评论
后台登录功能的实现
登录功能主要是session控制做了挺久的。。。
登录页面
<div id="content" class="container"> <div class="row center-align"> <form class="col offset-s3 s6" action="{:U('Admin/Login/login')}" method="post"> <div class="row"> <div class="input-field col s12"> <input id="username" name="username" type="text" class="validate"> <label for="username">用户名</label> </div> </div> <div class="row"> <div class="input-field col s12"> <input id="password" name="password" type="password" class="validate"> <label for="password">密码</label> </div> </div> <div class="col s12 p-none"> <button class="btn waves-effect waves-light right" type="submit" name="action">登录 <i class="by bym-feiji right"></i></button> </div> </form> </div> </div>
登录控制器
前端提交用户名和密码到后台,首先我们判断是否是使用的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--文章的修改和删除
- 后台用户登录系统及与前台区分
- php后台“爬虫”模拟登录第三方系统(二)---正则表达式的介绍
- php保存数据到数据库到后台显示删除编辑,到前台展示
- 使用 NodeJs 实现一个本地接口数据系统,无需数据库,让前端独立于后台开发
- PHP学习如何写一个项目?后台用户登录
- 登录页面在输入了正确的用户名和密码后仍跳转到登录页面而不是期望的系统首页面,debug的时候发现,登录页面调用的action类方法被调用了两次,后台无法获取前台页面传过来的参数。
- PHP基于curl后台远程登录正方教务系统的方法
- 一个完整、安全的PHP用户登录系统
- php100视频里的一个会员登录系统超时和权限实例
- php后台“爬虫”模拟登录第三方系统(一)---cURL的介绍
- PHP开发一个完整、安全的用户登录系统
- php后台图书管理系统-登录页面02
- php后台“爬虫”模拟登录第三方系统
- php后台“爬虫”模拟登录第三方系统(三)---模拟登录学校正方系统
- php大力力 [036节] 后台系统的登录页面界面做完啦
- 一个文件系统的后台及前台设计
- 一个完整、安全的PHP用户登录系统
- PHP基于curl后台远程登录正方教务系统的方法