Linux 版 (精华区)

发信人: tcpip (偶的昵称改了), 信区: Linux
标  题: PHP入门速成--2
发信站: 紫 丁 香 (Tue Jan 18 19:05:50 2000) WWW-POST


  上述代码中绝大多数都是创建表单所必需的HTML代码。在此,我们仅对所涉及到的
PHP知识做一下简单介绍。

  首先,我们来看一下代码开始处的变量$PHP_SELF。变量$PHP_SELF是PHP中一个很方
便的指针,其变量值就是当前页面的URL地址。这样,我们就可以通过在随后的form标签
中将TARGET的值设定为$PHP_SELF,实现由该表单页面处理表单的目的。这里,我们使用
$PHP_SELF变量而不使用页面的实际地址,是因为通过使用$PHP_SELF变量,我们可以方便
对编写的页面代码进行修改和移动,而不必担心在每次改动之后重新输入新的页面地址。


  另外,在使用$PHP_SELF变量时,我们采用了如下方式:

global $PHP_SELF;

这表明代码中的$PHP_SELF变量为全局变量。用户在使用PHP的过程中一定要注意PHP中任
何的函数变量都是局部变量。这就意味着任何函数变量的作用域都只局限于包括该变量的
函数本身。即使函数外存在同名变量,变量的值也不相同。因此,如果我们没有在代码中
以显式方式声明函数变量$PHP_SELF为全局变量具有全局唯一值的话,用户就会发现函数
中的变量$PHP_SELF的值将会为空,而不是我们预先所期望的当前页面的URL地址。

  用户可能已经注意到我们将表单复选选项的名称设置为times[]数组,而把单选选项
的名称设定为fruit常规变量。这是因为单选选项只允许用户选择唯一一个正确选项,因
此fruit变量的值只可能是一个字符串;相反,复选选项则允许用户做多重性选择。如果
,用户希望PHP能够保存用户可能作出的所有选择的话,就需要使用数组来保存所有的可
能值。按照PHP的语法规则,我们通过在变量名times后面加上方括号,使PHP知道该变量
是一个数组变量而不是普通的常规变量。

最后,我们设定了一个名为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高手。  
--
"这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;

※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: tcpip.hit.edu.c] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.146毫秒