PHP中的WEB开发技术

上传人:jin****ng 文档编号:174566109 上传时间:2022-12-15 格式:DOCX 页数:18 大小:323.94KB
返回 下载 相关 举报
PHP中的WEB开发技术_第1页
第1页 / 共18页
PHP中的WEB开发技术_第2页
第2页 / 共18页
PHP中的WEB开发技术_第3页
第3页 / 共18页
点击查看更多>>
资源描述
PHP的WEB开发技术摘要World Wide Web(简称Web)是随着Internet的普及使用而发展起来的一门技术,它能 把文本、图像、声音、动画、视像等多种媒体信息集于一体,而且使信息的浏览更为方便, 因此许多企业纷纷建设自己的网站以增强企业知名度.PHP是一种跨平台的服务器语言,它的易用性,使得它得到了很多Web开发者的亲睐。 本篇论文是对基于PHP语言的Web开发技术的一点论述,主要论述了 PHP、MYSQL、开源框 架、数据库的缓存技术在Web开发过程中用处,以及在过程中所遇到的要点、难点等。关键字:PHP、MYSQL、Smarty、JavascriptAbstractWorld 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, thispaper discussesmainlythe 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 MERGE 32.1.5 ARCHIVE 32.1.6 CSV 32.2 数据类型和属性 32.3 管理员数据表实例设计 33. Smarty 模板引擎 53.1 Smarty 的介绍 53.1.1 Smarty 的优点 53.1.2 Smarty 模板引擎运作流程 63.2 Smarty 的配置 63.3 使用 Smarty 73.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 防止跨站脚本攻击 15绪论Web技术的发展Internet起源于20世纪60年代末、70年代初,起初Web上的网页都 是单纯的HTML静态页面,大量的HTML文件使得Web信息的管理、更新、查询变得越来越 低效,随着Web上信息量的不断增加,对Web表现形式和开发技术提出了更高的要求。为更 有效的管理和维护网上的庞大信息资源 , 人们最初使用与数据库连接的 CGI(Common Gat eway In terface公共网关接口)技术作为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 StudioZendStudio是业界公认的所有商业以及开源产品中功能最强大的PHP IDE (集成开发 环境)。作为Zend技术有限公司所推出的旗舰产品,Zend Studio提供了你所能想到的企 业级IDE的所有特性,包括完善的代码自动完成功能、CVS和Subversion集成、内部和远 程测试、代码调整以及方便的代码部署过程。另外,Zend Studio提供了将代码与流行数据库(如MySQL、Oracle和SQLite)集成 的功能,还能够执行SQL查询,并查看和管理数据库模式与数据。1. 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会自动使用动态MylSAM格式。压缩:如果表在整个应用程序生命周期中都只读的,用压缩表来减少所占空间。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) 管理员信息表(jq_admin)用来保存管理员的信息,该数据表结构如图2-2闵 服务器:localhost 卜 醇 勅据库:junqing 卜111jq_admin5鈔QL /攫索拳插入箱导出薦导入血清空園刪除宇段类型整理禹性默认動卜idint(10)UNSIGNED否无HXEnusertypefloatUNSIGNED是0nXHEnuseridchar(30)gtik_c?Linese_ci否mXEpwdchar(32)gbk_ c?Line se_ci否nXEnunajiiechar(20)gbk_c?Lii_Lese_ci否薦XE超ntnamechar(30)gbk_chinese_ci否XEnemailchar(30)gbk_ c?Line se_ci否HX商园otypeidtextgbk_c?Lii_Lese_ci是肌覧nXE超nlogint imemt (10)UNSIGNED否0nXESnloginipvarcliar (20)gbk_ c?Line se_ci否nXHE_全选/全不选 选申釀:HX E国 1图 2-2 管理员信息表结构(3) 如图2-3可以看出表的存储引擎为MylSAM图 2-3 jq_admin 数据库表的属性2. 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页,当设定Smar ty的cache属性为true时,在Smar ty设定的cache time 期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的 HTML文件。4. 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便 的对模板进行格式重排。3.1.2 Smarty 模板引擎运作流程Smar ty模板引擎一方面读取模板文件中的页面样式,一方面读取PHP程序并进行编译, 然后结合模板文件和PHP程序并进行编译,得到编译后的PHP文件,最后在浏览器上将页 面输出。当用户再次访问该文件时,Smarty模板会检查编译文件是否存在,如果不存在的 话,就重新进行编译;如果存在,就直接运行这个文件。如图 3-1:图 3-1 Smarty 模板引擎运作示意图3.2 Smarty 配置安装 Smarty 非常简单。首先,到 下载最新的稳定版本。将 Smarty 加压缩到Web文档根目录的某个位置。然后创建存储Smarty模板和配置文件的4个目录。 templates放置所有网站模板。 configs放置在特定网站中使用的所有特殊的Smarty配置文件。 templates_c放置Smarty编译的所有模板(对于WEB服务器必须是可写的)。 cache在启用缓存特性的情况下,放置smarty缓存的所有模板(对于WEB服务器必须是可写的)。在默认情况下, Smarty 认为这些目录与实例化 Smarty 类的脚本位于相同的目录。我 们也可以使用 Smarty 的$七emolate_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 所示总 C? A * T localhost/Smarty/母收鬆 C开源中国 7 WEBtfW y Ext中丈网 ExtlE Web应用扇 C用茁F游戏框架汗”Smart yE,B.成功图 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 控制结构if 函数与php语言中的if函数相同,下面是一个简单实例:if $var 5p变量var大于5/p/if foreach 函数foreach 与 php 中同名结构做法相同。假如 $arr = array(“tom”, “jim”,“mary”),然后我们要遍历输出数组中的每个元素,就如下:foreach $arr as $name$namebr /foreach foreachelse 函数foreachelse 的作用是当数组为空时,可以生成某个候选输出,如:foreach $arr as $name$namebr /foreachelse空的/foreach section 函数是foreach的一种改进,会循环处理并输出数据数组,但其语法的差别很大。它提供了很多附加选项,可以更好的控制循环的执行,如表3-2。参数作用name确定节的名,可以任意loop设置循环的次数,应当设置为与数组变量冋名start确定开始的位置step确定在数组中移动的步常值max确定循环的最大次数show确定是否显示此节(调试时,可以设置为TRUE)示例,假如数组$arr = array( “tom” , “jim” , “mary”),然后我们要遍历 输出数组中的每个元素section name=person loop=$arr$arrperson/sectionsectionelse 函数sectionelse 的作用是当数组为空时,可以生成某个候选输出,如:section name=person loop=$arr$arrpersonsectionelse 空的/pbr /section3.5 Smarty 缓存数据密集型应用程序一般都有很大的开销,通常是数据获取和处理操作带来的。对于 Web应用程序,这个问题是由HTTTP协议的无状态性造成的。由于HTTP协议是无状态的, 对于每个页面请求都要重复地执行相同的操作,而不论数据是否已改变。这样Web服务器 的运行效率就很低。对此有一种特别有效的解决方案,这也是最合理的方案之一:将动态 页面转化为静态页面,只有在页面内容有改变之后才重新构建,或者定期重新构建。 Smarty 也提供了这样一个特性,一般称为页面缓存(page caching)。3.5.1 Smarty 的缓存配置?phprequire(“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 是缓存后的文件:1 I 斗=array (590093ad09988b466f409al871733c5589014713e=:= array (-0 = 1 templa tes/index. tp I :1 = 1335284092,2 = Ffile10 11 12 nocache_hash = l64264f96b66el80d07-23569185lJ11cachtlifetim# = 200,1-rhas_no匚日匚he_= fBlse,15 ); /*/SrTiartyHeaderCode%:,i/?16 = 17 Smarty 配蛊测试 18 = 19 =二Smarty配墨成功21Z Z ZI I /htmlx?php 图 3-3 缓存后的文件缓存后的文件相当于静态页,变量已经通过逻辑层的运算替换成了实际要显示的内容。所以在缓存生命周期内,重新去访问该页面时,就大大减少了逻辑层的开销。3. 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.innerHTML function 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俄T-50战机发动机喷火I 4军事图库歼-8民航机场起飞齢g-22M3fI炸机最新囹30生产线內部照俄系美系战机对抗演练驻阿法军的虎式直升机图 4-1 首页图片滚动4.2 CSS与HTML的结合设计网页4.2.1 什么是 CSSCSS是一种样式表(stylesheet)技术。也有的人称之为层叠样式表(Cascading Stylesheet)。它的作用简单的说:就是可以使你在同一页面里使用不同的超链接样式。用 CSS 仅仅改变一个文件就可以改变数百个网页的外观,个性化的表现而不损.这些都因为网 页样式表的强大和灵活特性。4.2.2 CSS 与 HTML 的结合方式一个外部的样式表可以通过 HTML 的 LINK 元素连接到 HTML 文档中,如: link rel=StyleSheet herf二style.css type=text/css/,link标记是放置在文档的 head 部分。可选的 type 属性用于指定媒体类型-text/css 是一个层叠样式表-允许浏览器忽 略它们不支持的样式表类型。为CSS文件配置服务器而将tex t/css当作Con ten t-type内 容发送出去也是一个好注意。外部样式表不能含有任何像head或$七yle这样的HTML的标记。样式表仅仅由样式 规则或声明组成orel属性用于定义连接的文件和HTML文档之间的关系rel二”tylesheet” 指定一个固定或首选的样式而rel=AlternateStyleSheet定义一个交互样式。固定样式 在样式表激活时总被应用。当样式被应用到很多的网页时,一个外部样式表是理想的。网页制作者使用外部样式 表可以改变整个网站的外观而仅仅通过改变一个文件。同样的,大多数浏览器会保存外部 样式表在缓冲区,从而如果样式表在缓冲区就避免了在展示网页时的延迟。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, t able, tr, td, fieldse t, label, legend margin:。; padding:。;定义了 各个标签的默认值为 0, 这又有效的避免了不同浏览器对标签设置了不同的默认值,从而 解决了一个CSS hack,因此,这也是每个网站的在写CSS样式中必须注意到的一个问题。 而 a:link color: #0000FF; text-decoration:underline;a:visited color: #8。8。; text-decoration:underline; a:hover color: #FF。; text-decoration:underline;a:active color: #FF0000; text-decoration:underline;,定义了未访问的链接,已访 问的链接,鼠标悬停在链接上,被选择的链接的样式。通过设置不同的颜色,达到了不同 的显示效果。4. WEB 的安全性安全对于每一个WEB程序软件开发来说都是关键的部分,由于时间和投入不充分,软 件的安全性经常会别忽略,实现的也不充分,从而使得软件不够健壮和安全。所以在开发 过程中,我们有必要对数据进行一定的处理,达到数据的安全。5.1防止SQL注入SQL注入是大家都所熟知的一种WEB攻击方法,而且都基本了解如何去防止。它总是 从某种形式的用户输入开始,通过表单,查询字符串(或者是使用重写规则传递给查询字 符串的数据),或者是上传的文件等,每一种可以接受用户输入的地方(直接或间接)。然 后将数据传入数据库中执行,这就必然受到恶意用户的攻击。例如:1. 用户通过表单以POST方法提交了 ” var”参数都后台2. 后台用$var = $_POST var;语句来获取传递过来的值。3. 执行$query = mysql_query( “SELECT * FROM table WHERE var=$va” );语句来 获取结果集。当用户输入合法的值时,就能查询出所期望的数据。但当恶意用户通过构造” 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 防止跨站脚本攻击XSS攻击与SQL注入联系非常紧密。两者都是由于没有很好的防范用户输入而引起的。 SQL注入是当某个字段中包含了恶意的SQL代码时发生的,而XSS是当某个字段中包含了 恶意脚本时发生的。在PHP中使用htmlentities()编码所有的HTML,促使用户输入的任何HTML内容都会 被逐字地显示在输出页面中。但实际是允许部分HTML的(比如当输入是富文本时)。所以, 产生一种好的解决方案,代码如图5-1。图 5-1 过滤 HTML 标签代码这段代码中,第一个正则表达式替换了所有的脚本标签和其中的内容,第二个正则表 达式替换其他所有的标签,同时将内容保存在其中。下面进行一个示例: 输入:alert(hello); world 输出:world >XSS攻击最常见的用途之一就是通过javascript读取cookie,盗用用户的认证信息。 PHP的set cookies函数对这类XSS攻击提供了最后一级别保护。将改函数经常被忽略的最 后一个参数设置为httpOnly,这意味着无法用JavaScript读取cookie。但是不要也不能 完全依赖于这个选项,因为并不是所有的浏览器都支持。总结各种互联网的Web应用程序层出不穷。我们在进行项目开发时,用到的不仅仅局限于 一种技术。因此,对于一个网站的开发,可能用到了,数据库、Javascript、CSS等。这 就促使每个WEB开发者必须对这些技术都要有一点的了解,从而很好的利用这些技术,对 WEB应用程序进行开发,使WEB应用程序以一种更好的状态和速度运行。本论文就浅谈了 一些以PHP开发的WEB应用程序,在开发过程中经常用到的一些技术。比如:MySQL和PHP 的结合是现在许多最流行的网站使用率最高的。因此,在使用PHP进行WEB应用程序开发 时,就有必要对MySQL数据库进行一个深入的了解。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!