【php精品源码栏目提醒】:网学会员php精品源码为您提供PHP基础教程集锦 - 软件工程参考,解决您在PHP基础教程集锦 - 软件工程学习中工作中的难题,参考学习。
PHP 基础教程集锦!目录
PHP 中有一组图像函数
PHP 调用 Oracle 存储过程配置最新的
PHP 加 MYSQL 服务器
PHP 教程(四)
PHP 教程(三)
PHP 教程(二)
PHP 教程(一)
PHP 教程
PHP 应用教程
PHP 的功能概述
PHP 安装问题
PHP 入门什么是
PHP什么是 PHPPHP 是一种服务器端的,嵌入 HTML 的脚本语言。
PHP 区别其他像客户端
Javascript 的地方是它的代码在服务器端执行.
PHP 能做什么 最低水平
PHP 可以做任何其他 CGI 程序所能做的事例如收集表格数据生成动态页面内容或者收发cookies.可能最强大最有意义的特性是
PHP 支持大范围的数据库.书写一个支持数据库的 Web 页面是难以置信的简单. 下面是当前支持的数据库: Adabas D InterBase Solid dBase mSQL Sybase Empress MySQL Velocis FilePro Oracle Unix dbm Informix PostgreSQL
PHP 通过协议也支持与其他服务的quot交谈quot像 IMAP SNMP NNTP POP3 甚至是 HTTP. 你也可以打开晦涩的 网络接口和其他协议交互.
PHP 的简要历史 1994 年秋季 Rasmus Lerdorf 开始构思
PHP. 早期的非发行版本被用在他的主页上以追踪谁在看他的在线简历. 1995 年年初第一版本出台当时
PHP 只被认为是个人主页开发工具.它由一个非常单纯的只能理解很少数特殊宏的分析引擎和 一些用在主页后端通用的工具组成.如留言簿计数器和其他一些东西.这个分析器在 1995 年年中被重写并被命名为
PHP/FI 第二版. FI 来自 Rasmus 写的另外一个包 用于解释html 形式的数据.他结合了个人主页工具脚本和形式解析器并加 上 mSQL 支持.这样就产生
PHP/FI 了.
PHP/FI 以令人惊奇的步调成长人们开始把自己的代码贡献给它. 很难给出它的硬统计表但可以估计在 1996 年末整个世界至少有 15000 个网站在用
PHP/FI.到 1997年年中这个 数字已经超过 50000 了. 而在此时
PHP 的发展也发生了变化.由 Rasmus 自己偏爱的和几个人开发的项目变成一个更有组织的团 体成就.Zeev Suraski 和 Andi Gutmans 重写了解析器.这个新的解析器成为
PHP 版本 3 的基础.许多有用的代码从
PHP/FI 继承到
PHP3并且很多是完全重写的. 今天1999 年年中不管是
PHP/FI 或
PHP3 与很多商业产品捆绑在一块例如 C2 级强度的 Web 服务器和红帽子 Linux. 根据 NetCraft 提供的数据推断保守估计全世界应用
PHP 的网站已超过 150000 个.由此看来它比在因特网上运行 Netscape 的旗舰企业服务器的站点还多.
PHP 入门
PHP 是一种用于创建动态 WEB 页面的服务端脚本语言。
如同 ASP 和 ColdFusion,用户可以混合使用
PHP和 HTML 编写 WEB 页面,当访问者浏览到该页面时,服务端会首先对页面中的
PHP 命令进行处理,然后把处理后的结果连同 HTML 内容一起传送到访问端的浏览器。
但是与 ASP 或 ColdFusion 不同,
PHP 是一种
源代码开放程序,拥有很好的跨平台兼容性。
用户可以在 Windows NT 系统以及许多版本的 Unix 系统上运行
PHP,而且可以将
PHP 作为 Apache 服务器的内置模块或 CGI 程序运行。
除了能够精确的控制 WEB 页面的显示内容之外,用户还可以通过使用
PHP 发送 HTTP 报头。
用户可以通过
PHP 设置 cookies,管理用户身份识别,并对用户浏览页面进行重定向。
PHP 具有非常强大的数据库支持功能,能够访问几乎目前所有较为流行的数据库系统。
此外,
PHP 可以与多个外接库集成,为用户提供更多的实用功能,如生成 PDF 文件等。
用户可以直接在 WEB 页面中输入
PHP 命令代码,因而不需要任何特殊的开发环境。
在 WEB 页面中,所有
PHP 代 码 都 被 放 置 在 “ ltphp ” 和 “ gt ” 中 。
此 外 , 用 户 还 可 以 选 择 使 用 诸 如 ltSCRIPTLANGUAGEquotphpquotgtlt/SCRIPTgt等的形式。
PHP 引擎会自动识别并处理页面中所有位于
PHP 定界符之间的代码。
PHP 脚本语言的语法结构与 C 语言和 Perl 语言的语法风格非常相似。
用户在使用变量前不需要对变量进行声明。
使用
PHP 创建数组的过程也非常简单。
PHP 还具有基本的面向对象组件功能,可以极大的方便用户有效组织和封装自己编写的代码。
PHP 语法概述A. 基本语法即使初次接触
PHP 的用户也会发现自己对
PHP 的语法风格并不陌生。
例如:lt?phpecho “Hello!; ”?gt ”显示结果为“Hello!。
PHP 中,所有的变量都以标识“”开头。
我们可以对上述代码做如下改动:lt?phpgreeting “Hello!; ”echo greeting;?gt改变后的代码显示结果不变。
PHP 中使用“.”符号连接不同的字符串,而其它的算术运算符则继承了流行编程语言的风格。
举例如下:lt?phpgreeting “Hello!; ”num 3 2;num;echo “greeting num people!; ”?gt显示结果为“Hello!6 people!。
”
PHP 对各种运算符及运算规则都有一套完整的规定,如果用户具有 C 或 C语言的编程背景的话,可以发现一切都得心应手。
与 Perl 语言一样,在
PHP 中,如果在双引号包含的字符串中含有变量的话,该变量将用相应的变量值替换;如果字符串被单引号包含,则不做替换。
例如:lt?phpname ‘PETER’;greeting_1 “Hello name!; ”greeting_2 ‘Hello name!; ’echo “greeting_1n”;echo “greeting_2n”;?gt显示结果为:Hello PETER!Hello name!(注:上述代码中的“n”为换行符,只能在双引号字符串下使用)B. 变量
PHP 允许用户象使用常规变量一样使用环境变量。
lt?phpecho “REQUEST_URI”;?gt则输出结果为/scores/index.htmlC. 数组用户在使用
PHP 创建数组时,可以把数组索引(包括常规索引或关联索引)加入方括号中。
例如:fruit0 ‘banana’fruit1 ‘apple’favorites animal ‘tiger’favorites sports ‘basketball’ 如果用户在向数组赋值时不指明数组下标,
PHP 将自动把该对象加入到数组末尾。
例如对于上述fruit数组可以用以下方式赋值而保持结果不变,fruit ‘banana’fruit ‘apple’同样,在
PHP 中,用户还可以根据需要建立多维数组。
例如:people‘David’‘shirt’ ‘blue’people‘David’‘car’ ‘red’people‘Adam’‘shirt’ ‘white’people‘Adam’‘car’ ‘silver’在
PHP 中,用户还可以使用 array函数快速建立数组。
例如:fruit array‘banana’‘apple’favorPHP 安装问题1. Unix/Windows: 我的
php.ini 文件应该放在哪?UNIX 下默认它应该放在 /usr/local/lib 目录下。
这是它的 ltinstall-pathgt/lib. 很多人会在编译时改变它,使用--with-config-file-path 标志。
例如 你可以这样设它: --with-config-file-path/etc然后你可以复制源程序包里的
php.ini-dist 到 /etc/
php.ini ,编辑它满足你的本地化需求。
Windows 下
php.ini 默认的路径是 Windows 系统目录. 如果你在使用 Apache webserver
php.ini 则最先在 Apaches 安装目录下被查找 例如: c:program filesapache groupapache. 这样你可以有不同的
php.ini 对应不同版本的 Apache(同一台机器上)。
更多细节请查阅 configuration file.2. Unix: 我安装了
PHP 但我每次加载一个
文档 会得到下面的消息: Document Contains No Data 怎么回事这可能是因为你的
PHP 发生了 core-dumping 错误。
查找你的服务器错误日志文件,看看是否属于这种情况。
然后报告这个错误。
如果你知道怎样使用 gdb 你可以提供一个 backtrace 在你的错误
报告里。
这将会对开发人员解决 这个问题有很大帮助。
如果你是在将
PHP 作为 Apache 模块使用,那么请按下面的步骤做:停止 httpd 进程gdb httpd停止 httpd 进程gt run -X -f /path/to/httpd.conf浏览你刚才出错的 URLgt run -X -f /path/to/httpd.conf如果你还有 core dump gdb 现在会通知你打入: bt在你的 bug report 里应该包含 backtrace 。
这些会被发往 http://bugs.
php.net/如果你的脚本使用了正则表达式函数 ereg and friends 你应该确保你编译
PHP 和 Apache 用的是同一个正则表达式包。
在
PHP 和 Apache 1.3.x 这个过程是自动进行的。
3. Unix: 我使用 RPMS 安装
PHP 但 Apache 不支持
PHP 页面 怎么办假设你安装了 Apache 和
PHP(从 RPM ) 你需要反注释或者增加一些行在你的 http.conf 文件里: Extra ModulesAddModule mod_
php.cAddModule mod_
php3.cAddModule mod_perl.c ExtraModulesLoadModule
php_module modules/mod_
php.soLoadModule
php3_module modules/libphp3.so /for
PHP 3 /LoadModule
php4_module modules/libphp4.so / for
PHP 4 /LoadModule perl_modulemodules/libperl.soAnd add: AddType application/x-httpd-
php3 .
php3 / for
PHP 3 /AddType application/x-httpd-
php .
php/ for
PHP 4 /... 到全局域里 或者到你想要的 支持
PHP 的虚拟域里。
4. 我使用 RPMS 安装
PHP 3 但是它没有我需要的数据库选项支持 我该怎么办因为
PHP 3 内建支持的关系 编译一个完整的可适于所有应用的
PHP RPM 是相当困难的。
在
PHP 4 有谈到这点。
对
PHP 3 我们只好建议你使用 INSTALL.REDHAT (在
PHP 包里)描述的机制。
如果你一定要使用 RPM 版的
PHP 3 读...RPM 包管理器设置 RPMS 简单的安装,不带数据库支持 and 因为 RPMS 使用 /usr/ 而不是标准的/usr/local/ 目录存放文件. 你需要告诉 RPM 文件你要支持哪种数据库以及它们的最上级目录的位置。
下面的例子将解释在 Apache 模式下怎样支持通行的数据库 Mysql.当然所有的这些可以稍作修改,以支持其它的
PHP 支持的数据库。
我们假设你安装了 MySQL and Apache ,完全是用 RPMS 安装的。
首先,移去 mod_
php3 : rpm -e mod_
php3然后取得 rpm 包并安装 不是 --重编译 rpm -Uvh mod_
php3-3.0.5-2.src.rpm编辑/usr/src/redhat/SPECS/mod_
php3.spec 文件在 build 一节里增加你想要的数据库支持 以及路径信息。
对 MySQL 你应该增加: --with-
mysql/usr build 节 看 起 来 象 : ./configure --prefix/usr --with-apxs/usr/sbin/apxs --with-config-file-path/usr/lib --enable-debugno --enable-safe-mode --with-exec-dir/usr/bin --with-my
sql/usr --with-system-regex改动完成后,象下面这样重编 rpm : rpm -bb /usr/src/redhat/SPE
CS/mod_
php3.specThen install the rpm rpm -ivh /usr/src/redhat/RPMS/i386/mod_
php3-3.0.5-2.i386.rpm重启 Apache你已经得到了 rpm 下的 Mysql 的支持。
注意到这种做法比你重新得到一个
PHP 3 的 tarball 代码,按照 INSTALL.REDHAT 的指引一步一步做要容易得多。
5. Unix: 我用 FrontPage 扩展包对 Apache 打了补丁 忽然
PHP 停止工作。
是
PHP 和 ApacheFrontPage 包不兼容吗 不是
PHP 和 FrontPage 扩展包运行得很好.。
问题是 FrontPage 包修改了几个 Apache 结构参数而
PHP要用到它们.在 FrontPage 扩展包被打上后, 重新编译
PHP 使用 make clean make ,会解决这个问题。
6. Unix/Windows: 我安装了
PHP,但在浏览器里看我的
PHP 页面时,空白一片。
在浏览器里用 查看源文件 看你的脚本,你可能会发现你看到的是源程序。
这表示
web server 并没有送脚本到
PHP 去执行。
肯定是服务器配置上哪儿出了错。
仔细检查
PHP 安装的 server 配置。
7. Unix/Windows: 我安装了
PHP,但在浏览器里看我的
PHP 页面时,我得到一个 server 500 error。
这是服务器在运行
PHP 时发生了错误。
为了看到可读的错误信息在命令行改变目录到
php.exeWindows所在目录, 运行
php -i. 如果有任何问题详细的错误信息就显示出来了,它会告诉你下一步该做什么。
如果你得到满屏的
HTML 代码 phpinfo 函数的输出, 那么
PHP 工作正常这个错误就是由于服务器配置引发的,应该仔细检查。
8. 某些操作系统: 我安装
PHP 没出错,可是我启动 Apache 时,得到一个 undefined symbol errors:mybox:user /src/
php4 root apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefinedsymbols: _compress _uncompress这个
问题其实与
PHP 无关 而与 MySQL 客户端库有关。
--with-zlib有些操作系统需要,而有些不需要。
MySQL FAQ 已经讲述了这个问题。
9. Windows: 我安装了
PHP,但在浏览器里看我的
PHP 页面 得到如下错误: cgi error: The specified CGIapplication
misbehaved by not returning a complete set of HTTP headers. The headers it did return are:这是
PHP 根本没有产生任何输出。
为了看到可读的错误信息在命令行改变目录到
php.exe Windows所在目录, 运行
php -i. 如果有任何问题详细的错误信息就显示出来了,它会告诉你下一步该做什么。
如果你得到满屏的 HTML 代码 phpinfo 函数的输出, 那么
PHP 工作正常。
一旦
PHP 在命令行模式下工作再看看你的脚本
程序, 它还是失败,可能是因为以下原因:你的
PHP 脚本的权限许可。
php.exe
php4ts.dll
php.ini 或者任何你可能装入的
PHP 文件,它样都必须能被匿名 internet 用户 ISUR_ltmachinenamegt 访问。
脚本文件根本不存在或者不是你认为的位置。
请注意在 IIS 里,你能够阻塞这个错误,做法是在设置脚本映射目录时, 选上 check file exists 框。
这样如果脚本不存在,服务器会返回一个 404 错误。
这样做也有其它的一些好处, 就是 IIS 仅为你做经过授权的操作。
10. Windows: 我严格按照 install 的要求做,可是还是不能让我的
php 在 IIS 下工作。
确定任何想要运行
PHP 的用户有操作
php.exe 的权限 IIS 使用匿名的 internet 用户,它是在 IIS 安装时系统自动增加的。
这个用户需要操作
php.exe 的权限. 还有,任何需要授权的用户也必须有访问
php.exe的权限。
在 IIS4 下,你要告诉它
PHP 是一个脚本引擎。
PHP 的功能概述
PHP 在数据库方面的丰富支持,也是它迅速走红的原因之一,它支持下列的数据库或是资料表:Adabas DDBAdBasedbmfileProInformixInterBasemSQLMicrosoft
SQL ServerMySQLSolidSybaseODBCOracle 8OraclePostgreSQL 而在 Internet 上它也支持了相当多的
通讯协议 protocol,包括了与电子邮件相关的 IMAP POP3;网管
系统 SNMP;网络新闻 NNTP;帐号共用 NIS;全球信息网 HTTP 及 Apache 服务器;目录协议 LDAP以及其它
网络的相关函数。
除此之外,用
PHP 写出来的 Web 后端 CGI 程序,可以很轻易的移植到不同的系统平台上。
例如,先以 Linux 架的网站,在系统负荷过高时,可以快速地将整个系统移到 SUN 工作站上,不用重新编译 CGI程序。
面对快速发展的 Internet,这是长期规划的最好选择。
在加入其它的模块之后,提供了更多样的支持如下:英文拼写检查BC 高精确度计算公元历法PDF 文件格式Hyperwave 服务器图形处理编码与解码功能哈稀处理WDDX 功能qmail 与 vmailmgr 系统
压缩文件处理XML 解析
PHP 应用教程
PHP Hypertext Preprocessor是一种 HTML 内嵌式的语言,也是目前比较流行的网页编程语言。
它支持的后端数据库种类凡多,几乎含盖了当前的所有数据库系统。
同时它包含了一般语言有的数学运算、时间处理、文件系统、字符串处理、行程处理等功能,再加上它是
免费的系统,使得成本与效益比,几乎等于无限大。
下面是我在用
PHP 做网站时,总结出一些小技巧,拿出来飨以大家。
1、判断某个函数是否被支持由于在
PHP 中我们可以灵活的使用增加或者减少
php 支持的模块,所以有的时候我们在使用
PHP 之前,总是会首先确定某个模块是否被加载,比如,看看 GD
图形模块是否被支持,可以用下面的这段代码:iffunction_exists imagecreate die 这个主机目前不支持 GD 图形模块 gt同样的道理,我们可以利用类似的代码,测试 MSSQLOCI 等模块是否被支持。
2、在字符串中把网址改成超级链接在网页中提交表单时,经常在提交的说明文本中出现一些网址,比如个人主页等信息,如果在显示时自动将其转为超级链接,那将是一件很惬意的事,就像用 WORD 编辑
文档时自动出现超级链接一样。
下面这段代码就很好的实现了其功能。
string quot连接赛迪网 http://www.ccidnet.com 站点quot//注意:连接后需要有个空格或回车。
string eregi_replacequothttp:// rnquotquot<a href0 tarrget_blank>0</a>quotstringstring eregi_replacequotftp:// rnquotquot<a href0 target_blank>0</a>quotstrin
gprint stringgt3、用
PHP 处理多个同名复选框如果一个表单中有多个同名复选框,在提交到
php 时却只有一个值,而并不像 asp 那样是一串用逗号分割的值。
解决的方法是利用数组。
将复选框的 name 后面加上,例如:ltinput typequotcheckboxquot namequotppquotvaluequot1quotgt 改为:ltinput typequotcheckboxquot namequotppquot valuequot1quotgt。
这样
php 将得到一个叫 pp 的阵列。
在提交的表单中先用 Countpp来判断数组的个数即选中的个数,然后对数组进行分别处理就行了。
同样的道理也适应于处理下拉框的多选问题。
4、利用 static 实现表格的颜色隔行显示我们用
PHP 从数据库
查询数据,并将结果输出到浏览器上,如果结果有很多行,表格的 bgcolor(背景色)如果全是单色的,浏览者会感觉不太舒服。
那么怎样做使表格各行的颜色不同呢?请看下面代码:function getcolorstatic colorvalue//定义一个静态变量ifcolorvaluequoteeeeeequotcolorvaluequotF5F5F5quotelse colorvaluequoteeeeeequotreturncolorvalueprintquot<table border1>nquot//下面输出 10 行fori0ilt10ibcolorgetcolor//换背景颜色printquot<tr bgcolorbcolor>nquotprintquot<td>i</td>nquotprintquot</tr>quotprintquot</table>nquotgt说明:此程序中定义了一个静态变量 static colorvalue 意思是在函数调用结束后,此变量colorvalue 还保留值,没有消失。
当再次调用 getcolor函数时,变量colorvalue 的值是上次函数调用结束时colorvalue 的值。
5、在
php 中避免重复引用的办法大家知道,在 C 语言中,我们可以用define 来定义一个 MACRO 名字,通过检查是否该 MACRO 名字定义过来决定该头文件是否被引用。
在
PHP 中也有同样的问题,比如:A 引用 BC B 引用 C如果不采取措施,C 将被引用 2 次。
这样可能会导致一些奇怪的问题。
解决办法:定义一个全局变量并且通过检查该变量是否定义过来解决这个问题.办法很简单,类似 C。
只是这个全局变量我建议都用 user_packages headfilename 的命名规则。
if emptyGLOBALS FOODTAILS GLOBALDEFINE returnGLOBALS FOODTAILS GLOBALDEFINE trueclass FOODTAILS ...gt另外,在主程序中尽量采用 require_once quotheadfiles.phpquot 以避免重复引用。
6、如何避免表单的重复提交我们在做网站时,常常为一些灌水文章而烦恼。
有时,由于网络状况等原因用户不知道提交是否成功,也会再次提交同一份表单,这就造成了表单的重复提交不起。
有一个简单的方法可以避免同一表单的重复提交。
首先,先定义一个 session 变量用来保存一个表单的提交序列号。
这里我定义为“userLastAction”。
然后在表单里加入一个 hidden 变量,把值设为userLastAction1:ltinput typeHidden namelastActionvaluelt userLastAction1 gtgt 最后,在处理提交之前判断表单是否已被提交过。
iflastActiongtuserLastActionuserLastAction // 序列号加 1// 处理表单数据gt这个技巧的主要原理是不允许用户回退后再次提交,也就是说回退后修改再提交也是不允许的,但是还是不能避免 Ctrl-C/Ctrl-V 的灌水办法。
7、下载文件的下载次数回填我们在下载软件时,经常会看到此软件的下载统计次数,而这些统计数给网站管理员分析
软件的受欢迎程度带来了方便。
其实现原理是:在后端数据库中存放软件的唯一标识和下载数,在用户下载软件时,首先更新对应软件的下载次数即下载次数加 1,然后再到下载文件上正式开始下载。
请看下面的实现代码:a、先建一数据表 download (后端用 MySqldownload 表中含有下列两个字段:id 下载的文件的.