class="p0">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?/>
?
其次是效果图:
?
?
?
DBA21.jpg">
?
?
?
?
?
最易出现的错误:
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-->