軟件首頁(yè) |  文章首頁(yè)
最新更新 軟件分類 設(shè)為首頁(yè) 加入收藏 聯(lián)系我們
當(dāng)前位置:首頁(yè)文章首頁(yè) IT學(xué)院 PHP

PHP編程與應(yīng)用

作者:東坡下載  來(lái)源:uzzf  發(fā)布時(shí)間:2010-10-14 10:44:41  點(diǎn)擊:

第一章 php3簡(jiǎn)介

PHP 是一種服務(wù)器內(nèi)置式的script 語(yǔ)言,它的出現(xiàn)使得在unix上快速地開(kāi)發(fā)動(dòng)態(tài)web成為現(xiàn)實(shí)。
  PHP是Rasmus Lerdorf在1994年秋天構(gòu)思出來(lái)的。最早的未發(fā)行版本是他在自己的主頁(yè)上來(lái)用來(lái)和觀看他的在線簡(jiǎn)歷的人保持聯(lián)系的。第一個(gè)交付用戶使用的版本是在1995年初發(fā)行的,它只是被當(dāng)作一個(gè)個(gè)人主頁(yè)制作工具。當(dāng)時(shí)它僅包括一個(gè)只能懂得很少幾條宏指令的非常簡(jiǎn)單的分析引擎和一組用于主頁(yè)信息反饋的工具(一個(gè)留言簿,一個(gè)計(jì)數(shù)器和一些其他的東西)。1995年年中,Rasmus重寫(xiě)了整個(gè)解析器,并取名為PHP/FI 2。FI來(lái)源于他寫(xiě)的另外一個(gè)html表單集成數(shù)據(jù)的軟件包。他把個(gè)人主頁(yè)工具,表單集成工具合并在一起,并加入了mSQL數(shù)據(jù)庫(kù)的支持,這樣就有了PHP/FI。此后PHP/FI便以一種令人驚奇的速度傳播開(kāi)來(lái),人們開(kāi)始大量使用它編寫(xiě)程序。
  我們無(wú)法確切的統(tǒng)計(jì)它的使用范圍,但是根據(jù)估計(jì)到1996年底,世界上已經(jīng)有至少15,000個(gè)站點(diǎn)在使用PHP/FIl。到了1997年年中這個(gè)數(shù)字已經(jīng)增長(zhǎng)到超過(guò)50,000個(gè)站點(diǎn)。 1997年年中我們也發(fā)現(xiàn)了PHP發(fā)展過(guò)程中一個(gè)重大的轉(zhuǎn)折。這就是PHP的開(kāi)發(fā)從Rasmus個(gè)人的愛(ài)好升級(jí)到一群程序員們有組織的工作。 再后來(lái),這個(gè)解析器被Zeev Suraski和Andi Gutmans重寫(xiě),通過(guò)這次全面的重寫(xiě),大量PHP/FI的功能被移植到PHP3中,并且成為了PHP3的基本雛形。
  到1998年年中時(shí),已經(jīng)有大量的商業(yè)化產(chǎn)品,例如 C2的 StrongHold web server和RedHat linux捆綁了PHP/FI解析器或PHP3解析器,根據(jù)NetCraft估計(jì)的保守?cái)?shù)據(jù),PHP已經(jīng)被世界上150,000個(gè)站點(diǎn)所采用。通過(guò)進(jìn)一步分析,我們知道其使用數(shù)量遠(yuǎn)比使用Netscape公司旗艦產(chǎn)品--企業(yè)級(jí)WEB服務(wù)器的站點(diǎn)多。 PHP3大量采用了C, java和Perl語(yǔ)言的語(yǔ)法,并加入了各種PHP自己的特征。它與Javascript等語(yǔ)言的一個(gè)區(qū)別就是PHP3是在服務(wù)器執(zhí)行,客戶機(jī)所看到的是其在服務(wù)器上運(yùn)行的結(jié)果,這意味著您若想采用PHP3 scrpit,必須得有 WEB SERVER 支持。
  PHP3支持HTTP的身份認(rèn)證、cookie、GIF圖象創(chuàng)建,它的一個(gè)最有代表性的特點(diǎn)是它的數(shù)據(jù)庫(kù)層,它使得編寫(xiě)基于數(shù)據(jù)庫(kù)的網(wǎng)頁(yè)變得非常簡(jiǎn)單。下列出了目前所支持的數(shù)據(jù)庫(kù):
Oracle ,Sybase , mSQL ,MySQL ,Informix ,Solid dBase ,ODBC, Unix dbm, PostgreSQL ,Adabas D,F(xiàn)ilePRo Velocis。

PHP3也支持與采用POP3、HTTP、SNMP、NNTP、IMAP等協(xié)議的服務(wù)進(jìn)行網(wǎng)絡(luò)編程。
PHP3的程序模式

  有三種方法從HTML進(jìn)入"PHP程序模式":
  第一種方法:
  

如:

  第二種方法:  

如:


  第一種方法: 

如:

  第二章 變 量

PHP3支持下面類型的變量:

(一)、內(nèi)部變量

  主要有整數(shù)(interger),浮點(diǎn)數(shù)(float-point numbers),字符串(string),數(shù)組(array),對(duì)象(object)。


1 初始化變量

  要在PHP中初始化變量, 你只要簡(jiǎn)單的給它賦值即可。對(duì)于大多數(shù)類型,這是最直接的。對(duì)于數(shù)組和對(duì)象,可以使用其它方法。

2 初始化數(shù)組

  數(shù)組可以使用這兩種方法之一來(lái)賦值: 使用一系列連續(xù)數(shù)值,或使用array()函數(shù)構(gòu)造 (見(jiàn) Array functions 部分)。
  要將連續(xù)的數(shù)值加進(jìn)數(shù)組,你只需將要賦值賦給不帶下標(biāo)的數(shù)組變量。該值會(huì)作為數(shù)組的最后元素加進(jìn)數(shù)組中。
  例:
   $names[] = "Jill"; // $names[0] = "Jill"
   $names[] = "Jack"; // $names[1] = "Jack"


與c、perl相似,數(shù)組下標(biāo)也是從0開(kāi)始。

3 初始化對(duì)象

要初始化一個(gè)對(duì)象,需用new語(yǔ)句建立該類型的變量。

       class foo {
        function do_foo() {
          echo "Doing foo.";
                 }
            }
        $bar = new foo;
        $bar->do_foo();

4 變量作用域

  變量的作用域就是它的有效范圍。對(duì)于大多數(shù)PHP的變量只有一個(gè)作用域。在用戶自定義函數(shù)里采用局部變量作用域。函數(shù)內(nèi)使用的變量被缺省設(shè)置為局部變量。例如:

     $a=1; /* global scope */
     Function Test() {
       echo $a; /* reference to local scope variable */
             }
     Test();


這段程序不會(huì)輸出任何的東西,因?yàn)閑cho語(yǔ)句要輸出局部變量 $a ,而函數(shù)內(nèi)的 $a 從未被賦過(guò)值。你可能注意到這和C語(yǔ)言有點(diǎn)小小的區(qū)別,C中全局變量可以直接在函數(shù)內(nèi)引用,除非它被一個(gè)局部變量所覆蓋。而這使得人們可能不注意修改了全局變量的值。在PHP中要在函數(shù)內(nèi)部使用全局變量必須顯式的說(shuō)明。例如:

       $a=1;
       $b=2;
       Function Sum() {
         global $a,$b;
         $b = $a + $b;
              }
       Sum();
       echo $b;


上面程序?qū)⑤敵?quot;3"。通過(guò)在函數(shù)內(nèi)部聲明$a和$b是全局變量,所要變量都參考全局。一個(gè)函數(shù)可以操縱的全局變量的數(shù)量沒(méi)有限制。
  作用域的另外一個(gè)值得注意的地方是static 變量。一個(gè) static變量存在于局部函數(shù)中,但當(dāng)程序離開(kāi)這個(gè)函數(shù)時(shí)它的值不會(huì)丟失。考慮下面的例子:

     Function Test() {
       $a=0;
       echo $a;
       $a++;
       }


這個(gè)函數(shù)是沒(méi)用的,因?yàn)槊看握{(diào)用時(shí)它都先把$a賦為 0 然后打出"0"。 對(duì)$a++的自加沒(méi)有任何效果因?yàn)楹瘮?shù)調(diào)用結(jié)束后變量$a 就被釋放了。要使記數(shù)程序有效記數(shù)而不丟掉當(dāng)前的記數(shù)結(jié)果,$a 要聲名為static變量:

      Function Test() {
        static $a=0;
        echo $a;
        $a++;
      }


現(xiàn)在,每次調(diào)用Test()函數(shù)它都會(huì)打出$a的值并把增加它的值。

  當(dāng)使用遞歸函數(shù)時(shí)靜態(tài)變量是必不可少的。遞歸函數(shù)就是調(diào)用自己的函數(shù)。寫(xiě)遞歸函數(shù)時(shí)一定要十分小心,因?yàn)樗难h(huán)次數(shù)不確定。你必須確保有足夠的條件結(jié)束遞歸過(guò)程。下面是一個(gè)簡(jiǎn)單的遞歸函數(shù)記數(shù)到10:

      Function Test() {
       static $count=0;
       $count++;
       echo $count;
       if($count < 10) {
         Test();
         }
       。

(二) 動(dòng)態(tài)變量

  有時(shí)使用可變的變量名比較方便。就是說(shuō),一個(gè)能夠被動(dòng)態(tài)賦值和使用的變量名。一個(gè)普通變量的賦值語(yǔ)句如:

    $a = "hello";

  一個(gè)動(dòng)態(tài)變量引用該變量的值作為一個(gè)新變量的名字。在上面例中, hello,可以通過(guò)雙$用做變量名。例:

    $$a = "world";

至此,兩個(gè)變量被定義并存貯在PHP符號(hào)樹(shù)中: $a 的內(nèi)容是"hello",$hello 的內(nèi)容是 "world"。 因此,語(yǔ)句: echo "$a ${$a}"; 的顯示結(jié)果完全等同于: echo "$a $hello";

(三)PHP外部變量

1、HTML表單(GET和POST)

  當(dāng)一個(gè)表單提交給PHP3 script時(shí),PHP會(huì)自動(dòng)得到表單中的變量。例如:  
      Name:

      
當(dāng)按下"submit"后,PHP3會(huì)自動(dòng)產(chǎn)生變量:$name,其中包含了用戶輸入的所有內(nèi)容。

2、IMAGE SUBMIT 變量名

  當(dāng)提交一個(gè)表單時(shí),可以通過(guò)下面標(biāo)記用一副圖代替標(biāo)準(zhǔn)的提交按鈕:

當(dāng)用戶點(diǎn)擊該圖時(shí),兩個(gè)附加變量sub_x和sub_y就會(huì)伴隨表單一起送到server上。其中包含了用戶在圖上點(diǎn)擊處的坐標(biāo)。有經(jīng)驗(yàn)的人可能注意到瀏覽器實(shí)際送出的名字包含一個(gè)句號(hào)而不是下劃線,但PHP自動(dòng)將句號(hào)轉(zhuǎn)換成了下劃線。

3、HTTP Cookies

  PHP支持HTTP cookies。Cookies在客戶端瀏覽器存儲(chǔ)數(shù)據(jù),以此和用戶保持聯(lián)絡(luò)或驗(yàn)證用戶身份。你可以使用setcookie() 函數(shù)來(lái)設(shè)置cookies。 Cookies是HTTP請(qǐng)求頭的一部分,所以必須在任何輸出數(shù)據(jù)返回給用戶瀏覽器前調(diào)用SetCookie()函數(shù)。它類似于 Header() 函數(shù)的限制。任何用戶端返回的cookies都將被自動(dòng)轉(zhuǎn)換為標(biāo)準(zhǔn)的PHP變量,就象GET和POST方法的數(shù)據(jù)。

  如果要在一個(gè) cookie中設(shè)置多個(gè)值,要給這個(gè)cookie的名字加上 [] ,例如:

    SetCookie("MyCookie[]","Testing", time()+3600);

  注意:新的cookie將覆蓋掉你的瀏覽器中已有的同名cookie,除非它們具有不同的路徑或域。

文章評(píng)論

關(guān)于本站 | 網(wǎng)站幫助 | 廣告合作 | 下載聲明 | 友情連接 | 網(wǎng)站地圖
Copyright © 20098-2010 uzzf下載站. All Rights Reserved .