810 likes | 970 Views
第 12 讲 网页设计与编程 ( 三 ). CGI 概念和 PHP 程序设计基础. 第 12 讲 本讲目标. 了解和掌握 CGI 的基本概念和程序处理过程; 理解 PHP 程序设计的基本要素 PHP 基本元素 PHP 程序流程控制 PHP 函数. 什么是 CGI?. Web 之所以成为电子商务 / 电子政务平台,一个重要的原因是它的交互性 ( 数据的双向交流 ) ; 在遍布世界的 Web 网站中,为实现对网站数据的有效管理,普遍采用了数据库技术;
E N D
第12讲 网页设计与编程 (三) CGI概念和PHP程序设计基础 第3章 CGI概念和PHP程序设计基础 80-
第12讲 本讲目标 • 了解和掌握CGI的基本概念和程序处理过程; • 理解PHP程序设计的基本要素 • PHP基本元素 • PHP程序流程控制 • PHP函数 第3章 CGI概念和PHP程序设计基础 80-
什么是CGI? • Web之所以成为电子商务/电子政务平台,一个重要的原因是它的交互性(数据的双向交流); • 在遍布世界的Web网站中,为实现对网站数据的有效管理,普遍采用了数据库技术; • 对于使用HTML网页,用户可以通过表单将数据发送到Web服务器,但是HTML无法将数据存取服务器的系统数据库; • 这就需要在HTML网页与数据库之间架设一个沟通的渠道,这就是 “通用网关接口(Common Gateway Interface,CGI)”; 第3章 CGI概念和PHP程序设计基础 80-
什么是CGI? • 所谓CGI实际上是一种脚本语言(scripting language),它的功能很多: • 审核用户从表单或HTTP请求的URL地址栏发来的数据; • 将数据存入数据库; • 应用户请求从数据库取出数据并通过动态网页(dynamic page)发给浏览器; • 检查Web服务器状态并发给浏览器用户一张“快照(snapshot)”。 第3章 CGI概念和PHP程序设计基础 80-
什么是CGI? • 建立CGI动态网页机制时,必须首先由用户从HTML网页向服务器发送数据。 • 该数据被CGI程序处理并产生新的HTML网页。 • 在此过程中,用户数据须通过诸多传递环节。 • 调用CGI应用程序的HTML文档直接影响信息向CGI程序传递的方式。 • 该过程是如何进行的?浏览器上的数据怎样才能到达CGI应用程序呢,其数据传递机制又是如何决定的? 第3章 CGI概念和PHP程序设计基础 80-
什么是CGI? • CGI程序从3个来源取得数据: • 浏览器用户 • 触发CGI应用程序的HTML网页 • Web服务器 • 所有传递到CGI程序的数据都经由Web服务器。 • Web服务器与CGI程序的数据交换一般通过特定的环境变量进行。这种环境变量通常对所有类型的网关程序来说都是可使用的。 第3章 CGI概念和PHP程序设计基础 80-
什么是CGI? • 浏览器(HTTP client)将用户在HTML网页中输入的数据进行转换后发给Web服务器 • 服务器依次按预先定义好的CGI协议将数据发给网关程序 • 这两种变量类型的数据都以属性/值的形式成对传送(例如:color=“red” )。 第3章 CGI概念和PHP程序设计基础 80-
什么是CGI? • 实际上,可以把CGI看成是一个通过浏览器实现的一个类似操作系统中Shell[1]。 • [1]如DOS中的COMMAND.COM。 第3章 CGI概念和PHP程序设计基础 80-
什么是CGI? • Shell • 标准输入 键盘 • 标准输出 屏幕 • 功能选择 命令 • 功能调节 参数 • 提示提示 c:\> • CGI • 标准输入 表单;URL地址栏 • 标准输出 网络;浏览器 • 功能选择 输入网页URL;超链 • 功能调节 输入网页URL和参数 • 命令提示 超链;地址栏 第3章 CGI概念和PHP程序设计基础 80-
PHP程序样例 <html> <head> <title>The First Greeting from PHP </title> </head> <body> <? echo "hello,$name\n"; ?> </body> </html> 第3章 CGI概念和PHP程序设计基础 80-
PHP的程序的执行过程 • 这10行程序在PHP中不需经过编译等复杂的过程,只要将它放在可执行PHP程序的环境中,并将它存成文件greeting.php即可。打开浏览器,在地址栏中输入[1]: http://127.0.0.1/greeting.php?name=Cheng • [1]若未加说明,本课程所含的实验或例子假设在本地主机上的Web服务器Xitami上运行。Xitami的网页发布目录在c:\xitami\webpages。 第3章 CGI概念和PHP程序设计基础 80-
PHP程序的执行结果 第3章 CGI概念和PHP程序设计基础 80-
PHP程序发给浏览器的源代码 <html> <head> <title>The First Greeting from PHP </title> </head> <body> hello,Cheng </body> </html> 第3章 CGI概念和PHP程序设计基础 80-
PHP与 “纯”HTML网页的不同 • PHP网页除了需要Web服务器和浏览器的参与外,还需要经过CGI模块处理才能显示(本例中用的是PHP.exe); • PHP网页的程序参数(或变量)至少可以从URL地址栏附在网页的URL一起输入; • PHP网页的输出可以随程序参数(或变量)值变化而变化。 • 在本例网页的访问过程中,在http://127.0.0.1/greeting.php网址之后附带了“?name=Cheng” ,该示例使用了一个输入数据项。 • 等号“=” 左边的称为“参数”, “=”右边的是参数值 • 当需要输入的数据项多于一项时,数据项之间要用“&”号隔开 第3章 CGI概念和PHP程序设计基础 80-
将PHP程序嵌入网页的方法 • <?Echo("这是第一个PHP语言的嵌入例子\n");?> • <?php echo("这是第二个PHP语言的嵌入例子\n");?> • <script language="php"> echo("这是第三个PHP语言的嵌入例子,它类似JavaScript及VBScript语法的PHP语言嵌入"); </script> • <% echo("这是类似ASP嵌人语法的PHP例子");%> 第3章 CGI概念和PHP程序设计基础 80-
PHP中的引用文件 • 将常用的功能写成一个函数,预先存放在文件中,然后在编制含有PHP程序的网页中引用相应的文件,就可以调用适用的函数了,这样既可加强代码的灵活性和可读性,也有利于代码重用。 • 引用文件的方法有两种:require()函数及include()函数 第3章 CGI概念和PHP程序设计基础 80-
PHP中的引用文件 • require()的使用方法,如“require(”MyRequireFile.php“);”。该函数一般放在PHP程序的最前面,PHP程序在执行前,就会先读入require语句所指定引入的文件,使它变成PHP网页的一部分。用此方法可将常用的函数引入网页中。 • include()的使用方法,如“include("MyIncludeFile.php");”。该函数一般放在流程控制的处理区域中。PHP程序网页在读到include语句时,才将相关的文件读进来。这种方法,可以把程序执行时的流程处理程序简单化,增强程序的可读性。 第3章 CGI概念和PHP程序设计基础 80-
PHP程序的注释风格 <? Echo "这是第一种方法的例子。\n"; //本例是C++的注释风格 /*本例采用多行的注释方式*/ echo "这是第二种方法的例子。\n"; echo "这是第三种方法的例子。\n";#本例使用UNIX Shell注释风格 ?> 第3章 CGI概念和PHP程序设计基础 80-
PHP的常量、变量和数据类型 • PHP是一种弱类型的程序语言,也就是说一个变量可以存储任意类型的数据,使用变量之前无须声明变量是字符型还是整型。 (与C语言有本质区别) 第3章 CGI概念和PHP程序设计基础 80-
数据类型 • PHP的基本数据类型: • 整数(integer):十六进制数需要0x前缀 • 双精度浮点数(double) • 字符串(string) :1~n个字符 第3章 CGI概念和PHP程序设计基础 80-
数据类型 • 给字符串变量赋值,要在该字符串首尾加上双引号 (例如: “这是字符串”)。 • 在字符串插入控制符时,须使用转义字符,也就是斜线加上指定的符号 ,例如: \“=双引号 \\=斜线 \n=换行 \r=回车(CR) \t=制表(TAB) 第3章 CGI概念和PHP程序设计基础 80-
数据类型 • 数据类型中,PHP还有两种复合的数据类型,即数组(array)和对象/资源(object/resource)。 • 数组类型,可以是二维、三维或者多维数组,数组元素可以是整数、字符串或者浮点数,甚至是数组。 • 对象/资源类型可以存储变量信息和函数。 第3章 CGI概念和PHP程序设计基础 80-
PHP的内置环境变量和常量 • _FILE_,执行中的PHP程序文件名 • _LINE_,执行中PHP程序行数 • PHP_VISION,PHP程序的版本 • PHP_OS,执行PHP的操作系统名称 • TRUE,真值 • FALSE,假值 • E_ERROR,指向最近的错误处 第3章 CGI概念和PHP程序设计基础 80-
PHP的内置环境变量和常量 • 所有以E_开头形式的常量,可以参考error_reporting()函数 • 当然在程序编写时,以上的内定内置环境变量和常量是不够用的。define()函数可以自定义所需要的常量 第3章 CGI概念和PHP程序设计基础 80-
PHP的内置环境变量和常量 • 一个定义常量的例子 <? define("PI","3.14"); echo PI; //送出值3.14; ?> 第3章 CGI概念和PHP程序设计基础 80-
PHP变量 • PHP有3种类型的变量[1]: • 标量:一次保存一个特定数字或字符串,即基本数据类型中的任意一种。 • 数组:存储数值的列表。 • 对象:存储变量信息和函数。 [1]注意:在PHP中的变量名是区分大小写的。也就是说$scl_varname、 $Scl_varname、$Scl_Varname、$SCL_VARNAME代表不同的变量。 第3章 CGI概念和PHP程序设计基础 80-
PHP变量 • 标量[1] • 标量用来记录单个信息。例如,学生的名字或购物的数量。 • 由于标量在PHP编程中较为常用,在不致引起误解的情况下,一般意义上的变量也就是这里所指的标量。下面是一些变量的名字及含义: $int_page_number:存储当前页码。 $str_text_title:存储文章的标题。 $0:无效的变量名。因为变量名不能以数字字符开始。 • [1]在PHP编程中,永远不必预先声明简单变量。定义或分配简单的数据类型(标量或数组),第一次使用变量名就相当于定义它。 第3章 CGI概念和PHP程序设计基础 80-
PHP变量 • 使用代码给变量赋值。 <? $int_student_number=64; $str_text_title=“Welcome to PHP land.”; $int_student_number=64; $int_student_number=64+1; ?> 第3章 CGI概念和PHP程序设计基础 80-
PHP变量 • 数组变量 • 一个数组就是把一系列数字或字符串作为一个存储单元来处理。数组中的每一个信息都被认为是数组的一个元素。例如,可以用数组存储一个文件中的所有行或者存储一个地址列表。 第3章 CGI概念和PHP程序设计基础 80-
数组的赋值 $arr_animal['panda']='a rare animal in China.'; $arr_ainmal['dog']='an animal in people's home.'; $arr_ainmal ['camel']='Four-legged animal.'; #也可以用下面的方法同时对多个元素赋值: $arr_animal=array( 'panda'=>'a rare animal in China.' ,'dog'=>'an animal in people's home.' ,'camel'=>'Four legged animal.'); #请注意PHP数组结构与其他程序语言的差别 第3章 CGI概念和PHP程序设计基础 80-
数组的赋值 $arr_names[]='Jack'; $arr_names[]='Tom'; $arr_names[]=‘Jane’; • #以上代码给$arr_names数组增加了3个元素,这3个元素的下标分别为0、1和2(前提是该数组没有其他元素存在) 第3章 CGI概念和PHP程序设计基础 80-
数组元素的应用 • 获取这些数组元素的值 $key='panda'; $value=$arr_animal[$key]; #这两行代码运行以后,$value的值变为‘a rare animal in China.’。 $value=$arr_animal[‘panda’]; #用于数组下标的字符值始终须用单引号括起来,且数组下标中不应该有空格。 第3章 CGI概念和PHP程序设计基础 80-
数组元素的应用 • 用于数组下标的字符值始终应用单引号括起来,但是为什么 $arr_animal[panda] 错了呢?可能在老的脚本中见过如下语法: $foo[bar] = 'enemy'; echo $foo[bar];// etc • 这样是错的,但可以起作用。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'),而 PHP 可能会在以后定义此常量,不幸的是代码中有同样的名字。 第3章 CGI概念和PHP程序设计基础 80-
数组元素的应用 $arr_mixed=array(2,54,’Jack’=>'the first name','application'); #arr_mixed数组的数组下标分别是0、1、’Jack’和2。如果数组下标没有给定,PHP就自动提供一个。默认的数组下标是以0开始的,以后当数组下标没有赋值时默认值每次加一。 第3章 CGI概念和PHP程序设计基础 80-
多维数组 • 假如既要存储书的总页数,又要存储出版商的名字。这需要使用两个列表:lst_number_of_pages和lst_publisher_names,但在需要增加或修改信息的时候,就很不方便了。并且在保证两个列表的同步上也留下了隐患。 • 多维数组提供了一个极灵活的数据结构,每一个数组元素均可以包含另外一个数组。 第3章 CGI概念和PHP程序设计基础 80-
多维数组 • 多维数组的初始化 $arr_books=array( '0-679-7681-9’=>array('name'=>'The New History','pages'=>400 ,’publisher’=>’Vintage Books') '0-512-85585-5’=>array('name'=>'Children of the Mind','pages'=>549 ,’publisher’=>’Tor Books') ); 第3章 CGI概念和PHP程序设计基础 80-
多维数组 • 上例使用了每本书的ISBN号作为检索数组$arr_books的多维数组下标,且每本书都有它自己的子数组,用以描述其自己的特定信息。为了查询子数组中的信息,数组下标由一个扩展为两个,例如:要查询The New History一书的页数有多少,可以使用以下的表达式: $arr_books[‘0-51-85595-5’][‘pages’] 第3章 CGI概念和PHP程序设计基础 80-
多维数组 • 用户会发现多维数组十分灵活方便。毫不夸张他说,几乎每一个稍微复杂的程序中都可能使用多维数组。 • 多维数组随时都可以加入需要的元素。假如在程序运行过程中,觉得应该将作者名也存进去的话,那么只需在多维数组中加入如下信息即可: $arr_books[‘0-512-85595-5’][‘author’]='Orson Scott Card'; 第3章 CGI概念和PHP程序设计基础 80-
多维数组 • 注意PHP数组结构允许在一个子数组中加入一项内容,而不会影响其他数据。当开始使用PHP从多个数据库表中收集信息时,多维数组能用来组合这些信息。 • 例如,当使用一个涉及到多个产品供应商的产品数据库时,可以从第一个产品供应商开始将相关信息存入多维数组中。然后,再读取第二个产品供应商的信息(信息数据的组织形式与第一个可能不同),并将这些新信息写入同一个多维数组中。读取所有产品供应商的信息,并全部写入多维数组以后,该多维数组就包含了所有的产品信息。 第3章 CGI概念和PHP程序设计基础 80-
变量替换 $strsize='big'; echo “Jack was a $strsize man.”; 将显示为: Jack was a big man 注意:这样的字符串必须使用双引号。 第3章 CGI概念和PHP程序设计基础 80-
变量替换 $strsize='big'; echo "Jack was a $strsizeger man." 以上程序段存在问题,PHP无法识别,必须改成: $strsize='big'; echo "Jack was a ${strsize}ger man." 第3章 CGI概念和PHP程序设计基础 80-
动态变量名 //store the name of dynamic variable. $scl_dynamic='strname'; //assign a value to the dynamic variable. $$scl_dynamic ='John'; echo "\$strname=$strname\n"; 此程序将显示: $strname=John 第3章 CGI概念和PHP程序设计基础 80-
PHP运算符 PHP中的运算符与C语言中的相似,它包括: • 算术运算符 • 字符串运算符号 • 赋值运算符号 • 位元运算符 • 逻辑运算符 • 其他一些运算符 第3章 CGI概念和PHP程序设计基础 80-
算术运算符 <? $a=12; $b=5; $c=7; echo $a+$b."<br>\n"; echo $a-$b."<br>\n"; echo $a*Sb."<br>\n"; echo $a/$b."<br>\n"; echo $a%$c.“<br>\n”; //取余数 $a++; echo $a."<br>\n"; $c--; echo $c; ?> 第3章 CGI概念和PHP程序设计基础 80-
字符串的连接符 <? $a="PHP 4.0程序设计及实例教程"; $b="值得您购买"; echo $a":".$b; ?> • PHP的字符串运算(String Operator)的符号只有一个,就是英文的句号(.)。它可以将字符串连接起来,合并成新的字符串 第3章 CGI概念和PHP程序设计基础 80-
赋值运算符 • PHP赋值运算(Assignment operator) 有时会让人很感迷惑,但它却可以让程序更简洁、高效。 <? $a=7; $a+=5; //即$a=$a+5 echo $a."<br>\n"; $b="我"; $b.="在“ //$b="我在" echo "$b<br>\n"; ?> 第3章 CGI概念和PHP程序设计基础 80-
逻辑运算符 • 逻辑运算(Logical Operators)用来判断表达式的真假,常用于条件语句的执行,以及循环语句的开始或结束。 • PHP逻辑运算符的意义比较简单,具有C语言基础的都能理解,需要注意的是,虽然“&&”运算符和and运算符的意义相同,但它们的优先级不同,“&&”的优先级要高于and。在同样条件下,先进行“&&’运算,再进行and运算。“||”和or也一样 • 在PHP中,数值0表示逻辑值为假(False),非0的任何一个数都表示逻辑值为真(true)。例如:2、51等都表示真值。 第3章 CGI概念和PHP程序设计基础 80-
特殊的运算符 • $int_a表示一个标量,而int_a没有任何意义,“&$int_a”表示内存中实际储存标量$int_a的地址。 • @运算符加在函数前,则不会显示错误信息,不过这不能解决实际问题,要想解决问题,还要用到if语句。 第3章 CGI概念和PHP程序设计基础 80-
特殊的运算符 • “->”用来表示一个类的方法或属性,例如:form_lable表示一个类,即表单里的一个标签,用“form_lable->init”可表示它的一个方法,即初始化,用“form_lable->height”可表示它的一个属性,即该标签的高度。 • “=>”用来表示数组的元素。 • “?:”为三元操作符,其语法为: (expr1)?(expr2):(expr3); 第3章 CGI概念和PHP程序设计基础 80-