毕业论文范文——浅谈PHP的WEB开发技术_第1页
毕业论文范文——浅谈PHP的WEB开发技术_第2页
毕业论文范文——浅谈PHP的WEB开发技术_第3页
毕业论文范文——浅谈PHP的WEB开发技术_第4页
免费预览已结束,剩余16页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浅谈PHP的WEB开发技术摘 要World Wide Web(简称Web)是随着Internet的普及使用而发展起来的一门技术,它能把文本、图像、声音、动画、视像等多种媒体信息集于一体,而且使信息的浏览更为方便,因此许多企业纷纷建设自己的网站以增强企业知名度.PHP是一种跨平台的服务器语言,它的易用性,使得它得到了很多Web开发者的亲睐。本篇论文是对基于PHP语言的Web开发技术的一点论述,主要论述了PHP、MYSQL、开源框架、数据库的缓存技术在Web开发过程中用处,以及在过程中所遇到的要点、难点等。关键字:PHP、MYSQL、Smarty、Javascript- 17 -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, Its 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, difficultiesKeyword: PHP; MYSQL; Smarty; Javascript目 录1. 绪论11.1 Web开发环境11.1.1 开发环境的选择 11.2 开发工具11.2.1 Adobe Dreamweaver CS5 11.2.2 Zend Studio 22. MySQL数据库 22.1 存储引擎 22.1.1 MyISAM 22.1.2 InnoDB 32.1.3 MEMORY 32.1.4 MERGE32.1.5 ARCHIVE32.1.6 CSV32.2 数据类型和属性32.3 管理员数据表实例设计 33. Smarty模板引擎 53.1 Smarty的介绍53.1.1 Smarty的优点 53.1.2 Smarty模板引擎运作流程63.2 Smarty的配置63.3 使用Smarty73.4 Smarty的表现逻辑 93.4.1 注释 93.4.2 变量修饰符93.4.3 控制结构 93.5 Smarty缓存 113.5.1 Smarty的缓存配置 114. Javascript+CSS 124.1 Javascript在网页设计中的应用 124.2 CSS + HTML的结合设计网页 134.2.1 什么是CSS 134.2.2 CSS与HTML的结合方式 144.2.3 CSS在网络中的应用实例 145. WEB的安全性 155.1 防止SQL注入 155.2 防止跨站脚本攻击 151. 绪论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开发语言:PHP1.2 开发工具正所谓“工欲善其事,必先利其器”,针对PHP的功能完备的开发具,如今已经有许多此类开源以及商业的工具可供选择。1.2.1 Adobe Dreamweaver CS5Adobe Dreamweaver CS5 是公认的Web设计人员必备的一个工具,利用它开发人员能够以WYSIWYG(What-You-See-Is-What-You-Get,所见即所得)的方式创建网页。它还提供了大量方便的特性帮助PHP开发人员更有效地编写代码(这包括语法突出显示和代码自动完成)并轻松地保存和重用代码段。1.2.2 Zend StudioZend 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 MyISAMMyISAM是Mysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务,从而避免事务性存储引擎所需的额外开销。它在筛选大量数据时非常迅速,甚至在高流量环境中也是如此。并发插入特性允许同时选择和插入数据。所以MyISAM存储引擎特别适合应用于选择和插入密集的表,例如:管理邮件或Web服务器日志数据。MyISAM格式有三种形式静态、动态和压缩。静态:如果所有表列的大小都是静态的(即不适用xBLOB、xTEXT或VARCHAR数据类型),MySQL会自动使用静态MyISAM格式。动态:如果有表列(即使只有一列)被定义为动态的(使用xBLOB、xTEXT或VARCHAR), MySQL会自动使用动态MyISAM格式。压缩:如果表在整个应用程序生命周期中都只读的,用压缩表来减少所占空间。2.1.2 InnoDBInnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定和外键约束。InnoDB表资源使用专用缓冲区管理,此缓冲区可以像其他任何MySQL配置参数一样进行控制。所以InnoDB存储引擎特别适合更新密集的表、事务、自动灾害恢复。2.1.3 MEMORYMemory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失。2.1.4 MERGEMerge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。2.1.5 ARCHIVEARCHIVE存储引擎使用zlib压缩库大大压缩了此类型表中的数据,在记录被请求时会实时进行解压。它除了选择记录,还可以插入数据,这在把旧数据移植到ARCHIVE表中时是很有必要的。但是,不允许删除或更新存储在这些表中的数据。Archive非常适合存储大量的、独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但存储在ARCHIVE表中的任何数据都不会有索引,这意味着SELECT操作效率就很低。2.1.6 CSVCSV存储引擎以一种逗号分隔的格式存储表数据,访问和操作CSV表与访问其他任何表类型一样,但CSV表实际上是文本文件。可以通过MySQL指定数据文件夹中的相应数据文件(带.cvs扩展名)复制现有的CSV文件。此外,由于CSV文件的特殊格式,不可能利用诸如索引等典型的数据库特性。2.2 数据类型和属性MySQL表每个列中的数据实行严格的控制,只是数据驱动应用程序成功的关键。MySQL本身就提供了一组可以赋给表中各个列的数据类型。每个类型都强制数据满足为该数据类型预先确定的一组规则。这些数据类型的行为可以通过包含属性进一步调整。2.3 管理员数据表设计实例在创建数据库表前,需要根据业务流程和系统功能结构,规划出系统中使用的数据库实体对象及实体E-R图,以管理员信息数据库表设计为例。(1)管理员信息实体E-R图图2-1 管理员信息实体E-R图(2)管理员信息表(jq_admin)用来保存管理员的信息,该数据表结构如图2-2图2-2 管理员信息表结构(3)如图2-3可以看出表的存储引擎为MyISAM图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请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)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:图3-1 Smarty模板引擎运作示意图3.2 Smarty配置安装Smarty非常简单。首先,到下载最新的稳定版本。将Smarty加压缩到Web文档根目录的某个位置。然后创建存储Smarty模板和配置文件的4个目录。l templates 放置所有网站模板。l configs放置在特定网站中使用的所有特殊的Smarty配置文件。l templates_c放置Smarty编译的所有模板(对于WEB服务器必须是可写的)。l 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的默认定界符。这些定界符告诉Smarty要对定界符所包围的内容完成某些操做。在这个例子中,唯一的动作就是通过应用程序逻辑(代码清单3-1)传入相应值替代变量。不过,Smarty还能够完成大量的其他任务,例如执行表现逻辑和文本格式等。assign(title, Smarty配置测试);$smarty-assign(content, Smarty配置成功);/获取并输出模板$smarty-display(index.tpl);?代码清单3-1 模板的应用程序逻辑$title $content 代码清单3-2简单的Smarty设计模板Smarty默认模板位于templates目录内,除非通过$template_dir修改了默认模板目录。输出的结果如图3-3所示图3-2 代码清单3-2的输出3.4 Smarty的表现逻辑3.4.1 注释注释包围在定界符 * 和 * 之间,可以包括一行或多行,如 * 注释 *。3.4.2 变量修饰符变量修饰符的语法,如 $var(变量名)|modifier(修饰符)。表3-1列出几个比较常用的修饰符。修饰符作用例子capitalize首字母大写$var|capitalizecount_words单词计数$var|count_wordsdate_format格式化日期$var|date_format:”%B %e, %Y”default赋默认值$var|default:”默认的值”strip_tags删除标记标签$var|strip_tagstruncate截取指定的字符串$var|truncate:10:”表3-1 Smarty变量修饰符3.4.3 控制结构l if函数与php语言中的if函数相同,下面是一个简单实例:if $var 5变量var大于5/ifl foreach函数foreach 与php中同名结构做法相同。假如 $arr = array(“tom”, “jim”, “mary”),然后我们要遍历输出数组中的每个元素,就如下:foreach $arr as $name$name/foreachl foreachelse函数foreachelse的作用是当数组为空时,可以生成某个候选输出,如:foreach $arr as $name$nameforeachelse空的/foreachl section函数是foreach的一种改进,会循环处理并输出数据数组,但其语法的差别很大。它提供了很多附加选项,可以更好的控制循环的执行,如表3-2。参数作用name确定节的名,可以任意loop设置循环的次数,应当设置为与数组变量同名start确定开始的位置step确定在数组中移动的步常值max确定循环的最大次数show确定是否显示此节(调试时,可以设置为TRUE)示例,假如数组$arr = array(“tom”, “jim”, “mary”), 然后我们要遍历输出数组中的每个元素section name=person loop=$arr$arrperson/sectionl sectionelse函数sectionelse的作用是当数组为空时,可以生成某个候选输出,如:section name=person loop=$arr$arrpersonsectionelse空的/section3.5 Smarty缓存数据密集型应用程序一般都有很大的开销,通常是数据获取和处理操作带来的。对于Web应用程序,这个问题是由HTTTP协议的无状态性造成的。由于HTTP协议是无状态的,对于每个页面请求都要重复地执行相同的操作,而不论数据是否已改变。这样Web服务器的运行效率就很低。对此有一种特别有效的解决方案,这也是最合理的方案之一:将动态页面转化为静态页面,只有在页面内容有改变之后才重新构建,或者定期重新构建。Smarty也提供了这样一个特性,一般称为页面缓存(page caching)。3.5.1 Smarty的缓存配置caching = true; $smarty-cache_lifetime = 60;?用$smarty-caching = true; 语句启动缓存后,调用display()和fetch()方法是就会在指定模板缓存路径(由$cache_dir属性指定)中保存目标模板的内容。然后用$smarty-cache_lifetime = 60; 设置缓存的生命周期,这里设置了60秒。当访问时间是在60秒之内的,只要不改变模板文件,缓存将不会改变。如图3-3是缓存后的文件:图3-3 缓存后的文件缓存后的文件相当于静态页,变量已经通过逻辑层的运算替换成了实际要显示的内容。所以在缓存生命周期内,重新去访问该页面时,就大大减少了逻辑层的开销。4. Javascript+CSS4.1 Javascript在网页设计中的应用JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用,从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷。JavaScript的出现使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一种实时的、动态的、可交式的表达能力。从而基于CGI静态的HTML页面将被可提供动态实时信息,并对客户操作进行反应的Web页面的取代。JavaScript脚本正是满足这种需求而产生的语言。它深受广泛用户的喜爱。它是众多脚本语言中较为优秀的一种,与WWW的结合有效地实现了网络计算和网络计算机的蓝图。Javascript在网站中的应用实例:下面代码清单4-1是网站首页军事图库的轮播的一段Javascript代码var speed=30/速度数值越大速度越慢var colee_right2=document.getElementById(colee_right2);var colee_right1=document.getElementById(colee_right1);var colee_right=document.getElementById(colee_right);colee_right2.innerHTML=colee_right1.innerHTMLfunction Marquee4()if(colee_right.scrollLeft=0)colee_right.scrollLeft+=colee_right2.offsetWidthelsecolee_right.scrollLeft-var MyMar4=setInterval(Marquee4,speed)colee_right.onmouseover=function()clearInterval(MyMar4)colee_right.onmouseout=function()MyMar4=setInterval(Marquee4,speed)清单4-1显示效果如图4-1图4-1首页图片滚动4.2CSS与HTML的结合设计网页4.2.1 什么是CSSCSS是一种样式表(stylesheet)技术。也有的人称之为层叠样式表(Cascading Stylesheet)。它的作用简单的说:就是可以使你在同一页面里使用不同的超链接样式。用CSS仅仅改变一个文件就可以改变数百个网页的外观,个性化的表现而不损.这些都因为网页样式表的强大和灵活特性。4.2.2 CSS与HTML的结合方式一个外部的样式表可以通过HTML的LINK元素连接到HTML文档中,如:,标记是放置在文档的head部分。可选的type属性用于指定媒体类型-text/css是一个层叠样式表-允许浏览器忽略它们不支持的样式表类型。为CSS文件配置服务器而将text/css当作Content-type内容发送出去也是一个好注意。外部样式表不能含有任何像或这样的HTML的标记。样式表仅仅由样式规则或声明组成。rel属性用于定义连接的文件和HTML文档之间的关系。rel=”stylesheet”指定一个固定或首选的样式而rel=Alternate StyleSheet定义一个交互样式。固定样式在样式表激活时总被应用。当样式被应用到很多的网页时,一个外部样式表是理想的。网页制作者使用外部样式表可以改变整个网站的外观而仅仅通过改变一个文件。同样的,大多数浏览器会保存外部样式表在缓冲区,从而如果样式表在缓冲区就避免了在展示网页时的延迟。4.2.3 CSS在网站中的应用实例在网站中的页面,增加了一下的定义,使页面有特殊的显示效果。* font-size: 12px;html padding:0px; margin:0px;body font-size:12px; font-family:Verdana, Arial, SunSans-Regular, Sans-Serif; a:link color: #0000FF; text-decoration:underline;a:visited color: #800080; text-decoration:underline;a:hover color: #FF0000; text-decoration:underline;a:active color: #FF0000; text-decoration:underline;h1, h2, h3, h4, h5, h6, form, div, p, i, img, ul, li, ol, table, tr, td, fieldset, label, legend margin:0; padding:0;在这个样式表中设置了:html padding:0px; margin:0px; 和h1, h2, h3, h4, h5, h6, form, div, p, i, img, ul, li, ol, table, tr, td, fieldset, label, legend margin:0; padding:0;定义了各个标签的默认值为0, 这又有效的避免了不同浏览器对标签设置了不同的默认值,从而解决了一个CSS hack,因此,这也是每个网站的在写CSS样式中必须注意到的一个问题。而a:link color: #0000FF; text-decoration:underline;a:visited color: #800080; text-decoration:underline;a:hover color: #FF0000; text-decoration:underline;a:active color: #FF0000; text-decoration:underline;,定义了未访问的链接,已访问的链接,鼠标悬停在链接上,被选择的链接的样式。通过设置不同的颜色,达到了不同的显示效果。5. WEB的安全性安全对于每一个WEB程序软件开发来说都是关键的部分,由于时间和投入不充分,软件的安全性经常会别忽略,实现的也不充分,从而使得软件不够健壮和安全。所以在开发过程中,我们有必要对数据进行一定的处理,达到数据的安全。5.1 防止SQL注入SQL注入是大家都所熟知的一种WEB攻击方法,而且都基本了解如何去防止。它总是从某种形式的用户输入开始,通过表单,查询字符串(或者是使用重写规则传递给查询字符串的数据),或者是上传的文件等,每一种可以接受用户输入的地方(直接或间接)。然后将数据传入数据库中执行,这就必然受到恶意用户的攻击。例如:1. 用户通过表单以POST方法提交了”var”参数都后台2. 后台用$var = $_POSTvar;语句来获取传递过来的值。3. 执行$query = mysql_query(“SELECT * FROM table WHERE var=$var”); 语句来获取结果集。当用户输入合法的值时,就能查询出所期望的数据。但当恶意用户通过构造”var”参数的值来查询一些我们不想给他看到的数据时,就造成了数据的泄漏。例如:恶意用户提交的值是“1 OR TRUE”,这时,SQL语句就变成了”SELECT * FROM table WHERE var=1 OR TRUE”,相当于检索出了整个表的数据,从而是数据的安全得不到保障。所以,在整个程序的执行工程中,我们都不能相信用户输入的数据,应该对用户输入的数据进行有效的过滤。而PHP本身就提供了addslashes()函数在指定的预定义字符前添加反斜杠。默认情况下,PHP 指令 magic_quotes_gpc 为 on,会对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。5.2 防止跨站脚本攻

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论