PHP从零入门教程 | ||||||||||||||||
PHP简介 PHP是一种用于创建动态WEB页面的服务端脚本语言。如同ASP和ColdFusion,用户可以混合使用PHP和HTML编写WEB页面,当访问者浏览到该页面时,服务端会首先对页面中的PHP命令进行处理,然后把处理后的结果连同HTML内容一起传送到访问端的浏览器。但是与ASP或ColdFusion不同,PHP是一种源代码开放程序,拥有很好的跨平台兼容性。用户可以在Windows NT系统以及许多版本的Unix系统上运行PHP,而且可以将PHP作为Apache服务器的内置模块或CGI程序运行。 除了能够精确的控制WEB页面的显示内容之外,用户还可以通过使用PHP发送HTTP报头。用户可以通过PHP设置cookies,管理用户身份识别,并对用户浏览页面进行重定向。PHP具有非常强大的数据库支持功能,能够访问几乎目前所有较为流行的数据库系统。此外,PHP可以与多个外接库集成,为用户提供更多的实用功能,如生成PDF文件等。 用户可以直接在WEB页面中输入PHP命令代码,因而不需要任何特殊的开发环境。在WEB页面中,所有PHP代码都被放置在:<?php:和: ?>:中。此外,用户还可以选择使用诸如<SCRIPT LANGUAGE="php"></SCRIPT>等的形式。PHP引擎会自动识别并处理页面中所有位于PHP定界符之间的代码。 PHP脚本语言的语法结构与C语言和Perl语言的语法风格非常相似。用户在使用变量前不需要对变量进行声明。使用PHP创建数组www.jinyilai.cn的过程也非常简单。PHP还具有基本的面向对象组件功能,可以极大的方便用户有效组织和封装自己编写的代码。 PHP语法概述 A. 基本语法 即使初次接触PHP的用户也www.penqiang.net会发现自己对PHP的语法风格并不陌生。 例如:<?php echo :Hello!:; ?> 显示结果为:Hello!:。 PHP中,所有的变量都以标识:$:开头。我们可以对上述代码做如下改动: <?php $greeting = :Hello!:; echo $greeting; ?> 改变后的代码显示结果不变。 PHP中使用:.:符号连接不同的字符串,而其它的算术运算符则继承了流行编程语言的风格。举例如下: <?php $greeting = :Hello!:; $num = 3 + 2; $num++; echo :$greeting $num people!:; ?> 显示结果为:Hello!6 people!:。 PHP对各种运算符及www.516fc.net运算规则都有一套完整的规定,如果用户具有C或C++语言的编 程背景的话,可以发现一切都得心应手。 ( 与Perl语言一样,在PHP中,如果在双引号包含的字符串中含有变量的话,该变量将用相应的变 量值替换;如果字符串被单引号包含,则不做替换。例如: <?php $name = ,PETER,; $greeting_1 = :Hello, $name!:; $greeting_2 = ,Hello, $name!,; echo :$greeting_1 :; echo :$greeting_2 :; ?> 显示结果为: Hello, PETER! Hello, $name! (注:上述代码中的: :为换行符,只能在双引号字符串下使用) (注:有问题! 解析不了 ) B. 变量 PHP允许用户象使用常规变量一样使用环境变量。例如,在页面中包 含如下代码: <?php echo :[$REQUEST_URI]:; ?> 则输出结果为[/scores/index.html] C. 数组 用户在使用PHP创建数组时,可以把数组索引(包括常规索引或关联索引)加入方括号中。例如: $fruit[0] = ,banana,; $fruit[1] = ,apple,; $favorites['animal'] = ,tiger,; $favorites['sports'] = ,basketball,; 如果用户在向数组赋值时不指明数组下标,PHP将自动把该对象加入到数组末尾。例如对于上述$fruit 数组可以用以下方式赋值而保持结果不变, $fruit[] = ,banana,; $fruit[] = ,apple,; 如果用户在向数组赋值时不指明数组下标,PHP将自动把该对象加入到数组末尾,下标从0开始标记。 $a=array("e"=>"rr","ee","tt"); echo $a['e']."<br>"; echo $a[0]."<br>"; echo $a[1]."<br>"; 输出结果: rr ee tt 同样,在PHP中,用户还可以根据需要建立多维数组。例如: $people[,David,][,shirt,] = ,blue,; $people[,David,][,car,] = ,red,; $people[,Adam,][,shirt,] = ,white,; $people[,Adam,][,car,] = ,silver,; 在PHP中,用户还可以使用array()函数快速建立数组。例如: $fruit = array(,banana,,,apple,); $favorites = array(,animal, => ,tiger,, ,sports, => ,basketball,); 或者使用array()函数创建多维数组: $people = array (,David, => array(,shirt, => ,blue,,,car, => ,red,), ,Adam, => array(,shirt, => ,white,,,car, => ,silver,)); 此外,PHP还提供了内置函数count()用于计算数组中的元素数量。例如: $fruit = array(,banana,, ,apple,); print count($fruit); 显示结果为2。 D. 结构控制 在PHP中,用户可以使用:for:或:while:等的循环结构语句。例如: for ($i = 4; $i < 8; $i++) { print :I have eaten $i apples today. :; } 或 $i = 4; while ($i < 8) { print :I have eaten $i apples today. :; $i++; } 返回结果为: I have eaten 4 apples today. I have eaten 5 apples today. I have eaten 6 apples today. I have eaten 7 apples today. 此外,用户还可以使用:if:和:elseif:等的选择性结构语句。例如: if ($user_count > 200) { print :The site is busy right now!:;} elseif ($user_count > 100) { print :The site is active right now!:; else { print :The site is idle - only $user_count user logged on.:; } 表单处理 PHP为用户提供了众多方便易用的强大功能。在表单的处理方面,PHP能够自动地将由客户端表单 发送的数据赋值给相应变量,从而极大地简化了整个表单的处理过程。 举例来说,用户建立如下表单: <INPUT TYPE=TEXT NAME=:name: VALUE=:PETER:> 当使用PHP对上述代码进行处理时,PHP自动创建一个名为$name的变量,并将变量值:PETER:赋予 该变量。 用户可以直接对PHP创建的变量进行各种操作,例如显示变量值: echo :Hi $name!:; 或对变量值进行验证: if ($name == :PETER:) { echo :Please check out your email.:; } 下面,我们就来看一下如何通过使用PHP创建并处理一个基本的表单。在示例当中,我们将会要求表单的填写者回答几个简短的问题,包括输入表单填写者的姓名,电子邮件地址,完成调查问卷等。 这里,我们将所要设计的页面按照功能划分成表单显示和表单处理两个功能模块。这样,用户就不必设计两个不同的页面,而只需要在同一个PHP页面中通过逻辑控制显示或处理相应的功能模块。 A. 表单显示 我们通过第一个功能模块来实现表单的显示。具体代码为: <?php function display_form() { global $PHP_SELF; ?> <FORM TARGET=:<?php echo $PHP_SELF; ?>:METHOD=GET> Name: <INPUT TYPE=TEXT NAME=:name:><BR> Favorite Fruit: <INPUT TYPE=RADIO NAME=:fruit: VALUE=:apple:>Apple <INPUT TYPE=RADIO NAME=:fruit: VALUE=:orange:>Orange <INPUT TYPE=RADIO NAME=:fruit: VALUE=:banana:>Banana Favorite Times to Eat Fruit: <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:>Latenight <INPUT TYPE=HIDDEN NAME=:stage: VALUE= :results:> <INPUT TYPE=SUBMIT VALUE= :Thanks!:> </FORM> <?php } ?> 上述代码中绝大多数都是创建表单所必需的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:; } ?> (注: global $name; 声明为全局变量时最好不要初始化。) 在表单处理代码中,首先我们按照上文所介绍的$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,, ,); ?> 通过上述代码,我们设定凡是位于~/myhome目录下,属于域的页面都能够读取该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高手。
|