PHP开发人员更有效地编写代码


  

浅谈PHP的WEB开发技术概述

- 1 - 浅谈PHP的WEB开发技术  摘   要 World Wide Web(简称Web)是随着Internet的普及使用而发展起来的一门技术,它能把文本、图像、声音、动画、视像等多种媒体信息集于一体,而且使信息的浏览更为方便,因此许多企业纷纷建设自己的网站以增强企业知名度. PHP是一种跨平台的服务器语言,它的易用性,使得它得到了很多Web开发者的亲睐。本篇论文是对基于PHP语言的Web开发技术的一点论述,主要论述了PHP、MYSQL、开源框架、数据库的缓存技术在Web开发过程中用处,以及在过程中所遇到的要点、难点等。  关键字:PHP、MYSQL、Smarty、Javascript  Abstract   World Wide Web (hereinafter referred to as the Web) is along with the popularity of Internet use and developed to a technology, it can put the text, image, sound, animation, video and so on many kinds of media information collection in an organic whole, and make information browsing more convenient, so many businesses have to build their own Web site to strengthen the enterprise name recognition. PHP is a cross-platform server language, It’s ease of use, and make it got a lot of Web developers in the pro-gaze. This paper is based on the Web for php language development technology point discusses, this paper discusses mainly the PHP, MYSQL, open source framework, the database caching technology in Web development in the process of use, and in the process of the main point of the meeting, difficulties… Keyword: PHP; MYSQL; Smarty; Javascript 

  

- 2 -  目  录 1. 绪论……………………………………………………………………………… 1 1.1 Web开发环境……………………………………………………………… 1  1.1.1 开发环境的选择 ………………………………………………… 1 1.2 开发工具…………………………………………………………………… 1  1.2.1 Adobe Dreamweaver CS5 ……………………………………… 1  1.2.2 Zend Studio ……………………………………………………… 2 2. MySQL数据库 …………………………………………………………… 2 2.1 存储引擎 …………………………………………………………………… 2  2.1.1 MyISAM ……………………………………………………………… 2  2.1.2 InnoDB ……………………………………………………………… 3  2.1.3 MEMORY ……………………………………………………………… 3  2.1.4 MERGE………………………………………………………………… 3  2.1.5 ARCHIVE……………………………………………………………… 3  2.1.6 CSV…………………………………………………………………… 3 2.2 数据类型和属性…………………………………………………………… 3 2.3 管理员数据表实例设计 ………………………………………………… 3 3. Smarty模板引擎 ………………………………………………………… 5 3.1 Smarty的介绍……………………………………………………………… 5  3.1.1 Smarty的优点 …………………………………………………… 5  3.1.2 Smarty模板引擎运作流程……………………………………… 6 3.2 Smarty的配置……………………………………………………………… 6 3.3 使用Smarty………………………………………………………………… 7 3.4 Smarty的表现逻辑 ……………………………………………………… 9  3.4.1 注释 ………………………………………………………………… 9  3.4.2 变量修饰符………………………………………………………… 9  3.4.3 控制结构 …………………………………………………………… 9 3.5 Smarty缓存………………………………………………………………… 11  3.5.1 Smarty的缓存配置 ……………………………………………… 11 4. Javascript+CSS …………………………………………………………… 12 4.1 Javascript在网页设计中的应用 …………………………………… 12 4.2 CSS + HTML的结合设计网页…………………………………………… 13 

  

- 3 -  4.2.1 什么是CSS………………………………………………………… 13  4.2.2 CSS与HTML的结合方式 ……………………………………… 14  4.2.3 CSS在网络中的应用实例……………………………………… 14 5. WEB的安全性  ………………………………………………………… 15 5.1 防止SQL注入……………………………………………………………… 15 5.2 防止跨站脚本攻击 ……………………………………………………… 15  

  

- 1 - 1. 绪论 Web技术的发展Internet起源于20世纪60年代末、70年代初,起初Web上的网页都是单纯的HTML静态页面,大量的HTML文件使得Web信息的管理、更新、查询变得越来越低效,随着Web上信息量的不断增加,对Web表现形式和开发技术提出了更高的要求。为更有效的管理和维护网上的庞大信息资源,人们最初使用与数据库连接的CGI(Common Gateway Interface公共网关接口)技术作为Web的后台程序,利用Perl或C/C++等高级语言来实现CGI连接,这虽说能满足一定的交互要求,但开发难度高,数据库连接功能弱,可移植性较差,极大地阻碍了CGI程序的应用和发展。 PHP(Personal Home Page)的问世,极大地简化了以往应用程序与数据库之间连接的繁琐过程,大大降低了“动态网站”的开发门槛,在一定意义上促使此类语言的崛起和迅猛发展。Microsoft的ASP一度曾被许多大型网站所采用,但和微软的其它产品一样,ASP只能在WIN32平台上运行,并且安全性较低,从而使ASP的进一步应用受到限制。而PHP作为一种运行的服务器端的嵌入式脚本技术(工作方式类似于微软的ASP),是根据用户请求或服务器端的数据生动态网页。它公开原代码,其独特的语法混合了C、Java、Perl以及PHP式的新语法,编程灵活,易于上手。 选择PHP作为Web开发技术意味着在不同的操作系统平台、数据库系统等方面有更多的选择权。 1.1开发环境 1.1.1 开发环境的选择 平台:Window 服务器:Apache 数据库:MySQL 开发语言:PHP  1.2 开发工具  正所谓“工欲善其事,必先利其器”,针对PHP的功能完备的开发具,如今已经有许多此类开源以及商业的工具可供选择。 1.2.1 Adobe Dreamweaver CS5 Adobe Dreamweaver CS5 是公认的Web设计人员必备的一个工具,利用它开发人员能够以WYSIWYG(What-You-See-Is-What-You-Get,所见即所得)的方式创建网页。它还提供了大量方便的特性帮助PHP开发人员更有效地编写代码(这包括语法突出显示和代码自动完成)并轻松地保存和重用代码段。 

  

- 2 - 1.2.2 Zend Studio Zend Studio是业界公认的所有商业以及开源产品中功能最强大的PHP IDE(集成开发环境)。作为Zend技术有限公司所推出的旗舰产品,Zend Studio提供了你所能想到的企业级IDE的所有特性,包括完善的代码自动完成功能、CVS和Subversion集成、内部和远程测试、代码调整以及方便的代码部署过程。  另外,Zend Studio提供了将代码与流行数据库(如MySQL、Oracle和SQLite)集成的功能,还能够执行SQL查询,并查看和管理数据库模式与数据。 2. MySQL数据库 MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。使用PHP+MySQL+Apache也是现在很多网站选择的一种方案。 2.1 存储引擎  在设计数据库时,除非是操作非常简单的数据库,不然就得事先充分考虑数据库中每个表的作用和行为,并相应地选择适当的存储引擎。从长远意义上看,这对应用程序的性能有很大的提高。所以,在WEB开发中很有必要对几个常用的存储引擎进行一定的了解。 2.1.1 MyISAM  MyISAM是Mysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务,从而避免事务性存储引擎所需的额外开销。  它在筛选大量数据时非常迅速,甚至在高流量环境中也是如此。并发插入特性允许同时选择和插入数据。所以MyISAM存储引擎特别适合应用于选择和插入密集的表,例如:管理邮件或Web服务器日志数据。  MyISAM格式有三种形式——静态、动态和压缩。  静态:如果所有表列的大小都是静态的(即不适用xBLOB、xTEXT或VARCHAR数据类型),MySQL会自动使用静态MyISAM格式。  动态:如果有表列(即使只有一列)被定义为动态的(使用xBLOB、xTEXT或VARCHAR), MySQL会自动使用动态MyISAM格式。  压缩:如果表在整个应用程序生命周期中都只读的,用压缩表来减少所占空间。 

  

- 3 - 2.1.2 InnoDB  InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定和外键约束。InnoDB表资源使用专用缓冲区管理,此缓冲区可以像其他任何MySQL配置参数一样进行控制。所以InnoDB存储引擎特别适合更新密集的表、事务、自动灾害恢复。 2.1.3 MEMORY  Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失。 2.1.4 MERGE  Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。 2.1.5 ARCHIVE  ARCHIVE存储引擎使用zlib压缩库大大压缩了此类型表中的数据,在记录被请求时会实时进行解压。它除了选择记录,还可以插入数据,这在把旧数据移植到ARCHIVE表中时是很有必要的。但是,不允许删除或更新存储在这些表中的数据。Archive非常适合存储大量的、独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但存储在ARCHIVE表中的任何数据都不会有索引,这意味着SELECT操作效率就很低。 2.1.6 CSV  CSV存储引擎以一种逗号分隔的格式存储表数据,访问和操作CSV表与访问其他任何表类型一样,但CSV表实际上是文本文件。可以通过MySQL指定数据文件夹中的相应数据文件(带.cvs扩展名)复制现有的CSV文件。此外,由于CSV文件的特殊格式,不可能利用诸如索引等典型的数据库特性。 2.2 数据类型和属性  MySQL表每个列中的数据实行严格的控制,只是数据驱动应用程序成功的关键。MySQL本身就提供了一组可以赋给表中各个列的数据类型。每个类型都强制数据满足为该数据类型预先确定的一组规则。  这些数据类型的行为可以通过包含属性进一步调整。 2.3 管理员数据表设计实例 在创建数据库表前,需要根据业务流程和系统功能结构,规划出系统中使用的数据库实体对象及实体E-R图,以管理员信息数据库表设计为例。 

  

- 4 - (1)管理员信息实体E-R图  图2-1 管理员信息实体E-R图 (2)管理员信息表(jq_admin)用来保存管理员的信息,该数据表结构如图2-2  图2-2 管理员信息表结构  (3)如图2-3可以看出表的存储引擎为MyISAM 

  

- 5 -  图2-3 jq_admin数据库表的属性 3. Smarty模板引擎 PHP是一种HTML嵌入式语言,如果把PHP和HTML混合嵌套在一起,不利于项目的开发。而编程的一个基本原则:要尽力将表现和逻辑相分离。这时,我们就需要寻找一种合理解决的方案。 虽然还没有尽善尽没的解决方案, 但已经有很多解决方案几乎可以将网站的表现和逻辑完全分离。这些解决方案称为模板化引擎(templating engine),他们就在逐步消除由于缺乏层次分离而带来的难题。而其中最流行当属:Smarty。 3.1 Smarty的介绍  Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。 3.1.1 Smarty的优点  1. 速度:相对于其它的模板引擎技术而言的,采用Smarty编写的程序可以获得最大速度的提高。   2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下) 

  

- 6 -   3. 缓存技术:Smarty选用的一中缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。   4. 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。   5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。 3.1.2 Smarty模板引擎运作流程  Smarty模板引擎一方面读取模板文件中的页面样式,一方面读取PHP程序并进行编译,然后结合模板文件和PHP程序并进行编译,得到编译后的PHP文件,最后在浏览器上将页面输出。当用户再次访问该文件时,Smarty模板会检查编译文件是否存在,如果不存在的话,就重新进行编译;如果存在,就直接运行这个文件。如图3-1:  

  

- 7 - 图3-1 Smarty模板引擎运作示意图 3.2 Smarty配置  安装Smarty非常简单。首先,到www.smarty.net下载最新的稳定版本。将Smarty加压缩到Web文档根目录的某个位置。然后创建存储Smarty模板和配置文件的4个目录。  templates 放置所有网站模板。  configs 放置在特定网站中使用的所有特殊的Smarty配置文件。  templates_c 放置Smarty编译的所有模板(对于WEB服务器必须是可写的)。  cache 在启用缓存特性的情况下,放置smarty缓存的所有模板(对于WEB服务器必须是可写的)。 在默认情况下,Smarty认为这些目录与实例化Smarty类的脚本位于相同的目录。我们也可以使用Smarty的$temolate_dir、$compile_dir、$configs_dir、$cache_dir修改默认行为。如下图:  图3-2 Smarty配置文件 3.3 使用Smarty  创建index.php文件,先使用require()语句引进刚配置好的Smarty配置文件。下面是一个简单的实例。代码清单3-2给出了一个简单的设计模板。模板中定义了两个变量:$title和$content。两个变量都放在大括号中,大括号是Smarty的默认定界符。这些定界符告诉

  

- 8 - Smarty要对定界符所包围的内容完成某些操做。在这个例子中,唯一的动作就是通过应用程序逻辑(代码清单3-1)传入相应值替代变量。不过,Smarty还能够完成大量的其他任务,例如执行表现逻辑和文本格式等。 <?php require('smarty.php'); $smarty = new Smarty; //分配两个Smarty变量 $smarty->assign('title', "Smarty配置测试"); $smarty->assign('content', "Smarty配置成功"); //获取并输出模板 $smarty->display('index.tpl'); ?> 代码清单3-1 模板的应用程序逻辑   <html> <head> <title>{$title}</title> </head>     <body>         <p>             {$content}         </p>     </body> </html> 代码清单3-2简单的Smarty设计模板  Smarty默认模板位于templates目录内,除非通过$template_dir修改了默认模板目录。  输出的结果如图3-3所示 

  

- 9 -  图3-2 代码清单3-2的输出 3.4 Smarty的表现逻辑 3.4.1 注释  注释包围在定界符 {* 和 *} 之间,可以包括一行或多行,如 {* 注释 *}。 3.4.2 变量修饰符 变量修饰符的语法,如 {$var(变量名)|modifier(修饰符)}。表3-1列出几个比较常用的修饰符。  修饰符 作用 例子 capitalize 首字母大写 {$var|capitalize} count_words 单词计数 {$var|count_words} date_format 格式化日期 {$var|date_format:”%B %e, %Y”} default 赋默认值 {$var|default:”默认的值”} strip_tags 删除标记标签 {$var|strip_tags} truncate 截取指定的字符串 {$var|truncate:10:”…”} 表3-1 Smarty变量修饰符 3.4.3 控制结构  if函数 与php语言中的if函数相同,下面是一个简单实例: 

  

- 10 - {if $var >5}  <p>变量var大于5</p> {/if}  foreach函数 foreach 与php中同名结构做法相同。假如 $arr = array(“tom”, “jim”, “mary”),然后我们要遍历输出数组中的每个元素,就如下: {foreach $arr as $name}  $name<br /> {/foreach}  foreachelse函数 foreachelse的作用是当数组为空时,可以生成某个候选输出,如: {foreach $arr as $name}  $name<br /> {foreachelse}  空的<br /> {/foreach}  section函数 是foreach的一种改进,会循环处理并输出数据数组,但其语法的差别很大。它提供了很多附加选项,可以更好的控制循环的执行,如表3-2。  参数 作用 name 确定节的名,可以任意 loop 设置循环的次数,应当设置为与数组变量同名 start 确定开始的位置 step 确定在数组中移动的步常值 max 确定循环的最大次数 show 确定是否显示此节(调试时,可以设置为TRUE) 示例,假如数组$arr = array(“tom”, “jim”, “mary”), 然后我们要遍历输出数组中的每个元素 {section name=person loop=$arr} 

  

- 11 -  {$arr[person]}<br /> {/section}  sectionelse函数 sectionelse的作用是当数组为空时,可以生成某个候选输出,如: {section name=person loop=$arr}  {$arr[person]}<br /> {sectionelse}  <p>空的</p><br /> {/section} 3.5 Smarty缓存  数据密集型应用程序一般都有很大的开销,通常是数据获取和处理操作带来的。对于Web应用程序,这个问题是由HTTTP协议的无状态性造成的。由于HTTP协议是无状态的,对于每个页面请求都要重复地执行相同的操作,而不论数据是否已改变。这样Web服务器的运行效率就很低。对此有一种特别有效的解决方案,这也是最合理的方案之一:将动态页面转化为静态页面,只有在页面内容有改变之后才重新构建,或者定期重新构建。Smarty也提供了这样一个特性,一般称为页面缓存(page caching)。 3.5.1 Smarty的缓存配置 <?php require(“Smarty.class.php”); $smarty = new Smarty; $smarty->caching = true;    $smarty->cache_lifetime = 60;  ?> 用$smarty->caching = true; 语句启动缓存后,调用display()和fetch()方法是就会在指定模板缓存路径(由$cache_dir属性指定)中保存目标模板的内容。然后用$smarty->cache_lifetime = 60; 设置缓存的生命周期,这里设置了60秒。当访问时间是在60秒之内的,只要不改变模板文件,缓存将不会改变。如图3-3是缓存后的文件: 

  

- 12 -  图3-3 缓存后的文件 缓存后的文件相当于静态页,变量已经通过逻辑层的运算替换成了实际要显示的内容。所以在缓存生命周期内,重新去访问该页面时,就大大减少了逻辑层的开销。 4. Javascript+CSS 4.1 Javascript在网页设计中的应用 JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用,从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷。 JavaScript的出现使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一种实时的、动态的、可交式的表达能力。从而基于CGI静态的HTML页面将被可提供动态实时信息,并对客户操作进行反应的Web页面的取代。JavaScript脚本正是满足这种需求而产生的语言。它深受广泛用户的喜爱。它是众多脚本语言中较为优秀的一种,与WWW的结合有效地实现了网络计算和网络计算机的蓝图。 Javascript在网站中的应用实例: 下面代码清单4-1是网站首页军事图库的轮播的一段Javascript代码 


点击下载

会员免费下载

提取密码:  

上一篇:教育资源的整合与利用

下一篇:fgfdsgfsg

相关内容