目录
一、创建表
二、制作首页(创建主题以及显示列表)
三、制作各个主题的页面(输入回帖和显示列表)
四、制作消息的查询界面
五、制作读取数据库信息的原始文件
六、制作数据重置页面
七、效果图
八、问题
1、目前无法处理此请求HTTP ERROR 500
2、The requested URL was not found on this server
一、创建表
tbj0(主题表)
tbj1(消息表)
表tbj0的列
列名 | 内容 |
group_c | 用于输入主题的组号。列为INT类型且具有自动连续编号功能 |
topic_c | 用于输入主题名,数据类型为VARCHAR(30) |
date_c | 用于输入创建主题的日期和时间。通过MySQL的NOW函数自动输入。数据类型为DATETIME |
ip_c | 用于存储发送信息的客户端的IP地址。不显示在浏览器上,而是作为出现特殊情况时的记录保留下来。这里暂且将数据类型设置为20个字符的字符串类型VARCHAR(20) |
表tbj1的列
列名 | 内容 |
empid | 用于存储所有主题中的回帖的编号 |
name | 用于输入执行操作的人的姓名。数据类型为VARCHAR(30) |
mess | 用于输入消息。数据类型为TEXT |
date_c | 用于输入插入记录时的日期和时间,通过MySQL的NOW函数自动输入 |
group_c | 用于存储主题的编号。作为和表tbj0连接时的键使用。数据类型为INT |
ip_c | 和表tbj0一样,用于存储发送信息的客户端的IP地址 |
二、制作首页(创建主题以及显示列表)
/**************bulletin_top.php*******************/<?php/******** 读取数据库信息等 **************/
require_once("data/db_info.php");/********** 连接数据库,选择数据库 ***********/
$s=new pdo("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);/************* 显示标题、图片等 **********/
print <<<eot1
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>"海贼王的页面</title>
</head>
<body style="background-color:silver">
<img src="pic/jk.gif" alt="小路飞">
<span style="color:purple;font-size:35pt">
海贼王的公告板!
</span><p>请点击要查看的主题编号</p>
<hr>
<div style="font-size:20pt">(主题列表)<div>
eot1;/**************** 获取客户端IP地址 ******************/
$ip=getenv("REMOTE_ADDR");/********** 如果主题名的变量$su_d有数据,则将其插入表tbj0***********/
$su_d=isset($_GET["su"])?htmlspecialchars($_GET["su"]):null;
if($su_d<>""){$s->query("INSERT INTO tbj0 (topic_c,date_c,ip_c) VALUES ('$su_d',now(),'$ip')");
}$re=$s->query("SELECT * FROM tbj0");
while($result=$re->fetch()){print <<<eot2<a href="bulletin.php?gu=$result[0]">$result[0] $result[1]</a><br>$result[2]创建<br><br>eot2;
}/************** 用于创建主题的表单,以及查询页面的链接 *************/
print <<<eot3<hr><div style="font-size:20pt">(创建主题)</div>请在这里创建新主题!<br><form method="GET" action="bulletin_top.php">新创建主题的标题<input type="text" name="su" size="50"><div><input type="submit" value="创建"></div></form><hr><span style="font-size:20pt">(查询消息)</span><a href="bulletin_search.php">点击这里查询</a><hr></body></html>
eot3;
?>
三、制作各个主题的页面(输入回帖和显示列表)
/**************bulletin.php*******************/<?php/*************** 读取数据库信息等 ***********/
require_once("data/db_info.php");/**************** 连接数据库,选择数据库 *********/
$s=new PDO("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);/*************** 获取主题的组号(gu),将其赋给$gu_d **********/
$gu_d=$_GET["gu"];/*************** 如果$gu_d中包含数字以外的字符,则停止处理**********/
if(preg_match("/[^0-9]/",$gu_d)){print <<<eot1输入了非法的值<br><a href="bulletin_top.php">请点击这里回到主题列表</a>
eot1;/************** 如果$gu_d中不包含数字以外的字符,则按普通值处理 **********/
}elseif(preg_match("/[0-9]/",$gu_d)){/************** 获取姓名和消息并删除标签 ****************/
$na_d=isset($_GET["na"])?htmlspecialchars($_GET["na"]):null;
$me_d=isset($_GET["me"])?htmlspecialchars($_GET["me"]):null;/************** 获取IP地址 **************************/
$ip=getenv("REMOTE_ADDR");/**************** 显示与主题组号(gu)相匹配的记录 **************/
$re=$s->query("SELECT topic_c FROM tbj0 WHERE group_c=$gu_d");
$result=$re->fetch();/***************** 创建显示主题内容的字符串$topic_c_com **********/
$topic_c_com="「".$gu_d." ".$result[0]."」";/**************** 输出主题显示的标题 *************/
print <<<eot2<!DOCTYPE html><html><head><meta charset="UTF-8"><title>海贼王 $topic_c_com 主题 </title></head><body style="background-color:silver"><div style="color:purple;font-size:35pt">$topic_c_com 主题!</div><br><div style="font-size:18pt">$topic_c_com 的消息</div>
eot2;/************ 如果输入了姓名($na_d),则将记录插入tbj1 **************/
if($na_d<>""){$re=$s->query("INSERT INTO tbj1 VALUES (0,'$na_d','$me_d',now(),$gu_d,'$ip')");
}/*************** 显示出水平线 ***************/
print "<hr>";/************** 按时间顺序显示回帖数据 *************/
$re=$s->query("SELECT * FROM tbj1 WHERE group_c=$gu_d ORDER BY date_c");$i=1;
while($result=$re->fetch()){print "$i($result[0]):$result[1]:$result[3] <br>";print nl2br($result[2]);print "<br><br>";$i++;
}print <<<eot3<hr><div style="font-size:18pt">请在这里向 $topic_c_com 中写消息</div><form method="GET" action="bulletin.php"><div>姓名 <input type="text" name="na"></div>消息<div><textarea name="me" rows="10" cols="70"></textarea></div><input type="hidden" name="gu" value=$gu_d><input type="submit" value="发送"></form><hr><a href="bulletin_top.php">返回主题列表</a></body></html>
eot3;/************ 当$gu_d中不包含数字也不包含数字以外的字符时的处理 *************/
}else{print "请选择主题。<br>";print "<a href='bulletin_top.php'>点击这里返回主题列表</a>";
}?>
四、制作消息的查询界面
/**************bulletin_search.php*******************/<?php/************ 读取数据库信息等 ****************/
require_once("data/db_info.php");/************* 连接数据库,选择数据库 **************/
$s=new PDO("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);/*************** 显示标题等 **************/
print <<<eot1<!DOCTYPE html><html><head><meta charset="UTF-8"><title>海贼王的查询页面</title></head><body style="breakground-color:aqua"><hr><div style="font-size:18pt">(查询结果如下)</div>
eot1;/****************** 获取查询字符串并删除标签 ************/
$se_d=isset($_GET["se"])?htmlspecialchars($_GET["se"]):null;/************* 如果查询字符串($se_d)中有数据,则执行查询处理 *********/
if($se_d<>""){/************ 查询的SQL语句,连接表tbj1和表tbj0 ********************/
$str=<<<eot2SELECT tbj1.empid,tbj1.name,tbj1.mess,tbj0.topic_cFROM tbj1JOIN tbj0ONtbj1.group_c=tbj0.group_cWHERE tbj1.mess LIKE "%$se_d%"
eot2;/************* 执行查询 ****************/
$re=$s->query($str);
while($result=$re->fetch()){print " $result[0] : $result[1] : $result[2] ($result[3])";print "<br><br>";
}
}/************ 用于输入查询字符串的页面,以及指向首页的链接 **************/
print <<<eot3<hr><div>请输入消息中含有的字符!</div><form method="GET" action="bulletin_search.php">查询字符串<input type="text" name="se"><div><input type="submit" value="查询"></div></form><br><a href="bulletin_top.php">返回主题列表</a></body></html>
eot3;?>
五、制作读取数据库信息的原始文件
/**************db_info.php*******************/<?php
$SERV="localhost";
$USER="root";
$PASS="root";
$DBNM="db1";?>
六、制作数据重置页面
/**************bulletin_reset.php*******************/<?php
require_once("data/db_info.php");
$s=new PDO("mysql:host=$SERV;dbname=$DBNM",$USER,$PASS);$s->query("DELETE FROM tbj0");
$s->query("DELETE FROM tbj1");
$s->query("ALTER TABLE tbj0 AUTO_INCREMENT=1");
$s->query("ALTER TABLE tbj1 AUTO_INCREMENT=1");print "将海贼王的表初始化了";?>
七、效果图
八、问题
1、目前无法处理此请求HTTP ERROR 500
找到对应版本的php.ini,将下面的值由off改为on,然后重启服务器。
display_errors = On
display_startup_errors = On
2、The requested URL was not found on this server
找到Apache文件下的httpd.conf配置文件,将下面的值由none改为all,然后重启服务器。
AllowOverride All