【实战】如何经过html+css+mysql+php来快速的制做动态网页(以制做一个博客网站为列)

1、开发环境的搭建javascript

   (1)apache+php+mysql环境搭建php

   由于要用apache来作服务器,mysql做为数据库来存储数据,php来写代码以此实现网页与数据库的交互数据,因此须要下载上述软件,但上述软件的安装环境、配置很麻烦,因此在这里用了一个功能强大的建站集成软件包---XAMPP
css

 

  固然,也有可能启动Apache时候出现错误。html

   (2)数据库客户端软件navigatjava

   直接在cmd命令控制台操做数据库并不方便,不够直白,固然也能够直接用phpmyadmin来操做(上述xampp软件包安装以后在游览器输入127.0.0.1/phpmyadmin便可打开),可是phpmyadmin来操做也不方便,这里便采用Oracle公司出品的数据库客户端Navicat

mysql

 

    点击链接,输入链接名,(这里我直接取了IP地址的名字127.0.0.1),主机名和端口号都不用变,这里的用户名和密码。若是是你用的是xampp,那么用户名是root,密码为空;若是不是用的是xampp安装的,按照你设置的用户名和密码登陆便可。填写完毕以后点击链接测试,没有问题直接肯定便可链接好数据库。laravel

                            

    此外你要是想掌握数据库,简单来说你想对数据库的任何操做,都必须操做sql语句,总的来讲分为四个操做:增删改查。sql

                  

    ①增:向数据库写入数据shell

    语句:insert into users (`username`,`password`) values ('name','passwd')数据库

    (ps新手必定要注意这离users这个数据表后面的``这个符号是在tab键上方的引号,而values后面的就是个单引号)

    ②删:删除已有数据

    语句:delete from users WHERE id='3'

    ③改:修改数据

    语句:update set users username='新值', password='新值' WHERE id=3

    ④查:从数据库读取数据

    语句:select * from users where id>1 order by id desc limit 0,2

(3)html网页的编写工具sublime text

phper在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提高,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货须要的能够免费分享给你们,须要的(点击→)个人官方群677079770

 

 

 

   Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但能够无限期试用),也是HTML和散文先进的文本编辑器。Sublime text具备漂亮的用户界面和强大的功能,很是适合写代码的程序猿。

         
   用sublime text来写网页代码,能够掌握这样一个小技巧,先新建一个文件,格式保存为html网页格式,而后在sublime text中打开,输入html:4s 而后按下tab键便可生成大致框架。固然这个快捷键要想使用是要按照我上述给的连接,按照步骤安装好Emmet这个插件,才能使用。

  (4)网站域名的配置

   通常来说,你在游览器打开127.0.0.1这个网址,会转到apache默认目录下的一个网址,这里我对其进行修改,修改成我作项目的目录,E:\PHP\xampp\apache\conf,打开httpd.conf文件,将里面的路径修改成你存储网站的目录,在这里个人修改成

    DocumentRoot "E:/php/xampp/workplace"
    <Directory "E:/PHP/xampp/workplace">

 

   这里要注意按照本身的下载按照路径来修改成本身的目录,其次我还对这个127.0.0.1这个网址再次作了修改,使其虚拟域名为blog.com,修改完以后重启以后,在游览器输入blog.com,便会出现下述场景:

 

 

 

       
   在这里我发现我修改的DNS配置,不知道什么时候再前面加了一条注释,致使无法打开,你们也要注意按照我给的链接配置好以后,若是打不开再看一下配置文件有无错误。

总之,配置环境和工具基本上也搭建成功了,接下来我就开始讲解这个blog的项目。

   2、博客网站的书写

   1.整体框架

   首先在这里我先介绍一下个人整体框架,讲解一下,让你们先熟悉一下。

             

 

 

 


  blog是项目的名字,admin文件夹里面存储的是后台登陆文件  core文件夹里面存储核心文件,theme文件夹存储网页的样式文件  upfiles文件夹是存储从本地上传到服务器的图片信息,以后config.php文件是整个博客网站的配置文件,header.inc.php是加载了一个页面样式信息,index.php文件是网站的首页,read.php文件是网站首页文章的具体连接。

 

 

 


   数据库表中的设计在这里我给出,方便你们参考学习,这里我主要创建了三个表,admin这个表示用来存储后台管理员注册和登陆的数据,即帐户和密码:

 

 

 


    page这个表主要是用来存储博客信息,在这里也给图片,方便安装图来建表:

 

 

 

 

   最后给出setting这个表,主要是用来存储博客的系统设置:

            

 

 

 

  2.网站后台admin的书写

 (1)登陆界面(login.php)

 

 

 

 

   关于这个页面我会在这里给出源码,登陆页面其实也就是个从数据库读取的过程,这个登陆页面的设计我主要是采用了bootstrap来设计的,不明白的能够百度一下bootstrap

 

 

 

 

   在这里面它包含了各式的样式、组件和JavaScript插件,能够说很好用。

        

 

 

 

   在这里个人使用方法是将bootstrap下载下来,而后将文件加压,复制到theme这个文件夹下面,调用方法见下面的源码,在源码中我都给出了详细的解释。

   源码:

 

 1 <?php  2 /*
 3 后台管理员登陆窗口  4  */ 
 5     
 6     /*启动session服务,记录帐号登陆的cookies*/
 7     session_start();  8     
 9     /*包含一个配置文件*/
 10     include('../config.php');  11     
 12  
 13      if($input->get('do')=='check'){  14          /*获取页面提交的用户名和密码数据*/
 15          $ausername=$input->post('ausername');  16          $apassword=$input->post('apassword');  17  
 18          /*查询页面提交的数据是否在数据库提供的数据存在的sql语句*/
 19           $sql="select * from admin where ausername='{$ausername}' and apassword='{$apassword}' ";  20           /*数据库查询语句返回结果*/
 21           $mysqli_result=$db->query($sql);  22           /*以数组形式存储数据库查询语句的返回结果*/
 23           $row=$mysqli_result->fetch_array( MYSQLI_ASSOC);  24           /*若是row确实返回告终果,则将结果的aid存储在session里,并转向home.php文件*/
 25           if(is_array($row)){  26               $_SESSION['aid']=$row['aid'];  27               header("location:home.php");  28           }else{  29               echo("帐户或密码错误");  30  }  31  }  32 ?>
 33  
 34 <!--后台管理员登陆界面></!-->
 35 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 36 <html lang="en">
 37 <head>
 38     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 39     <title>管理员登陆界面</title>
 40     <!--加载包含bootstrap里css和javascript里的文件></!-->
 41     <?php include(PATH . '/header.inc.php');?>
 42     
 43  
 44 </head>
 45 <body>
 46     <!--最外面的container容器></!-->
 47     <div class="container">
 48         <!--bootstrap使用时建议使用一个row表格类,包含12个列></!-->
 49         <div class="row" style="margin-top:200px;">
 50             <!--距左边3个列></!-->
 51             <div class="col-md-3"></div>
 52             <!--中间部分占据6列></!-->
 53             <div class="col-md-6" ">  54              
 55                 <div class="panel panel-primary">  56  <!--登陆头部分></!-->  57                       <div class="panel-heading">管理员登陆</div>  58  <!--登陆的身体部分></!-->  59                       <div class="panel-body">  60                         
 61                         <form  class="form-horizontal" action="login.php?do=check" method="post">  62  <!--登陆的用户名那一行></!-->  63                             <div class="form-group">  64                                 <label for="inputEmail3" class="col-sm-2 control-label">用户名</label>  65                             <div class="col-sm-10">  66                                   <input type="text" class="form-control" name="ausername" id="ausername" placeholder="请输入用户名" datatype="*3-10" errormsg="请输入长度 范围在3-10之间的昵称">  67  </div>  68  </div>  69                             
 70  <!--登陆的密码那一行></!-->  71                             <div class="form-group">  72                                 <label for="inputEmail3" class="col-sm-2 control-label">密码</label>  73                             <div class="col-sm-10">  74                                   <input type="password" class="form-control" name="apassword" id="apassword" placeholder="请输入密码">  75  </div>  76  </div>  77                             
 78  <!--登陆、注册那一行></!-->  79                             <div class="form-group">  80                             <div class="col-sm-3"></div>  81  <!--登陆></!-->  82                             <div class="col-sm-4">  83                                   <input type="submit" value="登陆" class='btn btn-primary'>  84  </div>  85  <!--注册></!-->  86                             <div class="col-sm-4">  87                                 <a href="register.php"><input type="button" value="注册" class="btn btn-primary"> </a>  88  </div>  89  </div>  90  </form>  91  
 92                         
 93  
 94  </div>  95  <!--登陆的尾部分></!-->  96                        <div class="panel-footer text-right">版权全部,盗版必究</div>  97  </div>  98             
 99  </div> 100  <!--距离右边三列></!--> 101             <div class="col-md-3"></div> 102  </div> 103  </div> 104  <!--窗口背景的script加载></!--> 105     <script type="text/javascript"> 106  window.onload = function() { 107  var config = { 108  vx : 4, 109  vy : 4, 110  height : 2, 111  width : 2, 112  count : 100, 113                 color : "121, 162, 185", 114                 stroke : "100, 200, 180", 115  dist : 6000, 116  e_dist : 20000, 117  max_conn : 10 118  } 119  CanvasParticle(config); 120  } 121  </script> 122     <script type="text/javascript" src="../theme/js/canvas-particle.js"></script> 123  </script> 124 </body> 125 </html>

 (2)注册界面(register.php)

   注册界面其实也就是个往数据库增长数据的过程。

 

 

  仍是给出源码,源码中我给出了详解。

 1 <?php  2     /*包含一个配置文件*/
 3     include('../config.php');  4     
 5     if($input->get('do')=='check'){  6         /*获取用户页面注册传来的用户名和密码数据*/
 7         $ausername=$input->post('ausername');  8         $apassword=$input->post('apassword');  9         $aconfirmpassword=$input->post('aconfirmpassword');  10         /*注册时的处理*/
 11         if($apassword!=$aconfirmpassword){  12             echo "先后两次输入的密码不一致";  13             exit;  14  }  15         /*将用户填入的数据插入到数据库的sql语句*/
 16         $sql="INSERT INTO admin(`ausername`,`apassword`) values('$ausername','$apassword')";  17         /*提交sql语句到数据库处理*/
 18         $is=$db->query($sql);  19         /*判断是否注册成功*/
 20         if($is){  21             echo "注册成功";  22             header("Location:login.php");  23         }else{  24             echo "注册失败";  25  }  26  }  27  
 28  
 29 ?>
 30  
 31  
 32  
 33 <!--后台管理员登陆界面></!-->
 34 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 35 <html lang="en">
 36 <head>
 37     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 38     <title>管理员注册界面</title>
 39     <!--加载包含bootstrap里css和javascript里的文件></!-->
 40     <?php include(PATH . '/header.inc.php');?>
 41     
 42 </head>
 43 <body>
 44     <!--最外面的container容器></!-->
 45     <div class="container">
 46         <!--bootstrap使用时建议使用一个row表格类,包含12个列></!-->
 47         <div class="row" style="margin-top:200px;">
 48             <!--距左边3个列></!-->
 49             <div class="col-md-3"></div>
 50             <!--中间部分占据6列></!-->
 51             <div class="col-md-6" ">  52              
 53                 <div class="panel panel-primary">  54  <!--注册头部分></!-->  55                       <div class="panel-heading">管理员注册</div>  56  <!--注册的身体部分></!-->  57                       <div class="panel-body">  58                         
 59                         <form  class="form-horizontal" action="register.php?do=check" method="post">  60  <!--注册的用户名那一行></!-->  61                             <div class="form-group">  62                                 <label for="inputEmail3" class="col-sm-2 control-label">用户名</label>  63                             <div class="col-sm-10">  64                                   <input type="text" class="form-control" name="ausername" id="ausername" placeholder="请输入用户名">  65  </div>  66  </div>  67                             
 68  <!--注册的密码那一行></!-->  69                             <div class="form-group">  70                                 <label for="inputEmail3" class="col-sm-2 control-label">密码</label>  71                             <div class="col-sm-10">  72                                   <input type="password" class="form-control" name="apassword" id="apassword" placeholder="请输入密码">  73  </div>  74  </div>  75  <!--注册的密码肯定那一行></!-->  76                             <div class="form-group">  77                                 <label for="inputEmail3" class="col-sm-2 control-label">确认密码</label>  78                             <div class="col-sm-10">  79                                   <input type="password" class="form-control" name="aconfirmpassword" id="aconfirmpassword" placeholder="请再次输入密码">  80  </div>  81  </div>  82                             
 83  <!--提交注册那一行></!-->  84                             <div class="form-group">  85                             <div class="col-sm-4"></div>  86                             <div class="col-sm-6">  87                                   <input type="submit" value="注册" class='btn btn-primary btn-lg btn-block'>  88  </div>  89  </div>  90  </form>  91  
 92                         
 93  
 94  </div>  95  <!--登陆的尾部分></!-->  96                        <div class="panel-footer text-right">版权全部,盗版必究</div>  97  </div>  98             
 99  </div> 100  <!--距离右边三列></!--> 101             <div class="col-md-3"></div> 102  </div> 103  </div> 104  <!--窗口背景的script加载></!--> 105     <script type="text/javascript"> 106  window.onload = function() { 107  var config = { 108  vx : 4, 109  vy : 4, 110  height : 2, 111  width : 2, 112  count : 100, 113                 color : "121, 162, 185", 114                 stroke : "100, 200, 180", 115  dist : 6000, 116  e_dist : 20000, 117  max_conn : 10 118  } 119  CanvasParticle(config); 120  } 121  </script> 122     <script type="text/javascript" src="../theme/js/canvas-particle.js"></script> 123  </script> 124 </body> 125 </html>

(3)后台管理页面(home.php)

 

 

 

 在源码中将上述网站的标题那部分单独给拿出来作了一个文件(nav.inc.php),这里也是给出源码,供你们学习参考。

 home.php源码

 1 <?php  2 /*
 3 后台管理员登陆以后php控制端  4  */     
 5     include ('check.php');  6 ?>
 7  
 8 <!--后台管理员登陆以后的界面<>/!-->
 9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
10 <html lang="en">
11 <head>
12     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
13     <title>管理员登陆</title>
14     <?php include(PATH . '/header.inc.php');?>  <!--全部的页面都需加载这个文件></!-->
15 </head>
16 <body>
17     <?php include('nav.inc.php');?>  <!--管理员登陆页面的标题部分></!-->
18 </body>
19 </html>

nav.inc.php

 1 <!--后台管理界面的上方标题></!-->
 2 <nav class="navbar navbar-default" role="navigation">
 3       <div class="container-fluid">
 4         <!-- Brand and toggle get grouped for better mobile display -->
 5         <div class="navbar-header">
 6           <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
 7             <span class="sr-only">Toggle navigation</span>
 8             <span class="icon-bar"></span>
 9             <span class="icon-bar"></span>
10             <span class="icon-bar"></span>
11           </button>
12           <a class="navbar-brand" href="home.php">ADMIN</a>
13         </div>
14  
15         <!-- Collect the nav links, forms, and other content for toggling -->
16         <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
17           <ul class="nav navbar-nav">
18             <li ><a href="blog.php">博客管理 <span class="sr-only">(current)</span></a></li>
19             <li><a href="auser.php">管理员管理</a></li>
20              <li><a href="setting.php">系统管理</a></li>
21           </ul>
22          
23           <ul class="nav navbar-nav navbar-right">
24            
25             <li class="dropdown">
26               <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <?php echo $session_user['ausername'];?> <span class="caret"></span></a>  <!--输出此时登陆的帐户名></!-->
27               <ul class="dropdown-menu">
28                 <li><a href="logout.php">退出</a></li>
29                
30               </ul>
31             </li>
32           </ul>
33         </div><!-- /.navbar-collapse -->
34       </div><!-- /.container-fluid -->
35     </nav>

 (4)博客管理界面(blog.php)

  这里有三个功能,修改、删除、添加博客界面,下面我将单独列出添加博客这个界面

 

(5)添加博客界面(blog_add.php)

   为何要单独列出添加博客这个界面呢?由于在添加博客这个界面中加载了一个编辑器,一个强大的在线编辑器simditor在这里这个编辑器若是须要图片上传功能的话,须要在文件中设置,这个文件设置为(blog_uopload.php)

   blog_add.php源码

 

 1 <?php  2     /*后台除去管理员登陆界面,均需加载这个文件,来验证该页面管理员是否登陆*/ 
 3     include ('check.php');  4     /*取出传来的pid从而判断是添加仍是修改操做*/
 5     $pid=$input->get('pid');  6     /*初始化page,为了区别添加仍是修改操做*/
 7     $page=array(  8             'title'   => '',
 9             'author'  => '',
 10             'content' => '',
 11  );  12     /*若是pid大于0,能够得出并非添加操做,而是修改操做*/
 13      if($pid>0){  14          $sql="select * from page where pid ='{$pid}' ";  15          $res=$db->query($sql);  16          $page=$res->fetch_array(MYSQLI_ASSOC);  17  }  18  
 19  
 20  
 21      /*对于添加操做操做而言,帐户或密码不能为空*/
 22     if($input->get('do')=='add'){  23         $title=$input->post('title');  24         $author=$input->post('author');  25         $content=$input->post('content');  26         if(empty($title)||empty($author)||empty($content)){  27             echo("数据不能为空");  28  }  29         /*若是aid大于1,则得出更新操做,不然执行添加操做*/
 30         if($pid>0){  31             $uptime=time();  32             $sqlTpl="UPDATE page set title='%s',author='%s',content='%s',uptime='%d' where pid='%d' ";  33             $sql=sprintf($sqlTpl,$title,$author,$content,$uptime,$pid);  34  }  35         else{  36             $intime=time();  37             $sqlTpl="INSERT INTO page(`title`,`author`,`content`,`intime`,`uptime`) values('%s','%s','%s','%d','%d')";  38             $sql=sprintf($sqlTpl,$title,$author,$content,$intime,0);  39             
 40  }  41         /*判断是否有结果*/
 42         $is=$db->query($sql);  43         if($is){  44             header("location:blog.php");  45         }else{  46             echo "执行失败";  47  }  48  }  49 ?>
 50  
 51 <!--管理员添加博客或修改博客的界面<>/!-->
 52 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 53 <html lang="en">
 54 <head>
 55     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 56     <title>添加博客</title>
 57     <?php include(PATH . '/header.inc.php');?>
 58  
 59     <!--加载simiditor编辑器的文件></!-->
 60     <link rel="stylesheet" type="text/css" href="../theme/simditor/styles/simditor.css" />
 61     <script type="text/javascript" src="../theme/simditor/scripts/module.js"></script>
 62     <script type="text/javascript" src="../theme/simditor/scripts/hotkeys.js"></script>
 63     <script type="text/javascript" src="../theme/simditor/scripts/uploader.js"></script>
 64     <script type="text/javascript" src="../theme/simditor/scripts/simditor.js"></script>
 65  
 66 </head>
 67 <body>
 68     <?php include('nav.inc.php');?>
 69     <div class="container">
 70     <h2> 博客管理 <small class="pull-right"><a class='btn btn-default' href="blog.php">返回</a></small></h2>
 71     <hr/>
 72         <div class="rows">
 73             <form class="form-horizontal" role="form" action="blog_add.php?do=add&pid=<?php echo $pid;?>" method="post">
 74               <div class="form-group">
 75                 <label for="inputEmail3" class="col-sm-2 control-label">标题</label>
 76                 <div class="col-sm-6">
 77                   <input type="text" class="form-control" name="title" placeholder="请输入标题" value='<?php echo $page['title'];?>'>
 78                 </div>
 79               </div>
 80               <div class="form-group">
 81                 <label for="inputPassword3" class="col-sm-2 control-label">做者</label>
 82                 <div class="col-sm-4">
 83                   <input type="text" class="form-control" name="author" placeholder="请输入做者" value='<?php echo $page['author'];?>' >
 84                 </div>
 85               </div>
 86  
 87               <div class="form-group">
 88                 <label for="inputPassword3" class="col-sm-2 control-label">正文</label>
 89                 <div class="col-sm-8">
 90                      <textarea id="content" name="content" class="form-control"><?php echo $page['content'];?></textarea>
 91                      <!--在script中初始化编辑器,在这里注意script里加载的textarea的ID要与上方textarea的id号一致></!-->
 92                     <script>
 93                         var editor = new Simditor({  94                           textarea: $('#content'),
 95                           upload:{  96                               url:'blog_upload.php',
 97                               fileKey:'file1'
 98  }  99                           //optional options
100  }); 101                     </script>                     
102                 </div>
103               </div>
104               
105               <div class="form-group">
106                 <div class="col-sm-offset-2 col-sm-6">
107                   <button type="submit" class="btn btn-default">提交</button>
108                 </div>
109               </div>
110             </form>
111             
112         </div>
113     </div>
114 </body>
115 </html>
116  

  blog_upload.php源码

 1 <?php  2     /*后台除去管理员登陆界面,均需加载这个文件,来验证该页面管理员是否登陆*/ 
 3     include('check.php');  4     /*将文件上传到服务器的目录里*/
 5     $key='file1';  6     $dir='../upfiles/';  7     if(isset($_FILES[$key])){  8         $file=$_FILES[$key];  9         if($file['error']==0){ 10             /*文件所处服务器的目录*/
11             $pathName=$dir . $file['name']; 12             /*文件所在服务器的网址*/
13             $urlName='http://blog.com/blog/upfiles' . $file['name']; 14             $is=move_uploaded_file($file['tmp_name'], $pathName); 15             /*判断是否移动成功*/
16             if(!$is){ 17                 die("上传失败"); 18  } 19             /*编辑器来判断是否成功上传图片*/
20             $json=array( 21                 'success' => true,
22                 'msg'     => '',
23                 'file_path'=>$urlName
24  ); 25             echo json_encode($json); 26  } 27  } 28 ?>

(6)管理员管理界面(auser.php)

  这里仍是有三个功能,修改、删除和添加,这里我就不单独一一列出来了,具体可参考文末给出的源码

 

 

 (7)系统管理界面

  系统管理能够在这里设置标题、介绍和博客每页的显示数量

 

 

  3.主界面(index.php)

  这里是游客访问的主界面,这里给出源码你们做为参考,

 

 

 阅读界面(read.php)

  当你想阅读该文章时,可点击标题进入阅读页,进行阅读,一样给出源码,做为参考

 

phper在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提高,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货须要的能够免费分享给你们,须要的(点击→)个人官方群677079770

相关文章
相关标签/搜索