PERL编程24学时教程——19 复杂窗体.pdf
《PERL编程24学时教程——19 复杂窗体.pdf》由会员分享,可在线阅读,更多相关《PERL编程24学时教程——19 复杂窗体.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下载第1 9学时复 杂 窗 体We b上的窗体不只是简单的单页面窗体。有时窗体要跨越若干页。这些复杂的窗体以调查、查询和购物车等应用程序的形式出现。这些比较复杂的窗体需要使用某些不同的编程技巧,本学时你将要学习这些技巧。在本学时中,你将要学习:如何创建多页窗体。19.1 复杂的多页窗体使用C G I程序来编写复杂的多页窗体时,你会遇到一个特殊的编程难题。We b浏览器与We b服务器之间的连接根本不是一个持久的连接。We b浏览器与服务器建立连接,检查 We b页,然后便断开与We b服务器之间的连接。在服务器与你的We b浏览器之间并不保持不间断的连接。更为复杂的是:浏览器每次与 We b服
2、务器连接时,We b服务器并不认为该浏览器预先访问过该站点。服务器并不每次都能很容易地识别该浏览器。类似的一种情况是:图书馆的读者与没有记忆力的图书馆管理员之间进行谈话,读者每次只能向管理员提出一个问题。读者向图书管理员借阅一本书,比如关于亚利桑那州的一本书,图书管理员可以检索这本书。图书管理员之所以能够检索这本书,是因为这个请求很容易满足。但是读者不能要求借阅同一个专题的另一本书。图书管理员不能记住上一个借书请求,因此他无法借给你同一个专题的另一本书。如果借书的请求改为“给我另一本关于亚利桑那州的书”,图书管理员仍然无法满足读者的要求,因为他检索的书可能与第一次检索的这本书一样。若要检索同一
3、专题的第二本书,惟一的办法是说:“我需要另一本关于亚利桑那州的书,我已经有了一本名叫在亚利桑那州定居的书”。这个借阅请求带有足够的能够说明问题的信息,使图书管理员能够知道什么应答是不适当的。为We b页编写多页窗体,也可以使用同样的解决办法。每个问题/答复会话必须包含足够的信息,使We b服务器能够知道它需要做什么。你可以用几种不同的方法来创建这样的会话,其中的一种方法,即使用隐藏的H T M L域,将在本学时中介绍。19.2 隐藏域要使We b窗体能够“记住”信息,最容易的方法是使用隐藏域,将以前的信息嵌入 We b窗体。隐藏域是H T M L窗体的组成部分,它使域和值成为H T M L的组
4、成部分,但是在显示窗体时,窗体中并不出现这些域和值。在H T M L中,这些域和值编写为下面的形式:如果将上面的H T M L代码放入一个窗体,新的名字(“f u l l n a m e”)和值(“Pink Floyd”)将成为窗体的组成部分。如果该窗体被提交给一个 Perl CGI程序,p a r a m函数将返回一个关键字和隐藏域的值。在线商店如果要举一个如何使用隐藏域的例子,可以看一看在线商店,它使用一系列的We b页,使人们能够根据在线目录来选购商品。目前,我们只是向你介绍复杂窗体的运行情况,在本学时后面部分的内容中,要介绍另一个复杂的窗体,它包含用于创建一个在线调查的代码。如果不能实
5、现某种形式的安全 We b事务处理,那么请不要使用这个在线商店的例子,请注意,这个例子并不包含任何真实的个人信息,如电话号码或信用卡号码等,因为隐藏域就像正规的 H T M L窗体,它根本不具备任何安全性。图1 9-1所示的在线商店第一页显示了该商店的商品清单。当用户单击Go to Store(去商店)按钮时,C G I程序接收来自窗体的值,然后显示完整的目录,如图1 9-2所示。第二页显示完整的目录。当第一页(带有商店拥有商品的目录)提交时,C G I程序接收各个值,然后当它为完整的目录输出 H T M L时,它将商品的指定数量作为隐藏域放入新窗体。每当C G I程序接收来自H T M L窗
6、体的值时,新页将包含隐藏域中的旧值,以及普通窗体元素中的新值。采用这个方法,你可以避免“健忘的图书管理员”存在的问题,当提交完整目录的窗体时,窗体中的隐藏域便提醒C G I程序从第一个窗体中选定哪些项目以及从当前窗体中选择哪些项目。如果需要第三页,前两页中的值可以作为隐藏域存放在第三页上,如图 1 9-3所示。关于H T M L页上的隐藏域,有几个问题应该加以说明。首先,隐藏域中的值是任何人都能够查看的。若要查看这些值,用户只需要查看该页的 H T M L源代码。大多数We b浏览器都配有一个选项,可以用于查看H T M L源代码。其次,隐藏域中的值可以由远程用户进行修改,如果他们确实想要这样
7、做的话。若要修图19-1 在线商店的第一页图19-2 显示在线商店的商品目录218使用第三部分将Perl 用于C G I下载改隐藏域的值,可以使用修改后的 We b浏览器,或者使用H T T P人工提交该窗体。例如,在线商店不应该将价格存放在隐藏域中,它只能存放数量。C G I程序应该在需要显示价格时才查看价格。当你设计窗体时,看一看别人是如何设计窗体的,这将会对你有所帮助。这样你也会对他们是否使用隐藏域来保存信息这个问题有所了解。大多数We b浏览器都有一个View Page Source(查看页源)选项。你应该将这个选项用在任意窗体上,以了解它是如何形成一个整体的。但是不要拷贝这个窗体,大
8、多数时候,拷贝会侵犯窗体的原开发人员的版权。19.3 多页调查窗体调查窗体是查找跨越若干不同的 We b页窗体的常见地方。有时这些窗体太长,一个 We b页放不下,它们通常可以分成不同的类别。接着,简单的多页We b调查窗体可以用于查找关于你的个人信息的各个方面。这个调查窗体可以展示4个不同的We b页,并且可以改为支持你需要的任何数目的We b页。这4个We b页是:第一页用于提出一系列的一般问题,有时它们可以用来查找你拥有哪些种类的个人信息。第二页用于提出一些关于你的习惯爱好的特殊问题,还有一个根据第一个调查页提出的问题。第三页是供你输入你的名字和对调查的说明的 We b页。在调查完成后输
9、出的一条感谢你的消息。相同的C G I程序可以用来执行所有这 4个功能。它决定了哪一页用来打开下一页。这是根据刚才显示的这一页来决定的。程序清单 1 9-1显示了调查程序的核心。通过包含代码use CGI:Carp qw(fatalsToBrowser),你的C G I程序的d i e()消息(它通常被写入We b服务器的日志文件)将作为 We b页的组成部分来输出。当你编写更长的C G I程序时,它将有助于程序的调试。第19学时 复 杂 窗 体使用219下载图19-3 在线商店的发货信息调查的结果保存在一个文本文件中,但是该程序根本不显示该结果。该程序只不过进行调查结果的收集和存储。你必须编
10、写另一个 C G I程序,以便显示调查的结果。程序清单19-1 调查程序的第一部分第6 8行:在调查过程中,每个 H T M L窗体都包含输入域。每个输入域的名字都出现在这个数组中。s a v e()函数和r e p e a t _ h i d d e n()函数将在以后使用这个数组。第1 2 1 3行:如果不将任何参数传递给该 C G I程序,也就是说,它没有作为窗体发送的结果来加载,那么就调用p a g e _ o n e()函数来输出调查窗体的第一页。第1 4 1 7行:如果名叫p a g e o n e的H T M L窗体参数被传递给这个C G I程序,便调用p a g e _ t w
11、 o()函数。如果传递的参数是p a g e t w o,便调用函数p a g e _ t h r e e。第1 9行:如果 H T M L窗体参数传递给这个 C G I程序,但是传递的参数不是 p a g e o n e或者p a g e t w o,则调查完成,其结果被保存,并在 s u r v e y _ d o n e()函数中输出感谢你的消息。每个We b页上的s u b m i t按钮都提供了一个关于下面应该加载哪一页的线索,你可以在图1 9-4中看到这个情况。由于 s u b m i t按钮的名字作为一个参数被传递给 C G I程序,因此它可以用来显示刚刚提交给程序的是We b页
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PERL编程24学时教程19 复杂窗体 PERL 编程 24 学时 教程 19 复杂 窗体
限制150内