@cpt
2015-01-10T07:25:57.000000Z
字数 5268
阅读 857
基于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设置操作表名
<?php
require_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;}
充分满足了用户的界面友好,交互畅通,方便自主,个性化的要求