图2-16 显示页面的登录表单
现在介绍与删除帖子相关的代码,首先重点看用于输出帖子列表的for循环,代码如下所示:
循环体的前两句用于交错相邻行的背景色,以粗体显示的第 3句是关键,它输出了一个核选框控件,且控件的名称为“ids[]”,控件的值为相应的帖子的ID。控件名称中的方括号使得表单提交时,同名的核选框中的数据以数组的方式提交到服务器端。循环体的最后两句则根据帖子的删除标志显示不同图片。
用于删除操作的按钮的HTML代码如下所示:
按钮的链接都是调用JavaScript的do_submit()函数,只是传入的参数不同。do_submit()函数的定义代码如下所示:
参数为search时,是对使用帖子搜索功能的处理;参数为其他值(即单击删除按钮传入的值)时,如果是all或none(即全部删除和全部恢复)则先调用selectAll()函数将表单中的核选框全部选中,然后再提交。selectAll()函数在op.js中的定义代码如下所示:该函数使用for循环遍历参数所指对象的所有子孙对象,如果子孙对象是核选框则将其checked属性设为true使其被选中。
SQL注入攻击的一般方法
<?php
$id = $_GET[''id'']; //获得参数
$sql = "SELECT * FROM posts WHERE postid = $id"; //定义SQL
mysql_connect("localhost", "root"); //连接服务器
mysql_select_db("guestbook"); //连接数据库
$rs = mysql_query($sql); //执行SQL
if(mysql_numrows($rs)) //如果记录存在,则输出
{
$row_rs = mysql_fetch_assoc($rs);
echo "TOPIC: ".$row_rs[''topic'']."<br>";
}
else  
PHP对于数据库的搜索主要通过使用SQL语句中的like子句来实现。如果同时搜索多个关键词,可以使用union子句来将搜索结果合并起来。以下代码实现了一个搜索页面。
<?php require_once(''Connections/conn.php''); ?>
<?php
$colname_rs = $_GET[''key'']; //获得用户输入
$result = explode('','',$_GET[''key'']);//分解用户输入的多个关键词,存入$result数组
mysql_select_db($database_conn, $conn); //连接数据库
//根据多个关键词构建SQL语句
$query_rs = "SELECT * FROM (";
for($i=0;$i<count($result);$i++) //根据每个搜索关键词构建SQL语句
{
if($i==0) //对第一个关键词,不使用UNION
$query_rs .= "SELECT * FROM searchtable WHERE title LIKE ''%$result[0]%''
OR content LIKE ''%$result[0]%''";
else //对其他关键词,使用UNION连接
$query_rs .= " UNION SELECT * FROM searchtable WHERE title LIKE
''%$result[$i]%'' OR content LIKE ''%$result[$i]%''";
}
$query_rs .= ") T ORDER BY last_access DESC"; //对搜索结果排序
//执行SQL语句
$rs = mysql_query($query_rs, $conn) or die(mysql_error());
$row_rs = mysql_fetch_assoc($rs);
$totalRows_rs = mysql_num_rows($rs);
 
在参与了几个大型PHP项目,写了很多PHP代码以后,我发现很多工具可以提高代码质量,简化发布,使得做为PHP开发人员的生涯变得轻松许多。许多这样的工具可能已经为大家所用。但是,由于一些人甚至没有注意到这些工具的存在,我会从此开始,好了,不说废话,下面是我认为所有PHP程序员应该知道的工具列表。 Phing - 一个项目构建系统
Phing 是一个基于Apache ANT 的项目构建系统。它的名字是一个拗口的语句首字母缩写 - PHing Is Not GNU make 。Phing可以做传统构建系统比如 GNU make 能做的任何事情,同时没有陡峭的学习曲线。
在phing(以及其他的构建系统)背后的思想是评估一系列相关性,然后执行一系列PHP类去正确的安装和配置一个应用系统。构建过程用一个简单的XML配置文件控制。Out of the box,phing内置可以执行一系列替换(比如:在你的开发版本和产品版本间改变include路径)、执行SQL语句、移动和复制文件、运行外部脚本等等。通过扩展包含在发行包中的“task”类,你也可以创造自己的定制任务。
对任何需要在超过一台服务器上部署大型PHP应用的人来世,Phing是一个无价之宝。同时我发现它对简单的PHP脚本也是很有用的。
Xdebug - 调试和分析工具
SyntaxHighlighter.highlight();