本轻微博包含添加文章、搜索文章、删除文章、文章列表、文章详细页面、修改文章页面等等功能,非常之简单。没有登陆功能。如果能非常熟练写出这个简单的系统,那么,您的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.phpinclude("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.phpinclude("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当场不能生效,需要刷新一次。
