|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。创立 固然,到这里并未停止。究竟,假如可以在一个页面上创立多个表单,为什么不克不及创立跨多页面的表单呢?
不幸的是,用 HTTP从一页面传送数据到另外一页面其实不轻松。由于在 HTTP协定中没有内建机制以界说系列页面的概念。不外,仅需经由过程一些乖巧的技能,和PHP 某些有效的函数,咱们就能够不必花太多力量而冲破此限制。在此章节中,关头思惟在于把上一页面获得的输出存到下一页面表单的隐含变量中。当咱们在屏幕分歧页面切换时,代码也在页面间传递信息,每表单都含有上一个表单的数据。这个办法仿佛有点愚笨,不外就今朝情形而言是最为简捷的办法――且无需利用数据库或cookies。
料想当中的是咱们将扩大对变量$state的利用以顺应此特征。这恰是为何咱们曩昔进修了关于此技能的内容,而没有盘算利用更加复杂的体例处置单一页面中的多个表单。
为了便利起见,咱们将反复利用先前的表单典范。但此次咱们将将其拆分为两个页面,而非把有关乳酪的主要成绩跟用户称号放在统一页面之上。
由此会失掉三个函数而非两个。另外,对函数稍微改名以反应其内容上的改动。display_form() 现已更名为display_name()。
<?php
function display_name() {
global $PHP_SELF;
?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
Name: <INPUT TYPE=TEXT NAME="name"><BR>
<INPUT TYPE=HIDDEN NAME="stage" VALUE="cheese">
<INPUT TYPE=SUBMIT VALUE="Thanks!">
</FORM>
<?php
}
?>
与先前所引见的函数不异,但咱们先处理下一成绩,并把下一stage的称号改成 cheese以更明白地告之用户下一步要做甚么。
接上去是display_cheese()。
<?php
function display_cheese() {
global $PHP_SELF;
global $name;
?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
Favorite Cheese: <INPUT TYPE=RADIO NAME="cheese" VALUE="brie">Very soft French Brie
<INPUT TYPE=RADIO NAME="cheese" VALUE="cheddar">Farmhouse English Cheddar
<INPUT TYPE=RADIO NAME="cheese" VALUE="mozzarella">Italian Buffalo Mozzarella
Favorite Times to Eat Cheese: <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="m">Morning
<INPUT TYPE=CHECKBOX NAME="times[]" VALUE="n">Noon
<INPUT TYPE=CHECKBOX NAME="times[]" VALUE="d">Dinner
<INPUT TYPE=CHECKBOX NAME="times[]" VALUE="l">Late night
<INPUT TYPE=HIDDEN NAME="name" VALUE="<?php echo htmlspecialchars($name); ?>">
<INPUT TYPE=HIDDEN NAME="stage" VALUE="results">
<INPUT TYPE=SUBMIT VALUE="Thanks!">
</FORM>
<?php
}
?>
以上的代码看起来应当十分熟习。除在输入埋没的stage元素前先输入上一局部数据中的 $name变量名及值以外,咱们没有做任何料想以外的修正。咱们并未直接输入变量值,而是经由过程一个名为htmlspecialchars()的PHP函数。在HTM中,有以下四个字符除被作为标志(markup)利用外,在其他中央不该被利用的:“<”、“>”、“"”、和“&”。因而,为了确保不使阅读器形成凌乱,咱们经由过程htmlspecialchars()函数利用$name变量。由此,某团体的名字原为"Bret & Jeff"就会成为"Brett & Jeff" 了。
如今,当提交此新表单时,不会漏掉任何信息。
以上技能的感化是咱们不用更改原process_form() 函数任何局部。现实上,咱们还会坚持函数称号不变。仅需对页面显示逻辑加上新的一行。
<?php
if (empty($stage)) { display_name(); }
elseif ($stage == 'cheese') { display_cheese(); }
else { process_form(); }
?>
看到了吗?咱们只需在先前的两个声明中到场elseif。这恰是利用变量$stage的奇妙的地方。假如咱们要再添加几个页面,只需写一个新函数以显示所要的内容,并当其显示时到场一行代码对其停止掌握便可。
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。 |
|