提到Web开发,就不得不提到HTML,它在若干年以来一直作为Web用户界面设计的事实标准。虽然现在WAP/XML等页面脚本的使用使得 HTML作为一枝独秀的形势难以维系,但是如果要编写前端PHP的Web应用,开发者仍然需要了解HTML语言,尤其是HTML的表单部分。
在本章,我们将学习如下内容:
? 使用Dreamweaver设计HTML表单
? 使用PHP发送与接收表单数据
? PHP表单多页的传值及处理
? 使用PHP验证用户输入
? 在PHP中防止一些轻量级的攻击
? PHP的两种会话管理方式:COOKIE和SESSION
? 规划我们的Web应用程序
5.1 表单与HTML
HTML是一种简单的标记语言,为使用者提供了极大的灵活性,这一点使它很容易学习和编写,也同样是由于这一点,太多的网页设计人员对HTML的设计与编码几乎为滥用,导致一个页面在IE、Firefox、Mozila几个不同浏览器中显示得千差万别。
如今的Web设计已经启用新的标准,旨在使网页的HTML只包含内容和信息,以标准HTML和CSS(级联样式表)存储信息的方式,也就是现在流行的DIV+CSS设计标准。
有一些人建议使用XML来取代HTML语言。虽然XML有这样那样的强大功能,不过因为入门的门槛较高,让人望而生畏,而且目前有太多的HTML型 网站,因此目前沿行的标准是HTML与XML的兼容规格,叫做XHTML,用以从HTML过渡到XML。在本书中的代码都是基于XHTML兼容性的,建议 你也将XHTML应用到Web项目中。创建和处理表单是PHP开发者的一个重要能力指标。下面我们开始介绍如何设计表单。
表单是Web应用中最常用的组件,由提交按钮以及其他相关元素组成。表单被应用在各个领域中,用于实现注册用户、填写银行账户和登录等功能。
表单使用
作为开始标签,以
结尾,否则将不起任何作用。在一个HTML页面中允许有若干个表单,在编写时以表单的名字(name)和Form ID作为它们之间的区分。
下面是最简单的表单,代码如下:
这个表单在浏览器上只会显示一个按钮“提交查询内容”字样,没有太多的意义。如果要提交数据并形成一个完整的表单,需要在
标签增加两个比较重要的属性标签:action和method,如以下表单所示:
其中,action标签指的是接收处理结果的文件位置,当action值为空时,则提交给当前文件本身,如果action的值为其他文件或URL,则提交给该文件或URL地址处理。
method标签是描述提交数据时使用的方法,它有两种值:GET和POST,如果没有设置method属性或该属性为空值,浏览器默认method的值为POST方法。
下面是处理POST表单的方法。
例5-1:getPasswd.php – 接受POST表单提交的值
$action = $_SERVER['PHP_SELF'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '使用POST方法传递表单值';
echo "$_POST[email]";
}
?>
如果要在浏览器中发送表单或数据给服务器端,使用GET或POST方法都能实现。GET方法是在访问URL时,使用浏览器地址栏来传递值。我们可以在很多网站上看到这类URL串,图5-1所示的就是使用GET方法传递参数。
图5-1
GET方法方便直观,缺点是访问该网站的用户也可以修改URL串后发送给服务器,如果程序处理得不够好很容易出错,而且GET传递的字符串长度不能 超过250个字符,如果超长,浏览器会自动截断,导致数据缺失。另外,GET方法不支持ASCII字符之外的任何字符,比如包含有汉字或其他非ASCII 字符时,需要使用额外的编码操作,虽然有时候浏览器也能自动完成(可以使用url_encode和url_decode函数,使用方法详见2.9.2 节)。
POST方法发送变量数据时,对于用户来说是不透明的,按HTTP协议来说,数据附加于header的头信息中,用户不能随意修改,这对于Web应用程序而言,安全性要好得多,而且使用POST可以发送大体积的数据给Web服务器。
因为POST是随HTTP的header信息一起发送的,当触发POST表单提交后,如果用户浏览页面时单击“后退”按钮,浏览器不会自动重发 POST数据。如果用户此时单击“刷新”按钮,将会有“数据已经过期,是否重新提交表单”的提示,这一点不如GET使用方便。使用GET传值时,即便用户 使用“后退”或“刷新”按钮,浏览器的URL地址也是仍然存在的。
因此,我们在开发中需要根据实际应用灵活选择GET和POST来提交表单数据。
值得一提的是,如果在HTML中缺少表单结束标记,那么整个表单是不会触发任何提交动作的。在实际开发时,一些粗心的人会发现单击按钮没有任何反映,其实细心检查一下表单的代码就可以了,有时即使少写了一个HTML字符,浏览器也不会替我们干活的。
5.4 表单元素
表单所使用的标签元素有十几个,PHP开发中常用及较重要的标签如表5-1所示。
表5-1
表单元素说 明
input type="checkbox"复选框,允许用户选择多个选择项
input type="file"文件浏览框,当文件上传时,可用来打开一个模式窗口以选择文件
input type="hidden"隐藏标签,用于在表单中以隐含方式提交变量值
input type="password"密码文本框,用户在该文本框输入字符时将被替换显示为*号
input type="radio"单选项,用于设置一组选择项,用户只能选择一个
input type="reset"清除与重置表单内容,用于清除表单中所有文本框的内容,而且使选择菜单项恢复到初始值
input type="submit"表单提交按钮
input type="text"单行文本框
select下拉列表框,可单选和多选。默认为单选,如果增加多项选择功能,增加