PHP学习宝典-第九章


网页间的信息传递

本章重点

为什么HTTP会生生不息地扩散?

GET参数

另一种使用GET风格式样的URL

处理窗体变量

PHP超数组

本章简单讲解一些有关在Web页面之间传递数据的内容。这样的一些信息不是PHP特有的,而是PHH/HTML或HTTP协议本身中很重要的部份。

HTTP是没有状态纪录的(stateless)

需要记住有关Web服务一项最重要的事情是,HTTP协议本身没有状态纪录的(stateless)。如果读者具有诗意的灵魂,可能就会说每个HTTP请求(request)孑然一身,没有家园,就像一个全然未知的……你知道这之类的说法。对缺乏诗意的我们,说白点就是指每个HTTP请求(每一次的请求和传送页面)独立于所有其它的内容、不知道客户端身份,而且也没有记忆。每个请求产生一件独立过程,完成一件档案服务、看似微小却重要的任务,然后自动消失(这样呼起来很无情,或许可以说成「回到可处理的状态中」)。

即使把网站设计成非常不严格的单向导航(页1引导到页2,页2引导到3等等),PTTP协助从来不知道也不关心某个人浏览的页2是否来自页1。因此,不可以把页1上的变量设定成透过HTML本身来导入该页。可以使用HTML显示窗体,用窗体输入一些信息,但是除非用一些别的方法把信息传送到另一页或另一个程序,否则一旦移到另一页,变量就消失了。

这是为什么导入像PHP这样的窗体处理技术的原因。PHP可以撷取从一页辗转传到另页的变量,能对它进行更进一步的动用。PHP函式正好非常擅长这种型态的数据传递函式,这样能更快、更容易地完成各种Web网站的任务。

HTML窗体是网站上用来由一个网页传递一些数据最有用的方法,有许多更持久的方式可以维护横跨许多网页的状态方法,例如cookie与session,我们会在第27章介绍这些功能。本章会着重在更基本的技术巧用来传递网页之间的信息,就是使用HTTP和GET与POST方法来进行动态产生网页以及处理数据。

ASP程序设计者看到这里可能要说「PHP真烂!」因为他们让为ASP的session变量是非常神奇的。这不是要截破谁的泡泡,而是微软正打算利用cookie来储存session变量,不过这样就打开了所有潜在问题的大门。

GET参数

GET方法把参数当成URI [Uniform Resource Indicator,一致资源指示器;也有人更习惯用URI (Uniform Resource Indicator,一致资源定位器)]查询字符串的一部份,从一个页面传递到另一个页面。当用于窗体处理时,GET用问号(?)当成分隔符号把变量名称和值附加给在ACTION属性中来反指定的URL,并把所有内容提交给提供处理的技术(在这个例子中是Web服务器)。

这是一个使用GET方法的HTML窗体范例(把档案存在team_select.html):

< HTML >

< HEAD >

< TITLE >A GET example, part 1< /TITLE >

< /HEAD >

< BODY >

< FOPM ACTION = http://localhost/baseball. php METHOD = “GET” >

< P >Root, root, root for the :< BR >

< SELECT NAME = “Team”SIZE=2 >

当使用者进行选择并按一下Submit按钮时,浏览器按照下面的顺序把这些元素接合、一起,中间不会有空格:

在单字ACTION后面,括在引号中的URL(http://localhost/baseball.php)

问号(?)指示以下字符即会组成GET字符串

NAME变量、等号、以及配合的VALUE(Team = Cubbies)

「&」符号和下一对「NAME = VALUE」(Submit = Submit);只要服务器查询字符串的长度限制允许,这些使用&区隔的name – value组合可以被重复许多次。

这样会构成这样一个URL字符串:

(http://locahost/baseball .php ? Team = Cubbies&Submit = Select)

其中字符串成为新的请求传送到浏览器的地址空间。上面的窗体提交后,处理窗体的PHP script(baseball.php)将从请求字符串的尾端取得GET变量,并对这些变量进行相对应的操作,在下面这个例子中,是把两个值中的一个插入文字字符串中。

以下程序代码是PHP用来处理原先HTML窗体的窗体处理部分:

< HTML >

< HEAD >

< TITLE >A GET example ,part 2< /TITLE >

< STYLE TYPE = “text/css”>

< !--

BODY {font-size: 24pt;}

-- >

< /STYLE >

< /HEAD >

< BODY >

< P >Go,

< ?php echo PHP学习宝典-第九章 - 站长学院

PHP学习宝典-第九章

2007-9-15 16:09:00查看学习心得
{GetProperty(Content)} 本文作者:
« 
» 

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3