[关闭]
@cpt 2015-01-10T07:25:57.000000Z 字数 5268 阅读 857

创新实验班个人项目结题报告

基于PHP+MySQL的个人博客


一 需求分析

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

关键字:个人博客 PHP

二 总体设计

表名 字段 表关系
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表关联

三 系统实现:

开发工具及版本:

详细实现方案

  1. //这里是图片随机显示
  2. <img src="<?php echo '../images/random/'.rand(1,11).'.jpg';?>"
  1. //这里是文章输出以及设置透明度
  2. <section>
  3. <h2><?php echo $post->title; ?></h2>
  4. <img src="<?php echo '../images/random/'.rand(1,4).'.jpg';?>">
  5. <p><?php echo $post->body; ?></p>
  6. <h4><a href="p_show.php?id=<?php echo $post->id; ?>"><b>阅读</b><span>更多>></span></a></h4>
  7. </section>
  8. <!--css
  9. .template section p { white-space: nowrap; overflow: hidden;text-overflow: ellipsis;}
  10. .template h4 a span { opacity: 0;} /*鼠标悬停即a:hover时,透明度设置为1(完全不透明)*/-->
  1. //这里是数据操作代码
  2. //1.Model层post.model.php设置操作表名
  3. <?php
  4. require_once $_SERVER['DOCUMENT_ROOT'] . '/blog/inc/orm.php' ;
  5. class PostModel extends Illuminate\Database\Eloquent\Model {
  6. protected $table = 'posts';
  7. }
  8. ?>
  9. //2.当然上述依赖的Illuminate/database已经通过composer用composer.json引入了
  10. {
  11. "name": "CAOPINGTAO/blog",
  12. "require": {
  13. "illuminate/database": "~4.2",
  14. }
  15. }
  16. //3.然后直接在header.php中new一个分页对象(Pager对象已经封装好了)
  17. $pager = new Pager(PostModel::select('*'));
  18. //4.在header.php执行查询
  19. $posts = $pager->query($_GET['page'])->get();
  20. //5.按模板输出查询结果
  21. <?php foreach ($posts as $post) { ?>
  22. <section>
  23. <h2><?php echo $post->title; ?></h2>
  24. <img src="<?php echo '../images/random/'.rand(1,4).'.jpg';?>">
  25. <p><?php echo $post->body; ?></p>
  26. <h4><a href="p_show.php?id=<?php echo $post->id; ?>"><b>阅读</b><span>更多>></span></a></h4>
  27. </section>
  28. <?php } ?>
  1. //1.先写一个文件上传类upload,进行上传操作的封装
  2. //2.然后直接上传文件,成功返回图片路径,失败进行相关原因提示
  3. $upload = new upload('myFile','../../albums/gallery-images',ture);
  4. $dest = $upload->uploadFile();
  5. //3.最后用PDO将相关信息存入数据库
  6. $tableName = $pref.'albums';
  7. $sql = 'insert into $tableName(pic_name,pic_det,pic_des) values (:pic_name,:pic_det,:pic_des);';
  8. $query = $db->prepare($sql);
  9. $query->bindParam(':pic_name',$_POST['pic_name'],PDO::PARAM_STR);
  10. $query->bindParam(':pic_det',$_POST['pic_det'],PDO::PARAM_STR);
  11. $query->bindParam(':pic_des',$dest,PDO::PARAM_STR);
  1. //1.登录时简单的JS校验
  2. function validate(){
  3. var username = document.getElementById("name").value;
  4. var password = document.getElementById("password").value;
  5. var authcode = document.getElementById("authcode").value;
  6. if(username.trim().length == 0){//即用户名为空
  7. alert("用户名不能为空!");
  8. form1.username.focus();
  9. return false;
  10. }else if(password.trim().length == 0){
  11. alert("密码不能为空!");
  12. form1.password.focus();
  13. return false;
  14. }else if(authcode.trim().length == 0){
  15. alert("请输入验证码!");
  16. form1.authcode.focus();
  17. return false;
  18. }
  19. return true;
  20. }
  21. //2.后台校验验证码,不正确则重定向到登录界面,并且提示验证码失败;成功则进行跳转
  22. if(isset($_REQUEST['authcode'])){
  23. if(strtolower($_REQUEST['authcode']) == $_SESSION['authcode']){
  24. if( login($_POST['name'] , $_POST['password']) ){
  25. redirect_to('../index.php');
  26. }else{
  27. redirect_back();
  28. }
  29. }else{
  30. redirect_back();
  31. }
  32. }else{
  33. redirect_back();
  34. }
  1. //后台校验
  2. session_start();
  3. require_once $_SERVER['DOCUMENT_ROOT'].'/blog/inc/session.php';
  4. require_once $_SERVER['DOCUMENT_ROOT'].'/blog/inc/common.php';
  5. header('content-type:text/html;charset=utf-8');
  6. if(!is_login()){
  7. set_notice('必须登录后方可使用本功能');
  8. redirect_to('/blog/Admin/sessions/new.php');
  9. }else{
  10. //进行相关操作
  11. }
  12. //is_login()函数
  13. function is_login(){
  14. return isset($_SESSION['userid']); //校验后台的session数组是否设置了用户id
  15. }
  16. //login()函数
  17. function login($name,$pwd,$remember_me=false){
  18. $user = load_user($name);
  19. if( $user && encrypt_password($pwd) == $user->password ){
  20. $_SESSION['userid'] = $user->id;
  21. if($remember_me){
  22. $expire_time = 7*24*3600*100 ;
  23. session_set_cookie_params($expireTime);
  24. }
  25. set_notice("欢迎您:{$name} 来到本站!");
  26. return $user;
  27. }else{
  28. set_notice("用户名或密码错误");
  29. return false;
  30. }
  31. }
  1. img { transform: rotate(360deg);
  2. -webkit-transform:rotate(360deg);
  3. -moz-transform:rotate(360deg);
  4. -o-transform:rotate(360deg);
  5. -ms-transform:rotate(360deg); }
  1. a { opacity: 0;}
  2. a:hover { opacity:1;}

充分满足了用户的界面友好,交互畅通,方便自主,个性化的要求

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注