submiting.php 用于处理留言者提交的留言信息。该页面分为两个部分:留言信息预处理与留言信息写入数据表。
留言信息预处理部分首先要对信息的安全性做处理,其次对有长度要求或格式要求(如 email 格式)的做处理:
// 禁止非 POST 方式访问 if(!isset($_POST['submit'])){ exit('非法访问!'); } // 表单信息处理 if(get_magic_quotes_gpc()){ $nickname = htmlspecialchars(trim($_POST['nickname'])); $email = htmlspecialchars(trim($_POST['email'])); $content = htmlspecialchars(trim($_POST['content'])); } else { $nickname = addslashes(htmlspecialchars(trim($_POST['nickname']))); $email = addslashes(htmlspecialchars(trim($_POST['email']))); $content = addslashes(htmlspecialchars(trim($_POST['content']))); } if(strlen($nickname)>16){ exit('错误:昵称不得超过16个字符串 [ <a href="javascript:history.back()">返 回</a> ]'); } if(strlen($nickname)>60){ exit('错误:邮箱不得超过60个字符串 [ <a href="javascript:history.back()">返 回</a> ]'); }
在安全性处理部分,对系统 get_magic_quotes_gpc() 参数做检测。默认 get_magic_quotes_gpc() 为开启状态(值为1),但也有可能为关闭状态。因此当没开启时,进行 addslashes 转义处理。
除了 get_magic_quotes_gpc() 检测外,还做了 htmlspecialchars 特殊字符串转换及 trim 处理。
接下来对昵称及电子邮件的长度限制做了检测,注意在本例中没有做邮箱格式检测。如果需要做邮箱格式检测,请参考《PHP 用户注册》一文。
当留言信息处理完毕之后,可将数据写入对应的留言表:
// 数据写入库表 require("./conn.php"); $createtime = time(); $insert_sql = "INSERT INTO guestbook(nickname,email,content,createtime)VALUES"; $insert_sql .= "('$nickname','$email','$content',$createtime)"; if(mysql_query($insert_sql)){ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtm l1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta http-equiv="Refresh" content="2;url=index.php"> <title>留言成功</title> </head> <body> <p> 留言成功!非常感谢您的留言。<br />请稍后,页面正在返回... </p> </body> </html> <?php } else { echo '留言失败:',mysql_error(),'[ <a href="javascript:history.back()">返 回</a> ]'; } ?>
这里是很普通的 mysql_query 函数数据写入操作。由于写入成功后要使用 html meta 的 Refresh 属性自动转向至留言主界面,因此在两段 PHP 代码间插入了 html 代码。
至此,整个 PHP 留言板程序的前台用户留言及展示部分已经完成。