1 / 81

第 12 讲 网页设计与编程 ( 三 )

第 12 讲 网页设计与编程 ( 三 ). CGI 概念和 PHP 程序设计基础. 第 12 讲 本讲目标. 了解和掌握 CGI 的基本概念和程序处理过程; 理解 PHP 程序设计的基本要素 PHP 基本元素 PHP 程序流程控制 PHP 函数. 什么是 CGI?. Web 之所以成为电子商务 / 电子政务平台,一个重要的原因是它的交互性 ( 数据的双向交流 ) ; 在遍布世界的 Web 网站中,为实现对网站数据的有效管理,普遍采用了数据库技术;

melody
Télécharger la présentation

第 12 讲 网页设计与编程 ( 三 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第12讲 网页设计与编程 (三) CGI概念和PHP程序设计基础 第3章 CGI概念和PHP程序设计基础 80-

  2. 第12讲 本讲目标 • 了解和掌握CGI的基本概念和程序处理过程; • 理解PHP程序设计的基本要素 • PHP基本元素 • PHP程序流程控制 • PHP函数 第3章 CGI概念和PHP程序设计基础 80-

  3. 什么是CGI? • Web之所以成为电子商务/电子政务平台,一个重要的原因是它的交互性(数据的双向交流); • 在遍布世界的Web网站中,为实现对网站数据的有效管理,普遍采用了数据库技术; • 对于使用HTML网页,用户可以通过表单将数据发送到Web服务器,但是HTML无法将数据存取服务器的系统数据库; • 这就需要在HTML网页与数据库之间架设一个沟通的渠道,这就是 “通用网关接口(Common Gateway Interface,CGI)”; 第3章 CGI概念和PHP程序设计基础 80-

  4. 什么是CGI? • 所谓CGI实际上是一种脚本语言(scripting language),它的功能很多: • 审核用户从表单或HTTP请求的URL地址栏发来的数据; • 将数据存入数据库; • 应用户请求从数据库取出数据并通过动态网页(dynamic page)发给浏览器; • 检查Web服务器状态并发给浏览器用户一张“快照(snapshot)”。 第3章 CGI概念和PHP程序设计基础 80-

  5. 什么是CGI? • 建立CGI动态网页机制时,必须首先由用户从HTML网页向服务器发送数据。 • 该数据被CGI程序处理并产生新的HTML网页。 • 在此过程中,用户数据须通过诸多传递环节。 • 调用CGI应用程序的HTML文档直接影响信息向CGI程序传递的方式。 • 该过程是如何进行的?浏览器上的数据怎样才能到达CGI应用程序呢,其数据传递机制又是如何决定的? 第3章 CGI概念和PHP程序设计基础 80-

  6. 什么是CGI? • CGI程序从3个来源取得数据: • 浏览器用户 • 触发CGI应用程序的HTML网页 • Web服务器 • 所有传递到CGI程序的数据都经由Web服务器。 • Web服务器与CGI程序的数据交换一般通过特定的环境变量进行。这种环境变量通常对所有类型的网关程序来说都是可使用的。 第3章 CGI概念和PHP程序设计基础 80-

  7. 什么是CGI? • 浏览器(HTTP client)将用户在HTML网页中输入的数据进行转换后发给Web服务器 • 服务器依次按预先定义好的CGI协议将数据发给网关程序 • 这两种变量类型的数据都以属性/值的形式成对传送(例如:color=“red” )。 第3章 CGI概念和PHP程序设计基础 80-

  8. 第3章 CGI概念和PHP程序设计基础 80-

  9. 什么是CGI? • 实际上,可以把CGI看成是一个通过浏览器实现的一个类似操作系统中Shell[1]。 • [1]如DOS中的COMMAND.COM。 第3章 CGI概念和PHP程序设计基础 80-

  10. 什么是CGI? • Shell • 标准输入 键盘 • 标准输出 屏幕 • 功能选择 命令 • 功能调节 参数 • 提示提示 c:\> • CGI • 标准输入 表单;URL地址栏 • 标准输出 网络;浏览器 • 功能选择 输入网页URL;超链 • 功能调节 输入网页URL和参数 • 命令提示 超链;地址栏 第3章 CGI概念和PHP程序设计基础 80-

  11. PHP程序样例 <html> <head> <title>The First Greeting from PHP </title> </head> <body> <? echo "hello,$name\n"; ?> </body> </html> 第3章 CGI概念和PHP程序设计基础 80-

  12. 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-

  13. PHP程序的执行结果 第3章 CGI概念和PHP程序设计基础 80-

  14. PHP程序发给浏览器的源代码 <html> <head> <title>The First Greeting from PHP </title> </head> <body> hello,Cheng </body> </html> 第3章 CGI概念和PHP程序设计基础 80-

  15. PHP与 “纯”HTML网页的不同 • PHP网页除了需要Web服务器和浏览器的参与外,还需要经过CGI模块处理才能显示(本例中用的是PHP.exe); • PHP网页的程序参数(或变量)至少可以从URL地址栏附在网页的URL一起输入; • PHP网页的输出可以随程序参数(或变量)值变化而变化。 • 在本例网页的访问过程中,在http://127.0.0.1/greeting.php网址之后附带了“?name=Cheng” ,该示例使用了一个输入数据项。 • 等号“=” 左边的称为“参数”, “=”右边的是参数值 • 当需要输入的数据项多于一项时,数据项之间要用“&”号隔开 第3章 CGI概念和PHP程序设计基础 80-

  16. 将PHP程序嵌入网页的方法 • <?Echo("这是第一个PHP语言的嵌入例子\n");?> • <?php echo("这是第二个PHP语言的嵌入例子\n");?> • <script language="php"> echo("这是第三个PHP语言的嵌入例子,它类似JavaScript及VBScript语法的PHP语言嵌入"); </script> • <% echo("这是类似ASP嵌人语法的PHP例子");%> 第3章 CGI概念和PHP程序设计基础 80-

  17. PHP中的引用文件 • 将常用的功能写成一个函数,预先存放在文件中,然后在编制含有PHP程序的网页中引用相应的文件,就可以调用适用的函数了,这样既可加强代码的灵活性和可读性,也有利于代码重用。 • 引用文件的方法有两种:require()函数及include()函数 第3章 CGI概念和PHP程序设计基础 80-

  18. PHP中的引用文件 • require()的使用方法,如“require(”MyRequireFile.php“);”。该函数一般放在PHP程序的最前面,PHP程序在执行前,就会先读入require语句所指定引入的文件,使它变成PHP网页的一部分。用此方法可将常用的函数引入网页中。 • include()的使用方法,如“include("MyIncludeFile.php");”。该函数一般放在流程控制的处理区域中。PHP程序网页在读到include语句时,才将相关的文件读进来。这种方法,可以把程序执行时的流程处理程序简单化,增强程序的可读性。 第3章 CGI概念和PHP程序设计基础 80-

  19. PHP程序的注释风格 <? Echo "这是第一种方法的例子。\n"; //本例是C++的注释风格 /*本例采用多行的注释方式*/ echo "这是第二种方法的例子。\n"; echo "这是第三种方法的例子。\n";#本例使用UNIX Shell注释风格 ?> 第3章 CGI概念和PHP程序设计基础 80-

  20. PHP的常量、变量和数据类型 • PHP是一种弱类型的程序语言,也就是说一个变量可以存储任意类型的数据,使用变量之前无须声明变量是字符型还是整型。 (与C语言有本质区别) 第3章 CGI概念和PHP程序设计基础 80-

  21. 数据类型 • PHP的基本数据类型: • 整数(integer):十六进制数需要0x前缀 • 双精度浮点数(double) • 字符串(string) :1~n个字符 第3章 CGI概念和PHP程序设计基础 80-

  22. 数据类型 • 给字符串变量赋值,要在该字符串首尾加上双引号 (例如: “这是字符串”)。 • 在字符串插入控制符时,须使用转义字符,也就是斜线加上指定的符号 ,例如: \“=双引号 \\=斜线 \n=换行 \r=回车(CR) \t=制表(TAB) 第3章 CGI概念和PHP程序设计基础 80-

  23. 数据类型 • 数据类型中,PHP还有两种复合的数据类型,即数组(array)和对象/资源(object/resource)。 • 数组类型,可以是二维、三维或者多维数组,数组元素可以是整数、字符串或者浮点数,甚至是数组。 • 对象/资源类型可以存储变量信息和函数。 第3章 CGI概念和PHP程序设计基础 80-

  24. PHP的内置环境变量和常量 • _FILE_,执行中的PHP程序文件名 • _LINE_,执行中PHP程序行数 • PHP_VISION,PHP程序的版本 • PHP_OS,执行PHP的操作系统名称 • TRUE,真值 • FALSE,假值 • E_ERROR,指向最近的错误处 第3章 CGI概念和PHP程序设计基础 80-

  25. PHP的内置环境变量和常量 • 所有以E_开头形式的常量,可以参考error_reporting()函数 • 当然在程序编写时,以上的内定内置环境变量和常量是不够用的。define()函数可以自定义所需要的常量 第3章 CGI概念和PHP程序设计基础 80-

  26. PHP的内置环境变量和常量 • 一个定义常量的例子 <? define("PI","3.14"); echo PI; //送出值3.14; ?> 第3章 CGI概念和PHP程序设计基础 80-

  27. PHP变量 • PHP有3种类型的变量[1]: • 标量:一次保存一个特定数字或字符串,即基本数据类型中的任意一种。 • 数组:存储数值的列表。 • 对象:存储变量信息和函数。 [1]注意:在PHP中的变量名是区分大小写的。也就是说$scl_varname、 $Scl_varname、$Scl_Varname、$SCL_VARNAME代表不同的变量。 第3章 CGI概念和PHP程序设计基础 80-

  28. PHP变量 • 标量[1] • 标量用来记录单个信息。例如,学生的名字或购物的数量。 • 由于标量在PHP编程中较为常用,在不致引起误解的情况下,一般意义上的变量也就是这里所指的标量。下面是一些变量的名字及含义: $int_page_number:存储当前页码。 $str_text_title:存储文章的标题。 $0:无效的变量名。因为变量名不能以数字字符开始。 • [1]在PHP编程中,永远不必预先声明简单变量。定义或分配简单的数据类型(标量或数组),第一次使用变量名就相当于定义它。 第3章 CGI概念和PHP程序设计基础 80-

  29. 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-

  30. PHP变量 • 数组变量 • 一个数组就是把一系列数字或字符串作为一个存储单元来处理。数组中的每一个信息都被认为是数组的一个元素。例如,可以用数组存储一个文件中的所有行或者存储一个地址列表。 第3章 CGI概念和PHP程序设计基础 80-

  31. 数组的赋值 $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-

  32. 数组的赋值 $arr_names[]='Jack'; $arr_names[]='Tom'; $arr_names[]=‘Jane’; • #以上代码给$arr_names数组增加了3个元素,这3个元素的下标分别为0、1和2(前提是该数组没有其他元素存在) 第3章 CGI概念和PHP程序设计基础 80-

  33. 数组元素的应用 • 获取这些数组元素的值 $key='panda'; $value=$arr_animal[$key]; #这两行代码运行以后,$value的值变为‘a rare animal in China.’。 $value=$arr_animal[‘panda’]; #用于数组下标的字符值始终须用单引号括起来,且数组下标中不应该有空格。 第3章 CGI概念和PHP程序设计基础 80-

  34. 数组元素的应用 • 用于数组下标的字符值始终应用单引号括起来,但是为什么 $arr_animal[panda] 错了呢?可能在老的脚本中见过如下语法: $foo[bar] = 'enemy'; echo $foo[bar];// etc • 这样是错的,但可以起作用。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'),而 PHP 可能会在以后定义此常量,不幸的是代码中有同样的名字。 第3章 CGI概念和PHP程序设计基础 80-

  35. 数组元素的应用 $arr_mixed=array(2,54,’Jack’=>'the first name','application'); #arr_mixed数组的数组下标分别是0、1、’Jack’和2。如果数组下标没有给定,PHP就自动提供一个。默认的数组下标是以0开始的,以后当数组下标没有赋值时默认值每次加一。 第3章 CGI概念和PHP程序设计基础 80-

  36. 多维数组 • 假如既要存储书的总页数,又要存储出版商的名字。这需要使用两个列表:lst_number_of_pages和lst_publisher_names,但在需要增加或修改信息的时候,就很不方便了。并且在保证两个列表的同步上也留下了隐患。 • 多维数组提供了一个极灵活的数据结构,每一个数组元素均可以包含另外一个数组。 第3章 CGI概念和PHP程序设计基础 80-

  37. 多维数组 • 多维数组的初始化 $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-

  38. 多维数组 • 上例使用了每本书的ISBN号作为检索数组$arr_books的多维数组下标,且每本书都有它自己的子数组,用以描述其自己的特定信息。为了查询子数组中的信息,数组下标由一个扩展为两个,例如:要查询The New History一书的页数有多少,可以使用以下的表达式: $arr_books[‘0-51-85595-5’][‘pages’] 第3章 CGI概念和PHP程序设计基础 80-

  39. 多维数组 • 用户会发现多维数组十分灵活方便。毫不夸张他说,几乎每一个稍微复杂的程序中都可能使用多维数组。 • 多维数组随时都可以加入需要的元素。假如在程序运行过程中,觉得应该将作者名也存进去的话,那么只需在多维数组中加入如下信息即可: $arr_books[‘0-512-85595-5’][‘author’]='Orson Scott Card'; 第3章 CGI概念和PHP程序设计基础 80-

  40. 多维数组 • 注意PHP数组结构允许在一个子数组中加入一项内容,而不会影响其他数据。当开始使用PHP从多个数据库表中收集信息时,多维数组能用来组合这些信息。 • 例如,当使用一个涉及到多个产品供应商的产品数据库时,可以从第一个产品供应商开始将相关信息存入多维数组中。然后,再读取第二个产品供应商的信息(信息数据的组织形式与第一个可能不同),并将这些新信息写入同一个多维数组中。读取所有产品供应商的信息,并全部写入多维数组以后,该多维数组就包含了所有的产品信息。 第3章 CGI概念和PHP程序设计基础 80-

  41. 变量替换 $strsize='big'; echo “Jack was a $strsize man.”; 将显示为: Jack was a big man 注意:这样的字符串必须使用双引号。 第3章 CGI概念和PHP程序设计基础 80-

  42. 变量替换 $strsize='big'; echo "Jack was a $strsizeger man." 以上程序段存在问题,PHP无法识别,必须改成: $strsize='big'; echo "Jack was a ${strsize}ger man." 第3章 CGI概念和PHP程序设计基础 80-

  43. 动态变量名 //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-

  44. PHP运算符 PHP中的运算符与C语言中的相似,它包括: • 算术运算符 • 字符串运算符号 • 赋值运算符号 • 位元运算符 • 逻辑运算符 • 其他一些运算符 第3章 CGI概念和PHP程序设计基础 80-

  45. 算术运算符 <? $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-

  46. 字符串的连接符 <? $a="PHP 4.0程序设计及实例教程"; $b="值得您购买"; echo $a":".$b; ?> • PHP的字符串运算(String Operator)的符号只有一个,就是英文的句号(.)。它可以将字符串连接起来,合并成新的字符串 第3章 CGI概念和PHP程序设计基础 80-

  47. 赋值运算符 • 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-

  48. 逻辑运算符 • 逻辑运算(Logical Operators)用来判断表达式的真假,常用于条件语句的执行,以及循环语句的开始或结束。 • PHP逻辑运算符的意义比较简单,具有C语言基础的都能理解,需要注意的是,虽然“&&”运算符和and运算符的意义相同,但它们的优先级不同,“&&”的优先级要高于and。在同样条件下,先进行“&&’运算,再进行and运算。“||”和or也一样 • 在PHP中,数值0表示逻辑值为假(False),非0的任何一个数都表示逻辑值为真(true)。例如:2、51等都表示真值。 第3章 CGI概念和PHP程序设计基础 80-

  49. 特殊的运算符 • $int_a表示一个标量,而int_a没有任何意义,“&$int_a”表示内存中实际储存标量$int_a的地址。 • @运算符加在函数前,则不会显示错误信息,不过这不能解决实际问题,要想解决问题,还要用到if语句。 第3章 CGI概念和PHP程序设计基础 80-

  50. 特殊的运算符 • “->”用来表示一个类的方法或属性,例如:form_lable表示一个类,即表单里的一个标签,用“form_lable->init”可表示它的一个方法,即初始化,用“form_lable->height”可表示它的一个属性,即该标签的高度。 • “=>”用来表示数组的元素。 • “?:”为三元操作符,其语法为: (expr1)?(expr2):(expr3); 第3章 CGI概念和PHP程序设计基础 80-

More Related