@cpt
2015-01-10T07:25:57.000000Z
字数 5268
阅读 923
基于PHP+MySQL的个人博客
个人博客是时下web最为流行的应用之一,一个典型的博客结合了文字、图像、其他博客或网站的链接及其它与主题相关的媒体,能够让读者以互动的方式留下意见.而现在很多同学在学习的过程中,当时的确掌握并解决了问题,但是没有一个很好的东西用来进行系统的记录和分享,可能有时候你的确进行了记录使用笔记本啊,电脑啊但是一段时间以后,毫无疑问肯定会造成记录的流失,毕竟你肯定不会一直随身携带并且很好的保留它.而现在虽然有很多各种博客,但是基于这样那样的欠缺,或者界面不友好,或者性能太低.达不到我们期望的目标.现在拟开发一个个人博客,按照自己的审美观出发,做出一个个性的展示与分享平台.
有了这个博客,麻麻在也不用担心我丢三落四了!
关键字:个人博客 PHP
体系架构:

前端架构:
主页|微语|相册|留言|技术探讨 | 登录
后台架构:
文章CUD| 微语CUD| 相片CD| 审核D| 协管用户CD | 评论管理 |
表设计(表前缀blog_)
| 表名 | 字段 | 表关系 |
|---|---|---|
| albums | pic_id pic_name(图片名) pic_det(描述) pic_des(地址) | |
| comments | c_id c_title c_body c_created_at c_updated_at p_id | 与posts表关联 |
| messages | m_id m_name m_email m_content | |
| posts | p_id p_name p_title p_body p_created_at p_updated_at | 与comments表关联 |
| twitters | t_id t_body t_created_at t_updated_at | |
| users | u_id u_name u_password u_created_at u_updated_at | |
| pc | p_id c_id | 与comments表和posts表关联 |
开发工具及版本:
详细实现方案


//这里是图片随机显示<img src="<?php echo '../images/random/'.rand(1,11).'.jpg';?>"
//这里是文章输出以及设置透明度<section><h2><?php echo $post->title; ?></h2><img src="<?php echo '../images/random/'.rand(1,4).'.jpg';?>"><p><?php echo $post->body; ?></p><h4><a href="p_show.php?id=<?php echo $post->id; ?>"><b>阅读</b><span>更多>></span></a></h4></section><!--css为.template section p { white-space: nowrap; overflow: hidden;text-overflow: ellipsis;}.template h4 a span { opacity: 0;} /*鼠标悬停即a:hover时,透明度设置为1(完全不透明)*/-->
//这里是数据操作代码//1.Model层post.model.php设置操作表名<?phprequire_once $_SERVER['DOCUMENT_ROOT'] . '/blog/inc/orm.php' ;class PostModel extends Illuminate\Database\Eloquent\Model {protected $table = 'posts';}?>//2.当然上述依赖的Illuminate/database已经通过composer用composer.json引入了{"name": "CAOPINGTAO/blog","require": {"illuminate/database": "~4.2",}}//3.然后直接在header.php中new一个分页对象(Pager对象已经封装好了)$pager = new Pager(PostModel::select('*'));//4.在header.php执行查询$posts = $pager->query($_GET['page'])->get();//5.按模板输出查询结果<?php foreach ($posts as $post) { ?><section><h2><?php echo $post->title; ?></h2><img src="<?php echo '../images/random/'.rand(1,4).'.jpg';?>"><p><?php echo $post->body; ?></p><h4><a href="p_show.php?id=<?php echo $post->id; ?>"><b>阅读</b><span>更多>></span></a></h4></section><?php } ?>

//1.先写一个文件上传类upload,进行上传操作的封装//2.然后直接上传文件,成功返回图片路径,失败进行相关原因提示$upload = new upload('myFile','../../albums/gallery-images',ture);$dest = $upload->uploadFile();//3.最后用PDO将相关信息存入数据库$tableName = $pref.'albums';$sql = 'insert into $tableName(pic_name,pic_det,pic_des) values (:pic_name,:pic_det,:pic_des);';$query = $db->prepare($sql);$query->bindParam(':pic_name',$_POST['pic_name'],PDO::PARAM_STR);$query->bindParam(':pic_det',$_POST['pic_det'],PDO::PARAM_STR);$query->bindParam(':pic_des',$dest,PDO::PARAM_STR);

//1.登录时简单的JS校验function validate(){var username = document.getElementById("name").value;var password = document.getElementById("password").value;var authcode = document.getElementById("authcode").value;if(username.trim().length == 0){//即用户名为空alert("用户名不能为空!");form1.username.focus();return false;}else if(password.trim().length == 0){alert("密码不能为空!");form1.password.focus();return false;}else if(authcode.trim().length == 0){alert("请输入验证码!");form1.authcode.focus();return false;}return true;}//2.后台校验验证码,不正确则重定向到登录界面,并且提示验证码失败;成功则进行跳转if(isset($_REQUEST['authcode'])){if(strtolower($_REQUEST['authcode']) == $_SESSION['authcode']){if( login($_POST['name'] , $_POST['password']) ){redirect_to('../index.php');}else{redirect_back();}}else{redirect_back();}}else{redirect_back();}
//后台校验session_start();require_once $_SERVER['DOCUMENT_ROOT'].'/blog/inc/session.php';require_once $_SERVER['DOCUMENT_ROOT'].'/blog/inc/common.php';header('content-type:text/html;charset=utf-8');if(!is_login()){set_notice('必须登录后方可使用本功能');redirect_to('/blog/Admin/sessions/new.php');}else{//进行相关操作}//is_login()函数function is_login(){return isset($_SESSION['userid']); //校验后台的session数组是否设置了用户id}//login()函数function login($name,$pwd,$remember_me=false){$user = load_user($name);if( $user && encrypt_password($pwd) == $user->password ){$_SESSION['userid'] = $user->id;if($remember_me){$expire_time = 7*24*3600*100 ;session_set_cookie_params($expireTime);}set_notice("欢迎您:{$name} 来到本站!");return $user;}else{set_notice("用户名或密码错误");return false;}}
img { transform: rotate(360deg);-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg); }
a { opacity: 0;}a:hover { opacity:1;}
充分满足了用户的界面友好,交互畅通,方便自主,个性化的要求