本轻微博包含添加文章、搜索文章、删除文章、文章列表、文章详细页面、修改文章页面等等功能,非常之简单。没有登陆功能。如果能非常熟练写出这个简单的系统,那么,您的php算是入门了。想成为大神,后面还有很长的路要走......
1、数据库设计(数据库名:test,数据表名:diary):
字段 |
类型 |
整理 |
额外 |
说明 |
id |
int(11) |
|
AUTO_INCREMENT |
ID,整形11字节,自增长 |
title |
varchar(50) |
utf8_unicode_ci |
|
标题,varchar类型,长度50,utf8编码 |
dates |
date |
|
|
日期 |
contents |
text |
utf8_unicode_ci |
|
内容,text类型 |
hits |
int(11) |
|
|
点击次数,整形11字节 |
2、数据库连接文件conn.php
header("Content-type:text/html;charset=utf-8"); //连接本地数据库 @mysql_connect("localhost:3306","root","root")or die("MySQL连接失败!"); //选择数据库 @mysql_select_db("test")or die("没有找到数据库!"); //设置数据库字符 mysql_query("set names 'utf8'");//或者mysql_set_charset("utf8");3、添加内容add.php
include("conn.php"); //判断是否点击了提交按钮 if(!empty($_POST['sub'])){ //echo($_POST['sub']); 输出“发表日志”,string型 $title = $_POST["title"]; $contents = $_POST["contents"]; //判断提交的内容是否为空 if(empty($title) || empty($contents)){ echo("<script>alert('标题或者内容为空!')</script>"); }else{ $sql="insert into `diary` (`id`,`title`,`dates`,`contents`) values (null,'$title',now(),'$contents')"; //now()为sql自带获取当前时间的函数 @mysql_query($sql) or die("提交数据库失败!"); echo("<script>alert('恭喜,成功发表日志!')</script>"); } } ?> <form action="add.php" method="post"> <label for="title">标题:</label><input name="title" id="title" type="text"><br> <label for="contents">内容:</label><textarea name="contents" id="contents" cols="15" rows="2"></textarea><br> <input type="submit" name="sub" value="发表日志"> </form>4、文章列表\首页 index.php
<div class="wraper"> <form action="index.php" method="post"> <input type="text" name="keys" /> <input type="submit" name="subs" value="搜索" /> </form> <?php include("conn.php"); //搜索 if(!empty($_POST["keys"])){ $w = "`title` like '%".$_POST["keys"]."%'"; }else{ $w = 1; } //获取数据库内容 $sql = "select * from `diary`"; $query = mysql_query($sql); //$diaryarr = mysql_fetch_array($query); //一次mysql_fetch_array只会执行一条数据,要把所有数据都执行,就用循环 while($diaryarr = mysql_fetch_array($query)){ //只要取出的数据没有分组完成,mysql_fetch_array会一直执行,只有所有数据执行完了,mysql_fetch_array就会变成false ?> <h2> <?php echo $diaryarr["title"] ?> <em> | <a href="edit.php?id=<?php echo $diaryarr['id'] ?>">编辑</a> | <a href="del.php?id=<?php echo $diaryarr['id'] ?>">删除</a> | </em> </h2> <span>发表日期:<?php echo $diaryarr["dates"] ?></span> <div class="content"> <!--截取内容长度--> <?php echo iconv_substr($diaryarr["contents"],0,100,"utf-8") ?>...... <a class="fabu" href="view.php?id=<?php echo $diaryarr['id'] ?>">阅读全文</a> </div> <hr> <?php } //结束while循环 ?> <a href="add.php">发表新日志</a> </div>5、删除页面del.php
include("conn.php"); $id = $_GET["id"]; //a链接传过来的参数 $sql = "delete from `diary` where `id` = $id"; @mysql_query($sql)or die("删除失败!"); echo "删除成功,<a href='javascript:history.go(-1)'>返回上一页</a>";6、编辑页面edit.php
<?php include("conn.php"); if(!empty($_GET["id"])){ //获取传过来的id $id = $_GET["id"]; //从数据库获取该id对应的内容,并且写入表单中,以便于修改 $sql = "select * from `diary` where `id` = $id"; $query = mysql_query($sql); $arr = mysql_fetch_array($query); } //将修改后的再提交到数据库 //判断是否点击了提交按钮 if(!empty($_POST["sub"])){ $hid = $_POST["hid"]; $title = $_POST["title"]; $contents = $_POST["contents"]; $sql2 = "update `diary` set `title`='$title', `contents`='$contents' where `id`='$hid'"; if(mysql_query($sql2)){ echo "<script>alert('更新成功!'); location.href='index.php'</script>"; } } ?> <form action="edit.php" method="post"> <!--隐藏的input框,用以获得ID作为判断--> <input type="hidden" name="hid" value="<?php echo $arr['id'] ?>"> <label for="title">标题:</label><input name="title" id="title" type="text" value="<?php echo $arr['title'] ?>"><br> <label for="contents">内容:</label><textarea name="contents" id="contents" cols="15" rows="2"><?php echo $arr['contents'] ?></textarea><br> <input type="submit" name="sub" value="更新日志"> <a href="index.php">返回首页</a> </form>7、文章预览页面view.php
<?php include("conn.php"); if(!empty($_GET["id"])){ $sql = "select * from `diary` where `id`='".$_GET["id"]."'"; $query = mysql_query($sql); $diaryarr = mysql_fetch_array($query); //点击量,每次打开这个页面,都为hits增加1 $sql2 = "update `diary` set `hits`=`hits`+1 where `id`='".$_GET["id"]."'"; mysql_query($sql2); } ?> <title><?php echo $diaryarr["title"] ?>-轻微博</title> <div class="wraper"> <h2> <?php echo $diaryarr["title"] ?> <em> | <a href="edit.php?id=<?php echo $diaryarr['id'] ?>">编辑</a> | <a href="del.php?id=<?php echo $diaryarr['id'] ?>">删除</a> | </em> </h2> <span>发表日期:<?php echo $diaryarr["dates"] ?> 点击量:<?php echo $diaryarr["hits"] ?></span> <hr> <div class="content"> <?php echo $diaryarr["contents"]; /*$contents = htmlspecialchars($diaryarr["contents"]); function codetohtml($codes){ //将php和数据库的内容的\n和空格,分别替换成<br>和nbsp; $codes = str_replace("\n","<br>",str_replace(" ","nbsp;",$codes)); return($codes); } echo codetohtml($contents);*/ ?> </div> <hr> <a class="fabu" href="index.php">返回首页</a> </div>注:1、iconv_substr("字符串",起始位置,结束位置,"字符编码") 截取英文和汉字长度
substr() 截取英文字符串长度
2、str_replace替换函数
str_replace(被替换的值,替换的值,被替换的内容);
如:function htmtocode($content){
//将php和数据库的内容的\n和空格,分别替换成<br>和nbsp;
$content = str_replace("\n","<br>",str_replace(" ","nbsp;",$content));
}
3、htmlspecialchars 格式化html 将html格式化,防止输出html时被浏览器执行
htmlspecialchars(所要格式化对象,定义单双引号,编码)
4、md5加密函数
md5(加密对象)
5、COOKIE 的使用和登陆
setcookie(cookie名称,cookie值,保存时间,cookie保存路径,起效域名,https发送)
setcookie("TEST","value",3600,"/dir",".domains.com",true);
注意:使用PHP cookie当场不能生效,需要刷新一次。