网站地图
hnsjyk999.com
三九百科 包罗万象
PHP(计算机编程语言) 发布于:

PHP(Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。

PHP脚本程序主要应用于Web服务端开发,命令行和编写桌面应用程序。PHP支持和所有web开发语言之间的WDDX复杂数据交换。关于相互连接,PHP 已经支持了对 Java对象的即时连接,并且可以透明地将其用作PHP对象。

PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。自20世纪90年代国内互联网开始发展到现在,宙捉桨台互联网信息几乎覆盖了我们日常活动所有知识范畴,并逐渐成为我们生活、学习、工作中必不可少的一部分。据统计,从2003 年开始,我国的网页规模基本保持了翻番的增长速度,并且呈上升趋势。PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。但随着互联网的不断更新换代,PHP语言也出现了不少问题。

根据动态网站要求,PHP语言作为一种语言程序,其专用性逐渐在应用过程中显现,其技术水平的优劣与否将直接影响网站的运行效率。其特点是具有公开的源代码, 在程序设计上与通用型语言,如C语言相似性较高,因此在操作过程中简单易懂,可操作性强。同时,PHP语言具有较高的数据传送处理水平和输出水平,可以广泛应用在Windows系统及各类Web服务器中。如果数据量较大,PHP语言还可以拓宽链接面,与各种数据库相连,缓解数据存储、检索及维护压力。随着技术的发展,PHP 语言搜索引擎还可以量体裁衣,实行个性化服务,如根据客户的喜好进行分类收集储存,极大提高了数据运行效率。

(一)开源性和免费性

由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己更改PHP的解释程序。另外,PHP 运行环境的使用也是免费的。

(二)快捷性

PHP是一种非常容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址操作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它操作编辑非常简单,实用性很强。

(三)数据库连接的广泛性

PHP可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。

(四)面向过程和面向对象并用

在PHP语言的使用中,可以分别使用迎堡笑面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用,这是其它很多编程语言做不到的。

(一)流行,容易上手

PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PHP。PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。

(二)开发职位很多

在服务器端的网站编程中PHP会更容易帮助你找到工作。很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。

(三)仍然在不断发展

PHP在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架。版本是7之后剃乐糠,一直在提供更高性能的应用。

(四)可植入兆燥性糠故享强

PHP 语言在补丁漏洞升级过程中,核心部分植入简单易行,且速度快。

(五)拓展性强

PHP 语言在数据库应用过程中,可以从数据库调取各类数据,执行效率高。

(一)PHP的解释运行机制

在 PHP 中,所有的变量都是页面级的,无论是全局变量, 还是类的静态成员,都会在页面执行完毕后被清空。

(二)设计缺陷,缺少关注PHP被称作是不透明的语言,因为没有堆栈追踪,各种脆弱的输入。没有一个明确的设计哲学。早期的PHP受到Perl的影响,带有out参数的标准库又是有C语言引入,面向对象的部分又是从 C++和Java学来的。

(三)对递归的不良支持

PHP并不擅长递归。它能容忍的递归函数的数量限制和其他语言比起来明显少。

(一)CodeIgniter的优点

1. 配置简单,全部的配置使用 PHP脚本来配置,执行效率高;具有基本的路由功能,能够进行一定程度的路由;具有初步的Layout功能,能够制作虹试欢一定程度的界面外观;数据库层封装的不错,具有基本的MVC功能。

2. 快速简洁,代码不多,执行性能高,PHP框架简单, 容易上手,学习成本低,文档详细;自带了很多简单好用的library,框架适合小型应用。

(二)CodeIgniter 缺点

1. 把Model层简单的理解为数据库操作。

2. PHP 框架略显简单,只能够满足小型应用,略微不太埋腊犁民能够满足中型应用需要。

(三)CakePHP 的优点

1. CakePHP 是最类似于RoR的 PHP 框架,包括设计方式,数据库操作的Active Record方式;设计层面很优雅,没有自带多余的 library,所有的功能都是纯粹的框架,执行效率还不错;数据库层的hasOne,hasMany 功能很强大,对于复杂业务处理比较合适;路由功能,配置功能还不错;自动构建脚手架(scaffold)很强大;适合中型应用;基本实现过了MVC每一层; 具有自动操作命令行脚本功能。

2. 文档比较全,在国内推广的比较成功,大部分人都知道CakePHP,学习成本中等。

(四)CakePHP 的缺点

1. CakePHP非常严重的问题是把Model理解为数据库层操作,严重影响了除了数据库之外的操作能力

2. CakePHP的cache功能略显薄弱,配置功能稍嫌弱;CakePHP不适合大型应用,只适合中型应用,小型应用来说略微的学习成本高了点。

加密不同于密码,加密是一个动作或者过程,其目的就是将一段明文信息(人类或机器可以直接读懂的信息)变为一段看上去没有任何意义的字符,必须通过事先约定的解密规则才能将信息转换回有意义的可读信息,通过加密可以防止非授权的信息窃取。

PHP的加密函数有crypt()、 md5() 和sha1() 这3种, 其中crypt() 用于单向加密, 所谓的单向加密就是将需要加密的内容进行加密之后, 无法将密文转换成为可读的内容, 因此单向加密的应用范围较狭窄, 一般用于用户名认证和密码输入等情况; 当用户进入系统时,只需要将密文口令输 入,经过系统验证与存储的口令一致, 即可通过。

md5()和sha1()属于哈希算法,它是不可逆的一种算法,通过截取任意一段的初始信息,将其进行转换,所得到的内容就是哈希值,且长度固定。 这样即使信息丢失, 对哈希值进行分析也是无意义的,因为它与原来的信息并无直接联系, 因此具备较强的加密功能。md5() 使用了MD5散列算法, 将一个长度不固定的信息转换为128位的信息摘要。

sha1() 函数使用了SHA-1的散列算法,其原理与md5() 类似。md5() 和sha1() 经常用于验证信息的完整性, 即通过计算文件的哈希值来验证文件是否被修改,因此在PHP中还需要两个函数来对哈希值进行计算, md5_file() 和sha1_file(), 一旦发现计算出的哈希值与原始值不同,就可以判断文件遭到了修改。这3种函数虽然操作简单,但是都是不可逆的, 无法对密文进行解读;但是在更高层次的加密工作中,这些简单的加密函数的加密效果就显得有些捉襟见肘了。

加密总是与安全密不可分,而每个PHPer都必须将应用安全作为必要的设计思路融入代码中,以下是一些最佳实践的建议。

不要再使用MD5,不要使用sha1,基本上已经没有破解难度了。请使用 password_hash来哈希密码(php 版本大于等于5.5,小于 5.5 请使用 password_compat 库),由于 password_hash函数已帮你处理好了加盐,而且作为盐的随机字串已通过加密算法成为了哈希的一部分,password_verify()函数会自动将盐从哈希中提取出来,所以你无需考虑盐的存储问题。

通信接口的签名,请使用非对称算法对签名秘钥进行加密, 并对秘钥设置有效期,定期更换。

PHP作为服务器端的脚本语言,其跨平台性以及丰富的函数库成为网站开发的主流语言,而作为网站必不可少的数据库,轻量、开源、性能优良、简单易用的MySQL得到各个中小型企业的青睐。所以,PHP访问数据库技术就成为网站开发的一项基本且重要的工作。基于不同的环境、不同的工具,可以使用不同的MySQL数据库的访问方法。

1. 面向对象的方法

1.1 mysqli

通过MySQLi构造方法实例化一个MySQL连接对象,相当于建立了一个连接,后续代码完全使用面向对象的方法,使用该对象的成员函数操作MySQL数据库。

1.2 PDO连接MySQL数据库

PDO是基于数据库抽象层的一种访问方法,基于不同的数据库的驱动运行不同的链接库进行数据库访问。同样适用面向对象的方法,创建PDO对象进行连接。

1.3 ADODB连接MySQL数据库

ADODB同样是数据库抽象类。ADODB的数据库提供了共通的应用程序和所有支持的数据库连接,ADODB提供了很 比较实用的方法,使它超越了一个抽象层的功能。

2. 面向过程的方法

面向过程的方法是PHP连接数据库最基本的方法,使用较为简单。其灵活性较差,在大型项目的开发中一般较少使用。 该设计提供了一个面向过程的接口,并且是针对MySQL4.1.3或更早版本设计的 。 因此 ,虽然也可 以与MySQL4.1.3或更新的数据库服务端进行交互,但并不支持后期MySQL服务端提供的一些特性。由于比较古老,安全性差,所以现在被后来的MySQLi取代。

今天,网络技术正以突飞猛进的速度发展,而企业也要与时俱进,只有高度重视并充分利用网络技术,才能在实际运行过程中,让网络成为企业发展的助力。PHP语言作为网站开发的通用语言,简单易行,可移植性好,应用空间广泛,逐渐受到网站开发人员的欢迎。因此,在行业网站建设过程中,具有良好的应用前景。

与其他常用语言相比, PHP语言优势明显。较好的可移植性、可靠性以及较高的运行效率使 PHP 语言在当下行业网站建设中独占鳌头。利用 PHP 语言进行行业网站设计,能够实现数据库的实时性更新,网站的日常维护和管理简单易行,进而提高用户的使用效率。

PHP语言应用过程中,要求开发人员熟悉该语言,特别是软件版本、特性等诸多环节,否则容易造成冲突,使配置问题难以处理。因此,在网站开发设计过程中,应避免单独进行环境搭配。

对于非常小的项目,PHP是一个十分符合人意的编程语言。 但是对于较大的和更为复杂的项目,PHP 就显出它的薄弱了。所以,针对PHP暴露出的一系列缺点问题,我们应当不断地摸索之后,然后找到某些问题的解决方案。一个开源的语言十分流行是一件好事。希望所有的问题能有一天得到解决,然后我们就将拥有一个开源语言,它既开源,又好用。

版本

发布日期

最终支持

相关更新及备注

1.0

1995-06-08

--

首次使用

2.0

1996-04-16

--

针对PHP 1.0的改进版,速度更快、体积更小,更容易产生动态网页。

3.0

1998-06-06

2000-10-20

Zeev Suraski和Andi Gutmans重写了底层

4.0

2000-05-22

2001-06-23

增加了Zend引擎

4.1

2001-12-10

2002-03-12

加入了superglobal(超全局的概念,即$_GET、$_POST等)

4.2

2002-04-22

2002-09-06

默认禁用register_globals

4.3

2002-12-27

2005-03-31

引入了命令行界面CLI用来不用CGI

4.4

2005-07-11

2008-08-08

修复了一些致命错误

5.0

2004-07-13

2005-09-05

ZendⅡ引擎

5.1

2005-11-24

2006-08-24

引入了编译器来提高性能、增加了PDO作为访问数据库的接口

5.2

2006-11-02

2011-01-06

默认启用过滤器扩展

5.3

2009-06-30

2014-08-14

支持命名空间;使用XMLReader和XMLWriter增强XML支持;支持SOAP ,延迟静态绑定,跳转标签(有限的goto), 闭包,Native PHP archives。

5.4

2012-03-01

2015-09-03

支持Trait、简短数组表达式。移除了register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister(), magic_quotes以及session_is_registered()。加入了内建的Web服务器。增强了性能,减小内存使用量。

5.5

2013-06-20

2016-07-10

支持generators,用于异常处理的finally ,将OpCache(基于 Zend Optimizer+)加入官方发布中。

5.6

2014-08-28

2018-12-31

常数标量表达式、可变参数函数、参数拆包、新的求幂运算符、函数和常量的use语句的扩展、新的phpdbg调试器作为SAPI模块,以及其他更小的改进

6.x

未发布

--

取消掉的、从未正式发布的PHP版本。

7.0

2015-12-03

2018-12-03

Zend Engine 3 (性能提升并在Windows上支持 64-bit 整数),统一的变量语法, 基于抽象语法树编译过程。

7.1

2016-12-01

2019-12-01

void返回值类型,类常量,可见性修饰符

7.2

2017-11-30

2020-11-30

对象参数和返回类型提示、抽象方法重写等

7.3

2018-12-06

2021-12-06

PCRE2支持等

7.4

2019-11-28

2022-11-28

改进OpenSSL、弱引用等

8.0

2020年 S4

2021年 S1

2023年 S4

2024年 S1

JIT、数组负索引等


相关文章推荐:
超文本 | 预处理器 | 服务器 | 脚本语言 | HTML | C | Java | Perl | 动态网页 | 脚本程序 | 桌面应用程序 | 数据交换 | Windows | Linux | Unix | macOS | 网站开发 | 数据传送 | Windows | Web服务 | 搜索引擎 | 解释器 | 面向对象 | MySQL | ODBC | Oracle | PHPLIB | 服务器端 | 框架 | 补丁 | 变量 | 全局变量 | | 静态成员 | 堆栈 | C++ | Java | 递归函数 | 脚本 | Layout | MVC | RoR | 路由 | MVC | cache | 加密 | 明文 | 哈希算法 | 哈希值 | MD5 | SHA-1 | MD5 | sha1 | 哈希密码 | 非对称算法 | 秘钥 | MySQL | MySQLi | PDO | ADODB | 服务端 |