最后,我们设定了一个名为stage的隐含变量,通过使用该变量,我们可以控制是否显示表单还是处理表单结果。
B. 处理表单
我们通过页面的第二个功能模块完成对表单输入结果的处理过程。其代码如下:
<?
PHP function process_form()
{
global $name;
global $fruit;
global $times;
if ( $fruit == ‘apple’) { $fruit_message = ‘You love apple.’; }
elseif ( $fruit == ‘orange’) { $fruit_message = ‘You love orange’; }
else { $fruit_message = ‘You love banana.’; }
$favorite_times = count( $times);
if ( $favorite_times <= 1)
{ $times_message = ‘You should eat fruit more often.’;}
elseif ( $favorite_times > 1 && $favorite_times < 4)
{ $times_message = ‘Those are good times to eat fruit.’;}
else { $times_message = ‘You are eating too much fruit.’;}
echo “Hello $name.”;
echo “ $fruit_message $times_message”;
}
?>
在表单处理代码中,首先我们按照上文所介绍的 $
PHP_SELF变量处理方式,将我们在创建表单时所建立的变量全部声明为全局变量。接着,我们查看用户具体选择了哪一个fruit选项。然后,使用count()函数得出用户选择的复选选项的个数,然后按照该结果进行相应的判断。最后,我们输出用户的姓名以及表单处理后的信息。
C. 合并表单功能模块
现在,我们把已经分别独立完成的两个功能模块组合在一起,同时设定两个模块之间的逻辑规则。我们可以在display_form()和process_form()之下加入以下代码:
<?
PHP if (empty( $stage)) { display_form(); }
else { process_form(); }
?>
首先,我们通过empty()函数查看 $stage变量的值是否为空。如果 $stage变量的值为空,例如当访问者首次浏览表单页面,
PHP将会运行display_form()函数,同时在客户端显示表单;如果 $stage变量的值不为空,例如当用户填写完表单并返回结果后 $stage变量的值为results,
PHP将会运行process_form()函数,完成对表单的处理。
小结
通过以上三步,我们使用
PHP快速地在单一页面上实现了表单显示和表单处理的功能。
设定Cookies
PHP提供了强大的设定和读取Cookies的功能。在此,我们不想对Cookies进行过多的介绍,但是用户应当认识到在
设计WEB应用的过程中Cookies可能起到的重要作用。
用户可以使用
PHP提供的setcookie()函数创建或修改Cookie。setcookie()函数总共包括6个参数,能够对cookie进行精确的控制。
使用setcookie()函数设定cookie的最简单的方式为:
setcookie(‘name’, ‘PETER’);
这样,在用户访问整个站点页面的期间,
PHP将会自动创建一个名为 $name的变量,并将值PETER赋予该变量。我们把这种Cookie称做会话Cookie,即其作用域为用户的整个会话过程。
如果我们希望Cookie值在访问用户离开站点后仍然有效的话,可以使用setcookie()函数的相应参数,设定Cookie的有效期。这里,我们需要对
PHP的时间设定进行一下说明。
PHP是一种基于Unix开发出的技术,用户需要用自1970年1月1日之后的秒数表示当前时间。对于没有任何Unix系统编程经验的广大普通用户来说真是有点摸不着头脑。不过,大家大可不必担心,因为
PHP为我们提供了一个非常简便的解决方式,即mktime()函数。用户可以在mktime()函数中按照小时、分、秒、月、日、年的顺序输入用户希望表示的时间,mktime()函数将会返回该时间距离1970年1月1日的秒数。举例来说,如果我们希望设定一个有效期持续到2000年的Cookie的话,可以使用如下方式:
<?
PHP $y2k = mktime(0,0,0,1,1,2000);
setcookie(‘name’, ‘PETER’, $y2k);
?>
如果用户希望更新已经存在的cookie,可以采用简单的直接覆盖原值的方法。例如,即使我们已经按照上述代码对cookie进行了设定,仍可以对其做以下改动:
<?
PHP $y2k = mktime(0,0,0,1,1,2000);
setcookie(‘name’, ‘JEFF’, $y2k);
?>
这里需要提醒用户注意的一点是,虽然我们对cookie值进行了修改,但是在没有加载经过修改的页面之前,
PHP中 $name变量的值仍然不会改变。如果用户希望在更改cookie值的同时更改 相应
PHP变量的值,可以采用以下方式:
<?
PHP $name = ‘JEFF’;
$y2k = mktime(0,0,0,1,1,2000);
setcookie(‘name’, $name, $y2k);
?>
在有效期参数之后,setcookie()函数提供了设置可以读取cookie值的页面的路径和域的参数。出于安全因素的考虑,在默认情况下,只有与设定cookie的页面处于同一目录或下属子目录的页面才能够读取相应cookie值。但是,根据需要,我们也可以对这一设定进行修改。例如:
<?
PHP setcookie(‘name’, ‘jeff’, $y2k, ‘~/myhome’, ‘.domain.com’);
?>
通过上述代码,我们设定凡是位于~/myhome目录下,属于.domain.com域的页面都能够读取该cookie值。
setcookie()函数的最后一个参数较少被使用。该参数可以指定只向运行安全连接协议,如SSL,的WEB
服务器返回cookie值。如果用户希望启动该参数功能,只需要将其值设为1即可。
使用
PHP删除cookie也非常简便,用户只需要在setcookie()函数中输入希望删除的cookie的名称,
PHP就会自动完成所有的删除工作。例如:
<?
PHP setcookie(‘name’); ?>
最后,关于cookie还要说明一点。考虑到HTTP协议中cookie的运作方式,用户一定要注意应当在显示任何文字之前发送所有的cookie设置。如果用户在编写代码时先设定显示的文字然后再发送cookie的话,
PHP就会弹出报错信息,无法完成cookie的设置。举例来说:
<?
PHP setcookie(‘name’, ‘jeff’);
echo “Hello Everyone!”;
?>
这种cookie设置的方式是正确的。但是如果采用如下方式:
<?
PHP echo “Hello Everyone!”;
setcookie(‘name’, ‘jeff’);
?>
则会出现报错信息,无法完成cookie的设置。
日期和时
PHP提供了多种简便的功能以方便用户显示和控制日期和时间。 如果用户希望以某种形式显示某一日期或时间的话,可以使用
PHP提供的date()函数。date().函数包括两个参数,分别用于设定日期的显示格式以及代表显示日期的时间戳,其中,时间戳必须采用距离1970年1月1日的秒数方式表示。如同C语言中的strftime()函数或Perl中的POSIX::strftime()函数,
PHP中的date()函数具有非常多的格式设置选项,这里就不一一说明了。举例来说,date()函数的使用方式如下:
<?
PHP $birthday_stamp = mktime(10,10,0,10,20,1975);
$birthday_formatted = date(‘F d, Y - g:i a’, $birthday_stamp);
echo “Peter was born on $birthday_formatted.”
?> 显示结果为:Peter was born on October 10, 1975--10:10 p.m.
总结
PHP是一种快速创建动态WEB站点的强大工具,其熟悉的语法风格和源代码开放的特性能够使使用者在最短的时间内了解和掌握其功能并进而发挥出其巨大潜力。希望本文能够对广大读者有所启发。祝大家早日成为
PHP高手。