PHP
PHP(PHP:Hypertext Preprocessor)是一种在计算机上运行的脚本语言,主要是用途在于处理动态网页,也包含了命令行运行接口(command line interface),或者产生图形用户界面(GUI)程序。
PHP 最早由 Rasmus Lerdorf 在1995年发明,而现在PHP的标准由PHP Group和开放源代码社区维护。PHP 以 PHP License 作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不兼容。
PHP 的应用范围相当广泛,尤其是在网页程序的开发上。一般来说 PHP 大多运行在网页服务器上,通过运行PHP代码来产生用户浏览的网页。PHP 可以在多数的服务器和操作系统上运行,而且使用 PHP 完全是免费的。根据2007年4月的统计数据,PHP 已经被安装在超过2000万个网站和100万台服务器上。
开发历史
PHP 原本的简称为 Personal Home Page,是Rasmus Lerdorf 为了要维护个人网页,而用c语言开发的一些CGI工具程序集,来取代原先使用的 Perl 程序。最初这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。他将这些程序和一些窗体解释器集成起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。Rasmus Lerdorf 在1995年6月8日将 PHP/FI 公开释出,希望可以通过社区来加速程序开发与查找错误。这个释出的版本命名为 PHP 2,已经有今日 PHP 的一些雏型,像是类似 Perl 的变量命名方式、窗体处理功能、以及嵌入到 HTML 中运行的能力。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。
在1997年,任职于 Technion IIT 公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的解析器,成为 PHP 3 的基础,而 PHP 也在这个时候改称为PHP: Hypertext Preprocessor.。经过几个月测试,开发团队在1997年11月释出了 PHP/FI 2,随后就开始 PHP 3 的开放测试,最后在1998年6月正式释出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 释出后开始改写 PHP 的内核,这个在1999年释出的解析器称为 Zend Engine,他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。
在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式释出,2004年7月13日则释出了PHP 5,PHP 5则使用了第二代的Zend Engine。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个访问数据库的延伸库)、以及许多效能上的增强。目前PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。
2008年PHP 5成为了PHP唯一维护中的稳定版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化。
PHP 6 的开发也正在进行中,主要的改进有移除register_globals、magic quotes 和 Safe mode的功能。
应用
PHP 是一个应用范围很广的语言,特别是在网络程序开发方面。一般来说 PHP 大多在服务器端运行,通过运行 PHP 的代码来产生网页提供浏览器读取,此外也可以用来开发命令行脚本程序和用户端的GUI应用程序。PHP可以在许多的不同种的服务器、操作系统、平台上运行,也可以和许多数据库系统结合。使用 PHP 不需要任何费用,官方组织 PHP Group 提供了完整的程序源代码,允许用户修改、编译、扩充来使用。
语法
PHP的语法参考了Perl、C语言,而且可以集成在HTML之中,以下是一个简单的Hello World程序:
<?php echo 'Hello World!'; ?>PHP解析引擎只解析<?php到?>之间的代码,而不包含在<?php到?>之间的内容则会直接送出,所以可以用以下的方式来将PHP代码嵌入在HTML之中:
<?php //-PHP程式码 ?>html内容
<?php //-PHP程式码 ?>但是在判断语句中的HTML代码并不会被直接送出:
<?php if (false) { ?>HTML Code
<?php } ?>PHP可以用三种注解的形式:C与C++所使用的“/…/”与“//”,和Perl的“#”。
Active Server Pages
动态伺服器网页(Active Server Pages),由微软公司开发的伺服器端执行的指令码平台,它被Windows下Internet Information Services (IIS)的程式所管理。透过ActiveX server 的技术让不同的使用者能有不同的画面,或需要让他们可以存取伺服器 (server)上的资料时,使用ASP3.0中提供了五个内建的物件建立类比和安全性的动态内容,来协助程式设计师隐藏复杂的沟通机制,让程式设计师可以专注在解决问题和应用之上,这样可以更快速地开发动态网页的同时每一个零件都是可以由一组富有经验的程式设计师根据动态网页最常用的功能而独立开发。
五个零件包括:
[list]
[li]Application:在一个 ASP-based application 让不同使用者共享资讯。[/li]
[li]Request:从使用者处理取得资讯[/li]
[li]Response:将资讯送给使用者[/li]
[li]Server:提供一些 Web Server 的工具[/li]
[li]Session:储存在一个 session 内使用者的资讯[/li]
[/list]
ASP 的特色
ASP隐藏了网页伺服器与瀏览者之间沟通的烦琐机制的同时也基於script base的特性,网页撰写员可以专心撰写应用的程式的逻辑部份,再者ASP也像 HTML 般透过撰写程式来即时测试网页是否安全地执行,而不必担心程式和伺服器不能沟通的问题,另外因为那些 script 是於发送前於伺服器中先行转译处理成为HTML后再而发送至代理伺服器边的动态网页技术,不必担心瀏览器的支援性及,网页撰写员的程式逻辑像 client-side script 会被盗用,因此最终瀏览者只会是使用 HTML 来瀏览。
利用ASP程式最常用的是Cookies,它利用Session零件实作的。同时还可以利用第三方零件延伸ASP的作用,如利用MailSender零件发送电子邮件。
透过ASP我们可以结合HTML网页、ASP指令和ActiveX元件建立动态、互动且高效的WEB伺服器应用程式。同时,ASP也支援VBScript和JScript等指令码语言,预设为VBScript。其中JScript是微软公司的ECMAScript标準的实作,并且有自己的扩充套件。
物件的支援
ASP对 COM 的支援会允许撰写员使用 server component(或OLE Automation server)。透过它撰写员可以发展自已的物件,或将把程式转成 Web-base 的介面。
状态 (State) 的管理
状态管理是ASP的重要功能之一,原因为HTTP是一个stateless的协定,当有匿名的 request进入时,瀏览者无法辨认这些的request 是否安全,或那些request 之间的关连性时,便无法透过瀏览者取得资讯如帐户及密码等,对交易特性的 Web 应用程式造成了阻碍。因此ASP透过 cookie的包装和使用让瀏览者可以简单地管理眾多使用者名称的不同状态。
ASP 对的管理更是令人称讚,我们知道,HTTP 本身是一个 stateless 的协定,也就是说对於匿名的 request,你无法分辨这些 request 是属於谁的、或这些 request 之间的关连性,这对发展一个有交易特性的 Web 应用程式实在是个伤脑筋的问题。现在,ASP 透过 cookie 的包装和使用,让你可以简单的管理不同使用者的不同 state。
版本
ASP 目前最新的版本为 3.0,与 Windows 2000 一起发行,并内植於 IIS 5.0 中。
ASP 1.0 内含於 Windows NT 4.0 Service Pack 3 (IIS 3.0) 发行。
ASP 2.0 内含於 Windows NT 4.0 Option Pack,与 IIS 4.0 一起亮相。
自 ASP 3.0 发行后,除了各版本对它的安全性或问题修补外,对主要功能都没有再进一步的更新。 Windows Server 2003 发行的 ASP 也是 3.0 版本。
其后继者 ASP+(即 ASP.NET),已内含於 .NET Framework 中持续演化。
原理
ASP是经过伺服器解析之后再向网页瀏览器返回资料,所以有了ASP就不必担心客户的瀏览器是否能执行你所编写的代码。因为所有的程式都将在网页伺服器端执行,包括所有嵌在普通HTML中的指令码程式。当程式执行完毕后,伺服器仅将执行的结果返回给客户瀏览器,这样也就减轻了客户端瀏览器的负担,大大提高了互动的速度。
由於代码是需要经过伺服器执行之后才向瀏览器发送的,所以在客户端看到的只能是经过解析之后的资料,而无法获得原始码,故编写者不用担心自己的原始码会被别人剽窃。但不排除骇客利用系统漏洞窃取伺服器端的ASP原始码。
基於这样的解析方式,也导致执行ASP页面相对於普通的HTML页面要慢一点。因为普通的HTML页面只需要瀏览器就能够解析,而ASP则必须是伺服器将整页的代码都执行一遍之后再发送资料。
ASP提供与资料库的互动,如Microsoft SQL Server、Microsoft Access、MySQL和Oracle,比较流行的是ASP和Microsoft SQL Server的组合。