虽然看上去一切都好了,但是我们仍没有达到我们真正地与用户交互的目的,我们的用户应该能够输入任意的信息,并将它交给PHP来处理。接着我们的个性化欢迎页面的例子,我们想要让我们的用户任意地输入他(或她)的名字并将其显示到信息中,要让用户输入数据,我们需要用到HTML的表单。
这儿是表单的代码:
除了在这里你可以任意输入你的名字以外,这个表单所起的效果和我们上面的第二个连接(在查询字符串中使用firstname=Kevin&lastname=Yank)完全一样。当你按提交按钮(标志为“GO”)时,浏览器会装载welcome.php并自动为你在查询字符串中添加变量和它们的值。变量名就是在INPUT TYPE=TEXT标识中的NAME属性,变量值就是用户输入的相应的内容。
INPUT TYPE=TEXT标识中的METHOD属性是用来告诉浏览器如何在请求中发送变量名及变量值的。GET(就是我们在上面使用的)表示在查询字符串中传递变量,但是还有另外一种选择。将变量显示在查询字符串中并不总是令我们满意的--甚至有的时候在技术上就是不可行的。如果在你的表单中包含了一个TEXTAREA标识用来让用户输入大量的文本,这部分文本也显示在查询字符串中实在是太长了,而且会超过浏览器所能支持的URL的最大长度。另外一种方法可以允许浏览器隐藏地传递信息。这种方法的代码和我们上面看到的表单的代码几乎一样,只是我们将表单的方法从GET变成了POST:
这个表单和我们之前的那个在功能上完全一样。唯一的不同是当用户在按“GO”按钮时所装载页面的URL将没有一个查询字符串。一方面,这可以让你通过表单提交大量的数据或者是敏感的数据(例如密码),而不在一个查询字符串中显示出来。另一方面,如果用户将提交表单生成的结果页添加到收藏夹,这个收藏夹是没有用的,因为它不包含提交的数据。另外,附带说一下,象AltaVista这样的搜索引擎总是利用查询字符串来提交查询条件,其主要原因就是为了便于用户将查询结果页添加到收藏夹中,以便在将来进行同样的搜索,因为搜索条件是包含在URL之中的。