PHP留言板开发
留言板是网站中比较常用的工具,通过开发留言板我们将可以熟悉数据库的简单操作,真正开始编写一个多文件的PHP项目。
同时,在这次项目开发的过程中,我还第一次见识了什么是多种语言混编,加深了对“PHP是一种脚本语言的理解”。
首先让我来梳理一下编写留言版所需要的知识:
1、学会操作mysql数据库的基本知识,学会建表以及对表进行简单的增删改查;
2、学会使用自定义函数,以及简单的逻辑语句;
3、<from></form>标签的使用;
4、“\n”和” ”需要被替换;
5、静态网页基础;(没有的话先用dreamweaver生成代码)
6、Cookie的使用;
截止十月七日,我已经实现了添加留言,查看留言,登陆,md5加密四个操作。下面我将讲解这四个方面的实现过程:
先把代码呈上:
文件:add.php(添加留言)
?php
//include_once ('conn.php');
include_once ('head.php');
if(isset($_POST['submit']) &&$_POST['submit']){
$sql = "insert into text (id,uid,title,contect)values('','$_POST[uid]','$_POST[title]','$_POST[contect]')";
$result=mysql_query($sql)or die(mysql_error());
if($result){
echo "发表成功";
}
}
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<!-- TemplateBeginEditable name="doctitle" -->
<title>无标题文档</title>
<!-- TemplateEndEditable -->
<!-- TemplateBeginEditable name="head" -->
<!-- TemplateEndEditable -->
<style type="text/css">
<!--
body {
background-color: #99FF00;
}
-->
</style></head>
<form action ="add.php" method = "post" name = "myform" onsubmit ="return CheckPost();" >
用户:<input type ="text" size ="10" name ="uid"/><br>
标题:<input type ="text" name ="title"/><br/>
用户:<textarea rows="10" cols="80" name ="contect"></textarea><br/>
<input type ="submit" name="submit" value="发布消息"/>
</form>
<script type="text/javascript">
function CheckPost(){
if(myform.uid.value=="")
{
alert("请填写用户");
myform.uid.focus();
return false;
}
if(myform.title.value==""){
alert("请填写标题");
myform.uid.focus();
return false;
}
if(myform.contect.value.length<5){
alert("输入的字符不能少于5个");
return false;
}
}
</script>
关键代码:
function CheckPost(){
if(myform.uid.value=="")
{
alert("请填写用户");
myform.uid.focus();
return false;
}
if(myform.title.value==""){
alert("请填写标题");
myform.uid.focus();
return false;
}
if(myform.contect.value.length<5){
alert("输入的字符不能少于5个");
return false;
}
}
(判断输入是否合乎条件;)
文件:conn.php(访问mysql数据库)
<?php
$conn = @mysql_connect("localhost","root","") or die("连接错误");
mysql_select_db("nettext",$conn);
mysql_query("set names 'GBK'");//使用GBK中文编码;
function htmToCode($contect) {
$contect = str_replace("\n", "<br>", str_replace(" "," ",$contect));
return $contect;
}
//优化:用系统函数屏蔽关键字
?>
文件:list.php(显示留言)
<?php error_reporting(0);?>
<?php
//include ("conn.php");
include ("head.php");
?>
<table width = 500 border = "0" align ="center" cellpadding = "S" cellspacing="1" bgcolor ="#add3ef">
<?php
@$sql = "select * from text" or die(mysql_errno());
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)){
?>
<tr bgcolor = "#eff3ff">
<td>标题: <?php echo $row[title]?> 用户:<?php echo $row[uid]?></td>
</tr>
<tr bgcolor = "#ffffff">
<td>内容:<?php echo htmToCode($row[contect])?></td>
</tr>
<?php
}
?>
</table>
文件:login.php(实现登陆)
<?php error_reporting(0);?>
<?php
include ("head.php");
//include ("conn.php");
//echo md5('admin');
if($_GET[out]){
setcookie("cookie","out");
echo "<script language = \"javascript\">location.href='login.php';</script>";
}
if($_POST[uid]=='admin'){
$pw=md5($_POST(password));
if($pw=="21232f297a57a5a743894a0e4a801fc3"){
setcookie("cookie","ok");
echo "<script language = \"javascript\">location.href='login.php';</script>";
}
}
echo $_GET['cookie'];
if($_COOKIE['cookie']!="ok"){
?>
<script type="text/javascript">
function Checklogin(){
if(myform2.uid.value==""){
alert("请填写登陆名");
myform.uid.focus();
return false;
}
if(myform.password.value==""){
alert("请填写密码");
myform.password.focus();
return false;
}
}
//同一个工程的表单名
</script>
<form action = "" method = "post" name = "myform2" onsubmit = "return Checklogin();">
I D:<input type ="text" name = "uid" /><br>
密码:<input type ="password" name = "password" />
<input type ="submit" name ="submit" value ="登陆"/>
</form>
<?php
}else {
?>
<a href='?out = login'>退出<input type ="text" name = "exit" /></a>
<?php
}
?>
关键代码:
Cookies:setcookie("cookie","ok");(设置cookie为ok表示登陆)
setcookie("cookie","out");(设置cookie为out表示登出)
文件:head.php(网页上方“添加留言”、“浏览留言”、“登陆”)
<?php
include ("conn.php");
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<!-- TemplateBeginEditable name="doctitle" -->
<title>无标题文档</title>
<!-- TemplateEndEditable -->
<!-- TemplateBeginEditable name="head" -->
<!-- TemplateEndEditable -->
<style type="text/css">
<!--
body {
background-color: #99FF00;
}
-->
</style></head>
<b><a href = "add.php">添加留言 </a>| <a href = "list.php">浏览留言 </a>|<a href ="login.php">登陆</a> </b>
<hr />
其次是效果图:
最易出现的错误:
1、
解决此问题的关键代码:
2、
Fatal error: Cannot redeclare htmtocode() (previously declared in D:\wamp\www\workplace\Borad1004\conn.php:6) in D:\wamp\www\workplace\Borad1004\conn.php on line 9
原因:改文件存在两个include(“”),且其中一个include(“”)所include的文件包含其另一个include(“”)
如:
解决方法:去掉add.php中的include(‘conn.php’);——对最后结果没有任何影响
<!--EndFragment-->