|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也许您在学习PHP的时候只想尽快的开发一个网站,也就会想我做网站,干嘛要学什么网页这些小儿科?不难看出,眼高手低的新手不在少数,这种思想无疑于建造空中楼阁,你不建地基,何来的房顶呢?中文 第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”切实其实认体例被撑持。
在一个页面中强制用户停止身份认证的代码段的例子以下:
Example 2-1. HTTP 认证举例:
<?php
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic realm=\"My Realm\"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button\n";
exit;
}
else {
echo "Hello $PHP_AUTH_USER.<P>";
echo "You entered $PHP_AUTH_PW as your password.<P>";
}
?>
除复杂的输入$PHP_AUTH_USER 和 $PHP_AUTH_PW变量的值之外,你还可以反省用户名和暗码的正当性,或许是对数据库停止查询,或许是在dbm文件中搜刮用户。
小心臭虫成堆的Internet Explorer阅读器,他对Hearders的按次十分抉剔.所以采取在送出HTTP/1.0 401 header 恳求之前送出WWW-Authenticate header恳求是一个很好的处理办法。
为了禁止一些人写一些剧本来显示一个经由传统内部机制验证过的页面的暗码,采取以下体例:假如这一页面利用内部验证机制,将不会生成PHP_AUTH变量.如许,$REMOTE_USER变量可以被用来暗示已被内部机制验证的用户.
注重,下面的办法其实不能避免某些人在统一台办事器上使用无身份验证的URL盗取怀孕份判别的URL的暗码。
不管Netscape仍是IE,在接到办事器的401答复以后,都将清空当地阅读器窗口的身份验证缓存。这类做法可以无效的利用户登录加入,从而强制他们再次输出他们的用户名和暗码。一些人利用这个体例来完成“超时”注册,或供应登录加入的按钮。
这类办法不是尺度的HTTP根基身份判定所必需的,所以您能够历来都不依托它。利用Lynx停止的测试并没有弄清晰401办事器回应的身份判定,所以假如利用“向前”或“向后”功效将翻开源文件(只需信誉需求还没有被改动)。
固然已指出这类言语不克不及任务在Microsoft的IIS办事器上,然而PHP言语CGI版本将遭到IIS的限制。
利用PHP创立GIF
PHP其实不仅仅可以用来创立HTML输入。它还可以用来制造GIF图形文件,乃至制造更简捷的GIF图像流。要想如许做,您将需求利用GD函数库来编译PHP源文件。
Example 2-2. 利用PHP来创立GIF文件
<?php
Header("Content-type: image/gif");
$string=implode($argv," ");
$im = imagecreatefromgif("images/button1.gif");
$orange = ImageColorAllocate($im, 220, 210, 60);
$px = (imagesx($im)-7.5*strlen($string))/2;
ImageString($im,3,$px,9,$string,$orange);
ImageGif($im);
ImageDestroy($im);
?>
这个例子将被一个页面利用相似于:<img src=http://www.163design.net/p/a/"button.php3?text">的办法来挪用。个中关于button.php3的剧本将把这一段文本掩盖在根基的图形上(在这里是“images/button1.gif”)然后输入了局图形。这是一个很简捷的办法来避免每当用户但愿改动按键的文本时分都从头画一次按钮图形。利用这类办法,他们将主动态的利用。
文件上载撑持
PHP有才能承受任何RFC-1867顺应阅读器(包含Netscape Navigator 3.0或今后的版本, Microsoft Internet Explorer 3.0(利用了补钉法式)或今后的版本)的文件上载。这个特征让用户可以上载文本和二进制文件。利用PHP 的身份判定和文件处置函数,您可以完整掌握谁可以上载文件和被上载的文件可以做些甚么。
可以采取相似上面的创立表单的办法来创立一个文件上载的屏幕。
Example 2-3.文件上载表单
<FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Send File">
</FORM>
个中“_URL_”指向一个PHP的HTML文件。MAX_FILE_SIZE埋没范畴必需先于文件输出范畴,它的值是可以承受的最大的文件巨细。该值的单元是字节。在该方针文件中,以下变数用来界说是不是胜利的上载了文件:
$userfile:在将要寄存上载文件的办事器上的一时文件名字。
$userfile_name:在发送者体系中的初始文件名。
$userfile_size:按字节盘算的上载文件的巨细。
$userfile_type:多用处网际邮件扩大协定类型的文件,假如阅读器供应这类信息。一个例子是“image/gif”。
正文:在这里“userfile”局部是可以变更的,它可以取任何的名字只需在上载表单中类型依然为“TYPE=file”便可。在下面的例子中,咱们选择它的名字为“userfile”。
文件将被默许的寄存在办事器默许的一时目次下。在PHP运转的情况下,可以改动情况变量TMPDIR来更改这个设置。设置时,请在PHP剧本没有运转的情形下利用一个PutEnv()函数。
承受上载文件的PHP剧本言语将贯彻何种逻辑布局是必需的来决意对上载的文件可以做些甚么。例如,用户可使用“$file_size”变量来发送任何或太小或太大的文件来测验考试一下了局。可使用“$file_type”变量来发送任何不合适切实其实定类型尺度的文件。不管何中逻辑布局,您都需求在一时目次中删除这个文件,或把它移走。
假如没有被更名字或挪动,那末在恳求的最初该文件将被从一时文件夹中删除。
请注重,在从客户端取得MIME的毗连类型以后,“CERN httpd”软件仿佛将剥离职何内容而以最后的白板模式呈现。在这类场所,“CERN httpd”软件将不撑持上载文件的特征。
HTTP cookie撑持
PHP很分明的撑持HTTP cookie。Cookie是一个在近程阅读器上存储数据和跟踪或判定前往的用户的布局。您可使用函数setcookie()来设置cookie。Cookie是HTTP文件头的一局部,所以该Setcookie()函数必需在任何输入向阅读器发送前被挪用。这类情形和函数Header()的限制是相似的。
任何从客户盘算机发送到您那儿的cookie都将被主动的转化成一个相似于GET和POST办法数据的PHP变量。假如您但愿给一个cookie指派多个值,只需求在该cookie的名字前面加上“[ ]”便可。关于更多的细节成绩请参看setcookie()函数。
数据库撑持
PHP撑持大批当地形式和完整ODBC等分歧类型的数据库,包含:
Adabas D
MySQL
dBase
Oracle
Empress
PostgreSQL
FilePro
Solid
Informix
Sybase
InterBase
Velocis
mSQL
Unix dbm
正则表达式格局
正则表达式在PHP中被用来处置庞杂的文字串。撑持正则表达式的函数有:
ereg()
ereg replace()
eregi replace()
split()
这些函数都将正则表达式作为他们的第一个参数。PHP利用POSIX扩大划定规矩表达式(利用POSIX 1003.2)。要找到一切的关于POSIX扩大划定规矩表达式的描写,请检查包含在PHP刊行版本以内的regex man页面。
Example 2-4. Regular expression examples
ereg("abc",$string);
/* Returns true if "abc"
is found anywhere in $string. */
ereg("^abc",$string);
/* Returns true if "abc"
is found at the beginning of $string. */
ereg("abc$",$string);
/* Returns true if "abc"
is found at the end of $string. */
eregi("(ozilla.[23]|MSIE.3)",$HTTP_USER_AGENT);
/* Returns true if client browser
is Netscape 2, 3 or MSIE 3. */
ereg("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+ )",
$string,$regs);
/* Places three space separated words
into $regs[1], $regs[2] and $regs[3]. */
ereg_replace("^","<BR>",$string);
/* Put a <BR> tag at the beginning of $string. */
ereg_replace("$","<BR>",$string);
/* Put a <BR> tag at the end of $string. */
ereg_replace("\n","",$string);
/* Get rid of any carriage return
characters in $string. */
失足操作
在PHP中有四品种型的毛病和正告。它们是:
凡是函数毛病:1
凡是正告:2
剖析毛病:4
正文(正告用户,可以疏忽该信息,然而这个成绩能够给您的代码会带来一些毛病):8
信息前面的四个数字是该信息类型的暗示值,把它们加起来作为毛病呈报的级别。却省的呈报级别是7(即1+2+4),或除“正文”的其他组合。这个级别可以经由过程改动php3.ini文件中毛病呈报唆使的办法来改动。它也能够在用户的httpd.conf文件中改动php3毛病呈报的办法来设置,或在运转的时分利用剧本言语函数error reporting()来改动。
一切的PHP表达式都可使用前缀“@”来挪用,关于这类特别的表达式将封闭毛病呈报。假如一个毛病在运转如许一个表达式时产生了,并且“track error”特征被置为可用,那末用户可以在全局变量$php_errormsg中找到这些毛病信息。
培训的第一阶段,学习的是HTML/CSS/JavaScript基础。 |
|