一共写了四个文件,都很简单。
第一个是主页,也就是留言板主界面。gbook.php。
<?php
//包含链接数据库的文件
include('connect.php');
$sql = "SELECT * FROM msg ORDER BY id DESC";
//query 返回了一个存储了以上 SQL语句 指定数据的对象。
$mysqli_result = $db->query($sql);
//如果 query 返回了一个 fasle 说明 SQL 语句失败了
if ($mysqli_result === false){
echo "SQL错误";
exit;
}
/*
fetch_array 是 query 返回的对象里自带的方法,调用它会产生一个存储了一段数据的数组。
首次调用 fetch_array 显示最新的一条记录,重复调用依次显示后面的记录,如果没有记录可以显示,则返回 NULL。
下面用了一个循环,每循环一次就会把 fetch_array 产生的数组保存在 $rows[] 数组中。
这样 $rows 就是一个二维数组,每个分支都是一段数据。
*/
while ($row = $mysqli_result->fetch_array( MYSQL_ASSOC )){
$rows[] = $row;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>留言本</title>
<style>
.wrap{
width:600px;
margin:0px auto;
}
.add{overflow: hidden;}
.add .content{
width:598px;
margin:0;
padding:0;
}
.add .user{
float:left;
}
.add .btn{
float:right;
}
.msg{margin:20px 0px;background: #ccc;padding:5px;}
.msg .info{overflow: hidden;}
.msg .user{float:left;color:blue;}
.msg .time{float:right;color:#999;}
.msg .content{width:100%;}
</style>
</head>
<body>
<div class='wrap'>
<!-- 发表留言 -->
<div class='add'>
//把这个表单提交的内容发送给 save.php 文件,用 POST 方法。
<form action="save.php" method="post">
<textarea name='content' class='content' cols='50' rows='5'></textarea>
<input name='user' class='user' type='text' />
<input class='btn' type='submit' value='发表留言'/>
</form>
</div>
/*
foreach 遍历数组函数。
foreach 的可选参数 as $value 。意思就是把当前数组的变量赋值给 as 后边的那个变量。
这里的意思就是把 $rows 这个数组目前指针所指向的值赋值给 $row。
然后在依次用 HTML 和 CSS 形式来显示数组的数据。
*/
<?php
foreach($rows as $row){
?>
<!-- 查看留言 -->
<div class='msg'>
<div class='info'>
//这是用户名
<span class='user'><?php echo $row['user'];?></span>
//这是留言时间
<span class='time'><?php echo date("Y-m-d H:i:s",$row['intime'])?></span>
</div>
//这是留言内容
<div class='content'>
<?php echo $row['content'];?>
</div>
</div>
<?php
}
?>
</div>
</body>
</html>
这是我的第二个文件,用来检测用户输入数据是否违法,并把数据发送到数据库然后跳转。save.php
<?php
//定义了一个用来查用户是否有违法昵称的类。
include('input.php');
//数据库链接
include('connect.php');
//POST 是一个数组,把传来每个输入框的数据按关联键(关联键名为输入框的 name 属性)保存,用变量把他数据取出来。
$content = $_POST['content'];
$user = $_POST['user'];
$input = new input();
//调用类方法,检查留言内容
$is = $input->post( $content );
if( $is == false ){
die('留言内容的数据不正确');
}
//调用函数,检查留言人
$is = $input->post( $user );
if( $is == false ){
die('留言人的数据不正确');
}
var_dump( $content, $user );
/*
获取当前时间,
*/
$time = time();
$sql = "INSERT INTO msg (content,user,intime) value ('{$content}','{$user}','{$time}')";
$is = $db->query($sql);
if($is === false){
echo "你的留言内容没有保存成功";
exit;
}
//跳转回留言板主界面。
header("location:gbook.php");
?>
第三个文件,用于链接数据库,connect.php
<?php
//预先定义数据库链接参数
$host = '127.0.0.1';
$user = 'root';
$pwd = '';
$dbname = 'php10';
$db = new mysqli( $host, $user,$pwd,$dbname);
if ($db->connect_errno <> 0){
die('链接数据库失败');
}
//设定数据库数据传递的编码
$db->query("SET NAMES UTF8");
?>
第四个文件,用于添加敏感关键字,input.php
<?php
class input{
//定义函数,对数据进行检查
function post( $content ){
if( $content == '' ){
return false;
}
//禁止使用的用户名
$n = [ '张三', '李四', '王五' ];
foreach( $n as $name ){
if( $content == $name ){
return false;
}
}
return true;
}
}
以上,我根据视频学习的 PHP 留言板就结束了。