表单是一种给你的站点增加交互功能的最快,最容易的途径。表单允许你询问你的顾客是否喜欢你的产品,让不经意访问到你的站点的访问者留下评论,或者向漂亮的美眉们要她们的电话号码。PHP能大大简化基于网页表单提交的数据处理工作-如下面我们的第一个例子所示:
--------------------------------------------------------------------------------
< html>
< head>
< basefont face="宋体">
< /head>
< body>
< center>
< form method="GET" action="login.php">
< table cellspacing="5" cellpadding="5" border="0">
< tr>
< td>
< font size="-1">请问你的名字是?< /font>
< /td>
< td align="left">
< input type="text" name="name" size="10">
< /td>
< /tr>
< tr>
< td colspan="2" align="center">
< input type="submit">
< /td>
< /tr>
< /table>
< /form>
< /center>
< /body>
< /html>
--------------------------------------------------------------------------------
整个页面最值得注意的是那个 < FORM> 标签
--------------------------------------------------------------------------------
< form method="GET" action="login.php">
...
< /form>
--------------------------------------------------------------------------------
你可能已经知道了,< FORM>标签的ACTION属性值明确指定了将处理表单里输入的信息的服务器端脚本名-在这里是"login.php",而 METHOD属性是说明信息将如何传送。
现在给你揭开迷团的另一半-"login.php" 脚本文件。如果不出意外,这个脚本将接受输入的名字,检查是否用户存在,决定是允许还是拒绝进入站点。由于你还没学到PHP的条件语句和逻辑处理,我们现在不打算给你论证清楚-相反,我们仅仅给你展示在前面表单里提交的数据是如何被传送到 "login.php",并能被这个文件使用的。
这就是 "login.php"
--------------------------------------------------------------------------------
< html>
< head>
< basefont face="宋体">
< /head>
< body>
< center>
< font face="宋体" size="-1">
我想知道你是否听说过莎士比亚,< ? echo $name; ?>.
< p>
他要求得到一束另一个名字的玫瑰花,因为那束闻起来可能会更芳香一些。
< p>
你认为呢?
< /font>
< /center>
< /body>
< /html>
--------------------------------------------------------------------------------
当你在表单里输入数据,例如(“张三”),并且提交后,你将看到如下页面:
--------------------------------------------------------------------------------
我想知道你是否听说过莎士比亚,张三
他要求得到一束另一个名字的玫瑰花,只为那束闻起来可能会更芳香一些
你认为呢?
--------------------------------------------------------------------------------
你将看到,无论何时,当表单提交给PHP脚本时,所有的表单里的变量值和表单的名字将成对地输送到脚本中,从而可以被脚本任意调用。在上面的例子中,当表单被提交后,变量$name在脚本 "login.php"中被自动创建,并且表单里用户输入的值也被赋给该变量。
如果你用Perl来做同样的事情,你需要非常清楚地写出Perl代码来获取表单里的变量值。通过自动创建并赋值,PHP简化了你的代码,大大提高了开发速度-表单处理是PHP优于Perl的两个原因之一。
很明显,PHP也支持表单提交的 POST方法,所有你需要做的仅仅是把METHOD的值标注为"POST" 。
当然,你刚才看到的那个例子是非常基本的。真正来点重量级的程序,你需要知道如何去组织条件语句。非常基本的条件语句是比较语句-例如:“如果某和某相等,则用某种方法做这个动作”
PHP有一串特意设计的操作符以方便在条件语句中使用。这儿是一个列表:
假设 $delta = 12 并且 $omega = 9
操作符
意义
表达方式
结果
==
等于
$delta == $omega
False
!=
不等于
$delta != $omega
True
>
大于
$delta > $omega
True
<
小于
$delta < $omega
False
>=
大于或等于
$delta > = $omega
True
<=
小于或等于
$delta <= $omega
False
PHP4还增加了一种新的操作符"===",用来测试两个数据数值和类型是否都相同,在这一部分的最后一小节有一个简单的例子。
在PHP中,最简单的条件语句的形式是 "if" 语句,一般如下所示:
--------------------------------------------------------------------------------
if (条件)
{
do this!
}
--------------------------------------------------------------------------------
这里的 "条件" 是一个条件的描述, PHP经过判断将得出"true"或"false"的任意之一值。如果是真值,所有大括弧里的PHP代码将被执行,相反,如果是假值大括弧里的代码将被忽略,继续执行"if"语句结构块以后的行。
我们通过给上面的 "login.php"脚本添加一个身份认证的例子来给你演示 "if" 语句是如何工作的。只有当用户输入的用户名是"neo"时才允许接入。
--------------------------------------------------------------------------------
< html>
< head>
< basefont face="宋体">
< /head>
< body>
< center>
< ?
// 检查名字并反馈相应的信息
if ($name == "neo")
{
?>
< font face="Arial" size="-1">
欢迎进入母体,Neo。
< p>
也许是武力强迫你才这样做的,,,哦,不正当的影片!< /font>
< ?
}
?>
< ?
//如果密码错了的话
if ($name != "neo")
{
?>
< font face="Arial" size="-1">
我想知道你是否听说过莎士比亚, < ? echo $name; ?>.
< p>
他要求得到一束另一个名字的玫瑰化,因为那束闻起来可能会更芳香一些。
< p>
对于你,很不幸,我不同意。拒绝进入!
< /font>
< ?
}
?>
< /center>
< /body>
< /html>
--------------------------------------------------------------------------------
在这种情况下, "if" 语句通过判断输入的密码是否正确来反馈相应的两种信息。PHP还允许你“嵌套”条件语句-例如,这是一段有效的PHP代码:
--------------------------------------------------------------------------------
< ?
if ($day == "Thursday")
{
if ($time == "12")
{
if ($place == "Italy")
{
$lunch = "pasta";
}
}
}
?>
除了"if"语句,PHP还提供了"if-else"结构,用来定义当语句中的条件描述为"false”值时所执行的PHP代码。
"if-else" 结构使用方法如下:
--------------------------------------------------------------------------------
if (condition)
{
do this!
}
else
{
do this!
}
--------------------------------------------------------------------------------
你将看到,这种结构可以用来对上一篇那个例子进行大大简化-替代两个分开的 "if" 语句嵌套,我们可以把他们混合在一个单一的"if-else" 语句中:
--------------------------------------------------------------------------------
< html>
< head>
< basefont face="Arial">
< /head>
< body>
< center>
< ?
// 检查名字并反馈相应的信息
if ($name == "neo")
{
?>
< font face="Arial" size="-1">
欢迎进入母体,Neo。
< p>
也许是武力强迫你才这样做的,,,哦,不正当的影片!
< /font>
< ?
}
else
{
?>
< font face="Arial" size="-1">
我想知道你是否听说过莎士比亚, < ? echo $name; ?>.
< p>
他要求得到一束另一个名字的玫瑰化,因为那束闻起来可能会更芳香一些。
< p>
对于你,很不幸,我不同意。拒绝进入!
< /font>
< ?
}
?>
< /center>
< /body>
< /html>
PHP还给你提供了一种处理多种可能的方式-"if-elseif-else"结构。一个典型的"if-elseif-else"结构语句将如下所示:
--------------------------------------------------------------------------------
if (第一个条件正确)
{
do this!
}
elseif (第二个条件正确)
{
do this!
}
elseif (第三个条件正确)
{
do this!
}
... 等等 ...
else
{
do this!
}
--------------------------------------------------------------------------------
这儿有一个说明如何使用的例子:
--------------------------------------------------------------------------------
< html>
< head>
< style type="text/css">
td {font-family: Arial;}
< /style>
< /head>
< body>
< font face="Arial" size="+2">
令人惊奇的幸运甜饼生产程序
< /font>
< form method="GET" action="cookie.php">
< table cellspacing="5" cellpadding="5" border="0">
< tr>
< td align="center">
请选择日期
< /td>
< td align="right">
< select name="day">
< option value="Monday">Monday
< option value="Tuesday">Tuesday
< option value="Wednesday">Wednesday
< option value="Thursday">Thursday
< option value="Friday">Friday
< option value="Saturday">Saturday
< option value="Sunday">Sunday
< /select>
< /td>
< /tr>
< tr>
< tr>
< td c