语法
opendir(path,context) 目录
语法
opendir(path,context) 目录
定义和用法
readdir() 函数返回由 opendir() 打开的目录句柄中的条目,若成功,则该函数返回一个文件名,否则返回 false。
chmod() 函数改变文件模式。chmod — Changes file mode如果成功则返回 TRUE,否则返回 FALSE,哈哈,我们不只是讲chmod简单语法,而且还做了复杂的关于chmod使用实例
格式化时间和/或日期按区域设置。月份和星期几以及其它和语言有关的字符串当前语言环境的设置与那么setlocale()。
不是所有的转换说明符,可支持您的C库,在这种情况下,他们不会将PHP的strftime()的支持。此外,并不是所有的平台的支持负的时间戳,因此您的日期范围可能仅限于不早于Unix的时代。这意味着,一样%e,%吨,%R和,%d个(或其他) - 以及1月1日之前的日期 - 1970年将无法工作在Windows,一些Linux发行版本,以及其他一些操作系统。对于Windows系统,支持的转换说明符的完整概述,可在
/*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>>
| = 中Classes and Objects一章的笔记
| = 翻译为主+个人心得
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢
| = 欢迎批评指正,希望和所有PHP爱好者共同进步!
+-------------------------------------------------------------------------------+
*/
第六节--访问属性和方法
一个对象实例的属性是变量,就像PHP的其他变量一样. 但是你必须使用->运算符来引用它们. 不需要在属性前使用美元符$. 例如, 6.1中打印User对象的name属性那一行.
可以联用->,如果一个对象的属性包含了一个对象,你可以使用两个->运算符来得到内部对象的属性. 你甚至可以用双重引用的字符串来放置这些表达式. 看6.5中的例子,对象House中的属性room包含了一组Room对象.
访问方法和访问属性类似. ->运算符用来指向实例的方法. 在例子6.1中调用getLastLogin就是. 方法执行起来和类外的函数几乎相同.
如果一个类从另一类中继承而来,父类中的属性和方法将在子类中都有效,即使在子类中没有声明. 像以前提到过的,继承是非常强大的. 如果你想访问一个继承的属性,你只需要像访问基类自己的属性那样引用即可,使用::运算符.
<?php
class Room
{
public $name;
function __construct($name="unnamed")
{
$this->name = $name;
}
}
class House
{
//array of rooms
public $room;
}
//create empty house
$home = new house;
//add some rooms
$home->room[] = new Room("bedroom");
$home->room[] = new Room("kitchen");
$home->room[] = new Room("bathroom");
//show the first room of the house
print($home->room[0]->name);
?>
PHP有两个特殊的命名空间:parent命名空间指向父类,self命名空间指向当前的类. 例子6.6中显示了如何用parent命名空间来调用父类中的构造函数. 同时也用self来在构造函数中调用另一个类方法.
<?php
class Animal //动物
{
public $blood; //热血or冷血属性
public $name;
今天做网站的可离不得数据库,说不定你维护的网站就连接着MySQL数据库。MySQL是一种关系型数据库管理系统(RDMS),我们知道,有了数据库,你的网站才会由死气沉沉的静态站点一跃而变得“神采奕奕”、活力四射,个人数据的管理、一般性的日常数据库应用等等都靠网站后端的数据库支撑着呢,这就是MySQL大显神威的地方了!我们这篇文章要谈论的就是MySQL数据库,希望读者能从概述性的本文中学到更多关于MySQL数据库的知识,由此进入MySQL世界的大门。
巨便宜的全能数据库
MySQL在开放源代码世界和Web团体社区中都是如雷贯耳的流行数据库系统,而且,实质上已经成为了免费数据库软件事实上的标准。原因何在呢?其实,MySQL数据库确实是一种真正面向大众的“下里巴”式、通俗的解决方案,它吸引了为数众多的、各种各样的数据库用户和数据库管理员,我们随后就会讨论到这些。
Mysql获得巨大成功还有另外一个原因:要获得它特别方便。在开放源代码世界里,GPL是共享开放源代码软件的一种标准许可协议;它规定自由软件(我们现在说的就是MySQL)可以无须付费即可使用,只要包含GPL产品的任何源代码也在遵守GPL的条件范围内被使用即可。这么说吧:你一个子儿不用就能免费下载MySQL。
而且,这并不是说,如果你的数据库用的是MySQL你就必须公开发布你的软件源代码。其实,只有在以下两种情况下你才必须执行GPL:其一是,从功能上说,MySQL代码是你的软件所必要的组成部分,其二是你随同自己的软件分派这种RDMS。而在商务或者个人自用的情况下就没有任何限制了,不过,使用MySQL的许多公司通常会采取专有许可协议防止软件源代码的泄露。专有许可协议可以按每一数据库服务器为单位购买,一个单位的起步价大约是200美元(如果按卷分发许可协议的话这个价格也可能会更低一些)。
--------------------------------------------------------------------------------
遵照GPL采用MySQL的网站示范
Slashdot—技术人员新闻站点
PHP-Nuke—网站管理系统
Freshmeat.net—软件目录
Linux.com—Linux新闻、技巧和下载的门户站点
--------------------------------------------------------------------------------
然而,MySQL也有个最令人头痛的问题:它没有完全地遵守ANSI SQL标准。如果你特别在意这个问题而且为此忧心忡忡,那我建议你不妨读一读Michael M. Gorman撰写的有关文章。这篇论文阐述了ANSI SQL标准的有效性,因为——说老实话,没有一个数据库系统老老实实遵守了SQL99规范。
1 页面登陆的基本要素
你可以在我的竹叶看到登陆 的表单,这里提供了最基本的登陆表单项
(1)登陆表单
<form method=POST name=chatform action=chat/login.php?action=enter onSubmit="b1_submit();return true;" target="howtodo">
(a)聊天表单的名字为chatform,我使用action=enter作为进入聊天室的入口,如果没有这个参数,则显示登陆页 面.
(b)在表单提交时,先调用b1_submit()建立聊天的窗口
(c)聊天的目标窗口为b1_submit()建立 的howtodo窗口
(2)表单项
昵称:<input type=text name=name size=15 maxlength="10">
密码:<input type=password name=pass size=15 maxlength="10">
<input type=submit name=submit value=登陆 style="width:100">
<input type=reset name=reset value=重添 style="width:50">
(a)各表单项一定要设定最大允许长度 maxlength
(3)建立聊天窗口的js
<script LANGUAGE="javascript">
function b1_submit(){
chat=window.open('',"howtodo",'Status=no,scrollbars=no,resizable=no');
chat.moveTo(0,0);
chat.resizeTo(screen.availWidth,screen.availHeight);
chat.outerWidth=screen.availWidth;
chat.outerHeight=screen.availHeight;
}
这段代码先 打开一个没有状态栏,滚动条,可调整尺寸的howtodo窗口!然后移动到屏幕左上角,然后放大到允许的屏幕大小.
聊天室编程思想--大门 -- 通行证
大门 -- 通行证
聊天室可以采用完全自由的方式运行,你可以随意 输入呢称,不用密码,不保存你的聊天状态,优点是:自由,非常适合于游客!另外一个方法是注册聊天室,每个进入 聊天室的人都要输入自己的用户名和密码才能进入!优点:充分体现个性,非常适合于老朋友,他们的呢称不会被 人恶意侵占使用.我的聊天室使用注册方法!
注册通常采用2种方法:1,先注册然后进入聊天;2,自动注 册,然后在里面修改自己的资料!我采用第2种方法!!每个新进入的聊友的用户名会被自动保存到注册到数据库内 ,下次登陆必须输入准确的密码才能进入!
下面是判断部分!本程序使用文本数据库 !
//$useronline为在线人的数据文件名称
//$useronlinelock为在线人的锁定标志
//$register为已经注册的数据文件名称
ZDE虽然表面上看好像没有什么变化.:) 整体风格几乎没有变化. 但明显可以感觉速度上快了许多. 而对中文的支持一如既往只能用宋体之类的中文字体时才能正常显示, 很不清楚为什么Zend在这点上进行改进.
以下是ZEND的新特性介绍:
1.Profier……这个东西太强了………没话说,实在是很强很强.从DEMO上看来实在是太强了,可惜我没有Performance suit, 而似乎要装了才能使用这个功能.
2.Code Analyzer 代码分析, 非常酷的功能,你可以看下图.
它的分析能使你的应用程序有更好的安全性. 分析的文档可都是非常宝贝的经验啊.
3.浏览器上的直接Debug的按钮.这个需要安装Zend Server.
4.支持PHP5, 特别支持PHP5的一些新的语法关键词.
自动填充代码功能增强.你可以看下图.
之后你就会在该函数前获得自动注释.很方便你修改.而且ZDE自动填充时的信息是由注释提供的哦.这是一个让你养成好习惯的功能.同时的确增强了自动填充功能, 如果你用惯了Visual Studio等,那么这个的确是很好的功能.而且对于包含文件也能进行填充,虽然有些时候不大灵光. 同时你点GO TO SOURCE能跨文件直接在该函数定位.
6.只是HTML和JAVA SCRIPT的语法加亮显示.
7.ZDE更有效率更快了,的确,虽然它是用JAVA写的,但很精练.去除JRE的ZDE仅仅4M多.
另外还有代码整理功能,你可以看下图
效果很不错.而且非常好用, 因为你也许要接手其他人的项目而可能那个项目的代码写得非常差… 那么这个功能就大显身手了.
一个好的开发工具是一个语言成功的条件之一,在这一点上MS一直做得非常好.而就我而言对PHP的厌恶之情由来依旧,并早已决定除非需要否则放弃使用,但可以说ZEND这次的确带来了惊喜.我一直对PHP5缩宣扬的新特性持由怀疑态度的, 但通过这次对ZDE的支持PHP5关键词的测试, 看来的确是真的. 所以准备对现在PHP5的BETA版本进行一下接触^_^. 希望也能给我带来惊喜 :)
动态信息理论
据Merriam-Webster Online地解释,动态一词的意思是网页的内容由“通常是连续的和实时生成的活动或者改变的信息组成。”因此当我们谈论动态数据的时候,我们也就是在谈论作为Web页面发送给用户的信息是由不同的源数据组合而成的。这与静态网页的概念是相对的,静态网页的内容并不依赖用户输入的数据而改变而且通常是直接解析给用户。Web页面上的动态信息有三种主要的类型:
动态数据--在一个Web页面里产生的变量。
动态Web页面--整个Web页面都是动态生成的。
动态内容--Web页面的一部分是动态生成的。
你如果希望对动态内容产生的过程进行细微的控制,就象动态数据的那种类型一样,那么数据处理的过程就会复杂一些。而如果你想生成大范围的信息,就象动态Web页面的生成那样,那么程序的逻辑就会变得复杂。动态内容的生成是这两种方式的折衷,它能够让我们使用两个很有用的PHP函数,include()和require()。
要记住,你在后端加入的逻辑越多,那么你的Web站点的性能将会损失得越严重。幸运的是,PHP能够很流畅的进行预处理过程,所以当我在处理动态内容和数据的时候都尽可能多的使用PHP的功能。
数据源和PHP功能
所有的动态内容都有一个共同点:它们从一个原始页面以外的数据源而来。图A列出了一些常见的数据源以及用来处理它们的相应的PHP函数。
Figure A
数据源
PHP 函数
注释
User
$HTTP_POST_VARS
$HTTP_GET_VARS
这些函数处理由用户通过Web表单直接输入的数据。
Database (local or remote)
<dbtype>_connect()
<dbtype>_pconnect()
<dbtype>_close()
<dbtype>_<function>()
example:
mysql_fetch_array()
这些都只是PHP许多数据库访问函数中的一部分,许多函数是为每个不同的数据库特别编写的。你能够在PHP函数参考手册里找到这些函数的完整列表。
Remote file
fopen(), fclose()
fgets(), fputs()
这些函数处理一个远程服务器上文件中的数据,这个文件可以通过FTP访问。
Local file
include(), require()
fopen(), fclose()
这些函数处理位于本地服务器上的文件中的数据,比方说配置文件。
常见的数据源和处理它们的PHP函数
在这篇文章“教程:PHP起步中,”我们观看了一个演示的脚本,这个脚本要求用户输入他们最喜欢的数字。根据用户输入的结果,我们在Web页面上显示一条消息。这就是一个由用户驱动的动态Web内容的例子。从Web表单返回的结果将决定显示的内容。一个更复杂的例子是“点击流程”应用程序,这个程序能够根据一个用户在Web站点上访问过的页面来决定向他或者她发送什么广告。
PHP中如何增加一个系统用户 下面是一段例程,增加一个名字为james的用户,root密码是 verygood。仅供参考
$sucommand = "su --login root --command";
$useradd = "useradd ";
$rootpasswd = "verygood";
$user = "james";
$user_add = sprintf("%s "%s %s"",$sucommand,$useradd,$user);
$fp = @popen($user_add,"w");
@fputs($fp,$rootpasswd);
@pclose($fp);
《谈谈HTML语法》一文,我已经介绍了基本的HTML语法。可以编出一个静态的Web页,可动态交互信息是很重要的。如一些网站的会员制的会员注册、登录都需后端程序的运行。很多网站所用的CGI程序主要用Perl、ASP、Java、PHP编写,而我们所要用的就是PHP。它是完全免费的,这就要感谢那些默默无闻的编程人员了。
PHP的结构类似于C语言,这可是应证了C语言里提的“一处学习,到处编程”。相信学过C语言的人可很容易上手PHP的。还是先介绍一些PHP语法吧。本文适合初学者学习。
PHP与C语言也有一些差别,或者说在某种程度上可能比C语言更为灵活。在C语言中,变量要先定义,才能使用。而PHP中变量则不需事先定义,直接使用即可。对于变量的类型,在赋值时自动生成。PHP变量的类型分为:整数(int)、双精度型(double)、字符串(string)、数组(array)、对象(object)。
整数大小超出其范围后,自动转化为双精度型,其值范围如下表:
┌─────┬─────┬──────┬────────────┐
│ 声明类型 │长度(位)│长度(字节)│ 值的范围 │
├─────┼─────┼──────┼────────────┤
│ int │ 32 │ 4 │-2147483647~2147483647 │
├─────┼─────┼──────┼────────────┤
│ double │ 32 │ 4 │ 1.7E-308~1.7E+308 │
└─────┴─────┴──────┴────────────┘
字符串,通常用""(双引号)表示。也可用''(单引号)表示,如下:
$a="abc";
$b="abc$a";
$c='abc$a';
$d=""cde"";
$e='"cde"';
PHP中的各种变量均在变量名前加上“$”以示区别。
注意,$b的内容为abcabc,$c的内容为abc$a,$d的内容为"cde",$e的内容也为"cde"。可以看出,双引号中的内容中的变量名会被替代
第1章 PHP3 入门
什么是PHP3?
PHP3.0版本是一种服务器端HTML-嵌入式脚本描述语言。
PHP3能做什么?
也许PHP3最强大和最重要的特征是他的数据库集成层,使用它完成一个含有数据库功能的网页是不可置信的简单。目前支持下面所列的数据库。
Oracle
Adabas D
Sybase
FilePro
MSQL
Velocis
MySQL
Informix
Solid
dBase
ODBC
Unix dbm
PostgreSQL
PHP的简要历史
PHP从1994年秋天开始孕育,他的创始人是Rasmus Lerdorf。早期没有发布的版本是被他用在自己的网页上来跟踪有谁来参观过他的在线个人简历。被其他人使用的第一个版本是在1995年发布的,当时叫做Personal Home Page Tools。他包含了一个非常简单的语法分析引擎,只能理解一些指定的宏和一些Home Page后台的常见功能,如留言本,计数器和一些其他的素材。在1995年中期,重写了这个语法分析引擎并且命名为PHP/FI 2.0版本。FI来源于Rasmus所写的另一个可以接受Html表单数据的程序包。他组合了Personal Home Page Tools 脚本和Form Interpreter,并且加入了对mSQL的支持,于是PHP/FI 2.0诞生了。PHP/FI以惊人的速度发展,并且其他的人也开始对他的源码加以改进和修改。
很难给出任何精确的统计数字,但是据估计到1996年末至少有15,000个WEB站点在使用PHP/FI 2.0,到了1997年中,这个数字已经成长为50,000个,1997年中PHP的发展也已经有了一些变化,他已经从Rasmus的宠物项目变成了更加有组织的团体项目。语法分析引擎也由Zeev Suraski 和 Andi Gutmans进行了重新改写,这个引擎构成了PHP3的基础。PHP/FI中的大部分通用代码都经过改写后引入了PHP3中。
今天(1998年中),有许多商业的产品如C2's StrongHold web server和Red Hat Linux都开始支持PHP3或PHP/FI,根据由NetCraft提供的数字进行保守的推断,现在在世界各地大概有150,000个WEB站点在使用PHP或PHP/FI。从前景上看,在InterNet上这些站点远远比运行Netscape's flagship Enterprise server的要多。
使用PHP3进行HTTP认证
只有在PHP以Apache的模块方式运行的时候才可以使用HTTP认证的功能。在Apache的模块PHP脚本中,可以使用Header()函数向客户断浏览器发送一个”Authentication Required”的消息,使浏览器弹出一个用户名/密码(username/password)的输入窗口,当用户输入用户名和密码后,包含PHP脚本的URL将会被再次调用,使用分别代表用户名,密码,和确认方式的$PHP_AUTH_USER, $PHP_AUTH_PW,$PHP_AUTH_TYPE变量。现在只有”BASIC”的确认方式被支持。