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创建数组的过程也非常简单。php还具有基本的面向对象组件功能,可以极大的方便用户有效组织和封装自己编写的代码。
php语法概述
a. 基本语法
即使初次接触php的用户也会发现自己对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对各种运算符及运算规则都有一套完整的规定,如果用户具有c或c++语言的编程背景的话,可以发现一切都得心应手。
与perl语言一样,在php中,如果在双引号包含的字符串中含有变量的话,该变量将用相应的变量值替换;如果字符串被单引号包含,则不做替换。例如:
<?php
$name = ‘peter’;
$greeting_1 = “hello, $name!”;
$greeting_2 = ‘hello, $name!’;
echo “$greeting_1n”;
echo “$greeting_2n”;
?>
显示结果为:
hello, peter!
hello, $name!
(注:上述代码中的“n”为换行符,只能在双引号字符串下使用)
b. 变量
php允许用户象使用常规变量一样使用环境变量。例如,在页面http://www.nba.com/scores/index.html中包含如下代码:
<?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中,用户还可以根据需要建立多维数组。例如:
$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.n”; }
或
$i = 4; while ($i < 8) {
print “i have eaten $i apples today.n”;
$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的隐含变量,通过使用该变量,我们可以控制是否显示表单还是处理表单结果。