一、PHP安裝設置 PHP可以在多種操作系統下運行,現在的操作系統主要分為兩類,一是Windows系列,一是UNIX系列。 在這兩個系列的操作系統中安裝設置PHP的運行環境是有很大的區別的,下面分別加以描述。 ##2 (一)類UNIX操作系統下安裝設置 目前市面上流行的兩大類免費的類UNIX操作系統FreeBSD和Linux,Linux系統比較流行,而且種類也挺多,如RedFlag,RedHat等系統。而FreeBSD只有一種類型,目前其Release版本是3.5,在這里以FreeBSD為例介紹類UNIX操作系統下的PHP安裝設置過程,Linux與FreeBSD是相似的。 1.安裝 首先到www.php.net去下載PHP的安裝文件和http://www.apache.org 下載Apache WEB服務器。一般把下載文件放入/usr/目錄下。 接下來開始安裝設置,讀者如不明白這些參數的意義,請不要隨意改變。 先安裝Apache和PHP。 tar -vzxf apache_1.3.x --x代表版本號如12或13等 tar -vzxf php-4.0.x或tar -vzxf php-3.0.x cd apache_1.3.x ./configure --prefix=/www --/www代表安裝目錄在根目錄www下 cd ../php-4.0.x或cd ../php-3.0.x ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars make make install cd ../apache_1.3.x PHP3:./configure --activate-module=src/modules/php3/libphp3.a PHP4:./configure --activate-module=src/modules/php4/libphp4.a make make install 第一、二行命令利用tar將下載的壓縮文件檔解壓還原在同名目錄下,然后在 Apache 的解壓目錄下進行環境設定,--prefix 選項代表 Apache 的安裝目錄路徑。然后進入 PHP 的解壓目錄中,進行PHP的環境設定,如果沒有使用 MySQL 數據庫,就可省略 --with-mysql 的選項,但一定要加入 --with-apache 選項,而且 Apache解壓目錄名一定要正確。設定完 PHP 之后就編譯、安裝到 Apache 的指定目錄中。然后在 Apache 解壓目錄中再完成 PHP 的模式庫安裝后,再編譯和安裝 Apache 后就初步完成了安裝工作。接著就是要設定 Apache 才能讓 Web Server 順利運作。 2.設置 首先設置php.ini文件, cd ../php-4.0.x或cd ../php-3.0.x PHP3:cp php3.ini-dist /usr/local/lib/php3.ini PHP4:cp php.ini-dist /usr/local/lib/php.ini 讀者可以編輯ini文件以符合自己要求,當然如果不清楚設置的話,則使用缺省設置,讀者也可以指定另一個目錄,但需要在第六步設定條件--with-config-file-path=/path接著設定Apache服務器,需要在Apache的設定文件httpd .conf或srm.conf中加入下面的字串。 PHP 3: AddType application/x-httpd-php3 .php3 PHP 4: AddType application/x-httpd-php .php 讀者也可以設定另外的后綴名作為php的文件名。 ##2 (二) Windows下的安裝 下載PHP的安裝程序,準備安裝,因為Windows系列的安裝區別不大,本文以Windows 98下的安裝為例。在安裝前你應該已經安裝好了PWS 4.0。 1.安裝 釋放壓縮文件到指定的目錄如C:\PHP\,然后復制php.ini-dist或php.ini-optimized到c:\windows目錄中(Windows NT和Windows 2000中應為c:\winnt),并且重命名為php.ini 。 編輯你的php.ini文件,你可以改變extension_dir的設置為你的php的安裝路徑,如上面所說的“c:\php”,選擇你要加裝的php的擴展模塊,在ini文件里的extension=后面加入php_*.dll行,你也可以在腳本(script)里動態加載。PHP也提供了一些可以提供其它功能的附加模塊,可以從相關網站下載。 2.設置 以上步驟完成以后,需要注意檢查是否安裝了DCOM98,如果沒有,還要安裝DCOM98,這可以在完整版的VB6中找到。還需要設置注冊表,一般在下載的PHP壓縮包里含有名為PWS-php4.reg的注冊表文件。需要先用記事本修改這個文件,把其中的“[PUT PATH HERE]”替換為PHP的解壓目錄,需要注意目錄分隔要用雙斜線“\\”。存盤后在右鍵菜單中把它合并到注冊表中就行了。 3.PHP附加庫(擴展模塊) 為了擴展PHP的功能,PHP提供了許多附加庫,這些附加庫都是以DLL文件的形式提供的,在使用前需要修改php.ini文件,用Extention設置所需的附加庫。下表是常用的附加庫,更多的附加庫可以到網上下載。 Php_calendar.dll 日歷轉換 php_crypt.dll 加密模塊 php_dbase.dll Dbase的函數模塊 php_imap4r2.dll IMAP 4 函數 php_ldap.dll LDAP函數 php_msql1.dll mSQL 1客戶 php_msql2.dll mSQL 2客戶 php_mssql.dll MSSQL 客戶 php3_mysql.dll(PHP 4內建) MySQL 的函數模塊 php_nsmail.dll Netscape郵件函數 php_oci73.dll Oracle函數模塊 php_zlib.dll ZLib函數模塊 ##1 二、PHP語言入門 PHP腳本語言的使用并不難,如果有其它程序設計語言基礎,可以很快掌握,即使沒有其它語言基礎經過稍多的學習也可以輕易掌握它。PHP有一個比較方便的專用編輯器PHPEditor可供使用,也可用UltraEdit、Editplus這樣的編輯器,根據你的喜好選擇。 ##2 (一)語法基礎 1.如何在頁面嵌入PHP代碼 PHP可以嵌入到HTML的代碼中間,也就是說可以把HTML和PHP代碼混合在一起使用,這樣寫起代碼會很愜意的。當然要有能區分PHP代碼和HTML的方法,可以使用以下4種方法: (1)<? echo (“這是最常用的方式”); ?> (2)<?php echo(“如果你想服務于XML文檔就是用這種方式”); ?> (3)<script language=“php”> echo (“指定腳本語言的方式”); </script> (4)<% echo (“你也可以象ASP的風格一樣寫”); %> 上面第(1)種第(4)種方式在Windows 98下需要單獨設置才能使用。 2.程序的注釋和如何結束語句 在PHP程序里,注釋有如下三種注釋方式: (1)/* 第一行 第二行 多行注釋 */ (2)// 單行注釋 (3)# 單行注釋 上面這三種注釋可以混合使用,讀者可以根據習慣選用,需要注意的是多行注釋不能嵌套多行注釋。 PHP語句之間使用“;” 分隔,它也是語句結束符。 3.小小的范例 我們了解了PHP簡單的編碼規范,現在可以編寫一個簡單的范例如下: <html> <head> <title>第一個PHP程序</title> </head> <body> <?php echo “你好,這是我第一個PHP程序”; ?> </body> </html> 上面的例子實際上是一個標準的HTML的頁面,因為PHP是解釋執行的,所以只需把此文件放如我們設好的PHP環境里,就可以在瀏覽器上看到“你好,這是我第一個PHP程序”。 ##2 (二)常量和變量 首先看下面一個實例 范例:test2_1.php <?php //常量的演示 echo “_FILE_”; //輸出:test2_1.php echo “這是一個常量”; //輸出:這是一個常量 define(“THECONSTANT”,“這是一個自定義的常量”); echo THECONSTANT; //輸出:這是一個自定義的常量 //變量的演示 $StrOutput=“這是一個變量”; echo $StrOutput; //輸出:這是一個變量 echo “變量是這樣誕生的:$StrOutput”; //輸出:變量是這樣誕生的:這是一個變量 echo “問題是這樣出現的:$StrOutPut”; //輸出:問題是這樣出現的: ?> 可以從以上的范例看出,在編寫PHP文件的時候,可以省略HTML標頭。 1.常量 上例中“_FILE_”就是一個常量,而這個常量是PHP系統內定的,就是代表PHP的當前文件名,當然還有很多的常量,象“TRUE”、“FALSE”等,讀者如果需要的話可以去PHP的官方網站查詢;如果覺得常量不夠使用的話,也可以自己定義常量,就象上例的define(“常量名”,“常量的取值”)這種方式定義常量。 2.變量 PHP的變量是非常有意思的,上例中“$StrOutput”就是一個變量,可以看到變量前面都有一個“$”(美元)符號,所以非常好區分變量和程序里別的語句,同時PHP中的變量是可以不用預先定義而直接在代碼里引用的,而且使用了“$”這樣的符號,可以使我們的程序獲得更大的自由,不但可以象平常一樣引用變量,還可以在一個字符串里直接寫,而PHP能自動獲得變量的值,但是PHP對大小寫區分很嚴格,在上面的例子中就很清楚的說明了這一點。 (1)變量的作用范圍 PHP里的變量可以直接引用,我們定義了一個頁面級的變量,它和在函數里的同名變量之間有什么關系?這就是變量的作用范圍問題,如下例: 范例test2_2.php <?php $strtest="你說"; function output1() { echo $strtest; } function output2() { global $strtest; echo $strtest; } output1(); //輸出: output2(); //輸出:你說 ?> 從上例可以看出,PHP如果直接在函數中引用與頁面變量同名的變量,它會認為函數的變量是一個新的變量,當然什么也不輸出,但如果我們在其前面增加一個“global”的話,就可以得到頁面的同名變量的值,另一種同樣的方法是$GLOBALS["strtest"]; (2)變量的變量 在php中變量與許多常用語言最大的區別就是增加了一個‘$’前綴,為什么單獨拿出來講呢?因為有了這一個前綴,同樣增加了PHP的獨特的一種處理方式,一個前綴代表普通的變量,但是兩個前綴呢?這就是變量的變量,這樣說大家可能有些不明白,請看下例。 范例:test2_3.php <? $name=″hello″; $$name=″world″; //等同于$hello=″world″; echo ″$name $hello″; //輸出:hello world echo ″$name $$name″; //同樣輸出:hello world for($i=1;$i<=5;$I++) { ${var."$i"}=$i; } echo $var3; //輸出:3 ?> 大家從上面的例子基本上可以理解$$name了,PHP的標準定義則是${$name}。我們有了變量的變量就可以實現動態增加變量了,這簡直就是神奇。 (3)變量的類型 學過其它語言的讀者會發現PHP定義的變量怎么沒有定義類型呢?實際上PHP定義的變量缺省是沒有類型的,變量在使用時由PHP自動自動確定變量的類型。就象下例演示的一樣。 范例test2_4.php: <? php $strtype="字符串"; /*添加字符串*/ $strtype=$strtype."再增加一些字符串 "; /* 另一種增加字符串方式,并換行*/ $str .= "\n第二行的字符串"; /* 得到第一個字符*/ $strtype='This is a test.'; $first = $str[0]; //輸出:T /*得到最后一個字符*/ $strtype='This is still a test.'; $last=$str[strlen($str)-1]; //輸出:. //整數類型例子 $strtwo="2.5test"; $inttype=1; echo ($inttype+$strtwo) //輸出:3.5 echo ("$inttype".$strtwo) //輸出:12.5test //浮點數 $float1 = 1.732; $float2 = 1.4E+2; ?> 這樣大家可以看出$strtype實際上是一個字符串型的變量,PHP支持五種變量類型:String、Integer、Floating-point numbers (Double)、Array、Object。 String是字符串類型。字符串變量是最常用的類型,兩個字符串連接符則是".",從上面的例子可以看出,PHP支持以“\”后面的有特殊意義的字符,如“\n”代表回車。 integer 為整數類型。在 32 位的操作系統中,它的有效范圍是 -2,147,483,648 到 +2,147,483,647。要使用 16 進制數可以在前面加 0x。 double 為浮點數類型。在 32 位的操作系統中,它的有效范圍是 1.7E-308 到 1.7E+308。對象和數組這兩種類型比較復雜,請看函數和類。 我們也可以使用settype(變量,數據類型)函數強制轉換數據類型,使用gettype(變量)獲得變量類型。也允許這樣強制轉換$inttype = (int) $strtype;。 ##2 (三)運算符 1.算術運算符 算術運算 (arithmetic operators) 符號,是用來處理四則運算的符號,這是最簡單,也最常用的符號,幾乎所有語言的算術運算符都差不多,如^00100010a^。 2.邏輯運算符 邏輯運算通常用來獲得邏輯值的真假,在所有的編程語言里,邏輯運算符是非常重要的,邏輯運算符如^00100010b^所示。 3.關系運算符 關系運算就是比較大小用的,如^00100010c^所示。 4.位運算符 PHP有下面一些二進制位運算符如^00100010d^。 5.運算符的優先級 不同的運算符在同一行程序里有不同的運算順序,PHP程序里的運算順序如^00100010e^,越往下表明運算符的優先級別越高,同時應注意結合規則。 ##2 (四)流程控制語句 編程人員最基本的工作之一就是要告訴計算機下一步的動作,而流程控制語句正是這方面讓計算機做出選擇,流程控制語句就象一個灌溉田地的水渠,在通過各個分岔時引導程序走向我們要求的地點。 1.if條件語句 if條件語句是我們最常用的一種分支語句,用法也符合人們思維的習慣,就想:if如果 expression(熊倪跳水得了最高分)是真的話 statements可以拿到金牌 else(否則)statements薩烏丁拿金牌。它在定義上有三種形式: (1)第一種最簡單的形式。 if (expression) statement; (2)第二種帶有else(否則)的形式。 if (expression) { statement1; } else { statement2; } (3)第三種帶有elseif的形式。 if (expression) { statement1; } elseif { statement2; } else{ statement3; } if條件語句是允許嵌套的,也就是在if語句中含有另外的if語句,但要注意嵌套層次,否則不能得到想要的結果。 2.循環語句 有時我們需要一遍一遍的重復做相同的事,如果我們都要一次一次的去做的話,是非常頭疼的事,在計算機中則有專門的循環語句來做這些事情,當然這也是計算機的一個強項。 循環語句象一個圓,從開始到結束可以一遍一遍的執行,但最好不能是圓,否則我們會陷入死循環。因此,我們使用循環語句的時候,要有一個良好的出入口。 循環一般可以分為以下幾種。 (1)while循環,也叫“當型循環”,就是說“當條件為真就執行循環體”,在PHP中的定義如下: while (expression) {statement} 這種循環先判斷表達式為真再執行,可能一次也不執行。 (2)do while循環叫做“直到型循環”,它最少執行一次,意思就是“先執行循環體直到條件為真才退出”,PHP的定義為 do { statement } while (expr); 上面兩種循環都是不知道循環的次數,或者在條件比較模糊的情況下使用。 (3)for循環,在PHP4中有兩種for循環,一是for,另一是foreach循環。他們主要的區別在于: for循環用于循環次數已知的循環; foreach則是針對數組和散列的循環; for循環的PHP定義如下: for (expr1; expr2; expr3) { statement } 下面是一個簡單的例子: <?php for ($i = 1; $i <= 10; $i++) { echo $i; } ?> PHP有數組和散列,后面介紹它們的概念,數組元素個數沒有固定,如果要訪問每一個元素,用foreach可以從第一個元素訪問到最后一個元素,這樣我們可以不必求出元素的個數,就能遍歷整個數組,在PHP中foreach循環的定義如下: foreach(array_expression as $value) statement //普通數組 foreach(array_expression as $key => $value) statement //散列 請做一下下面的例子: <?php // foreach例一 $a = array (1, 2, 3, 17); foreach ($a as $v) { echo "Current value of \$a: $v.\n"; } // foreach例二 $a = array (1, 2, 3, 17); $i = 0; foreach($a as $v) { echo "\$a[$i] => $k.\n"; } // foreach例三 $a = array ( "one" => 1, "two" => 2, "three" => 3, "seventeen" => 17 ); foreach($a as $k => $v) { echo "\$a[$k] => $v.\n"; } 3.SWITCH多條件語句 在學習if條件語句時,我們注意到如果條件非常復雜的時候,就象我們排一個日程表時,如果再使用if語句就會非常的麻煩,而且程序不易閱讀,這時我們推薦使用SWITCH語句,實際上一般只要是復合的條件都可以使用SWITCH語句,因為它能幫助我們編出結構清晰和比較容易改變條件表達式,PHP定義如下: switch (expression) { case condition1: statement1; break; case condition2: statement2; break; ...... default: statement n; break; } 這時要介紹兩個特殊的流程控制語句:break和continue。 break是可以跳出當前循環體的語句,而continue則是從當前執行continue語句處跳到執行條件判斷的地方繼續執行,如下例子: <?php For($I=1;$I<=10;$I++) { if ($I==1) continue; echo "測試:".$I; if ($I==2) break; } ?> 上面的程序輸出則是:測試:2,而且永遠也執行不到$I=3。 4.引用文件 在我們編程的過程中,肯定會遇到很多的地方需要許多相同的模塊或者函數,當然我們也可以使用復制和粘貼的方法把程序塊放入到程序里,而一旦我們要修改這些語句中的一處,則必須修改所有粘貼的代碼,這當然很累,所幸PHP提供了引用文件的方法,他們就是require,require-once,include,include-once。require方法會程序在執行前先讀入 require 所指定引用的文件,使它變成 PHP 程序網頁的一部份。而PHP的include方法則是PHP 的網頁在遇到 include 所指定的文件時,才將它讀進來。這種方式,更符合人們的習慣。 在我們編程時有時還會遇到這樣一個問題,在我們極力保證函數和類的獨立性和公用性的同時,而如果在程序里面我們調用了一個非公用文件里的類,但我們的另一個處理文件也調用了這個文件里的這個類,那么程序將會出錯,說是重定義了這個類,因此,我們將不得不去重寫文件或者丟棄它的獨立性,但在PHP4里不存在這個問題,因為PHP4可以使用require-once和include-once方法,顧名思義也就是他們只調用一次我們所需要的文件,如果有兩次調用文件的話,第二次調用的文件不起作用。 ##2 (五)數組 經過上面的學習,我們基本具有了使用PHP編程的條件,而我們所學的也是一切編程的基礎,但若想更進一步,就需了解更強大的數據類型:數組。 假如變量是可以放入一本書的盒子的話,那么數組就是可以放許多書的書架,在PHP中不止可以放書,還可以放別的物品。 1.普通數組 我們在C、VB等語言里使用的數組,都是以數字作為下標來索引數組的值,在PHP中是這樣表示的:$a[1]=1,$a[2]=2...$a[n],雖然PHP的普通數組比C語言在數據類型方面前進了一大步(C語言里可以使用結構代替),而真正比C語言優越的是引入了哈希表(hash table聯合數組)。 2.哈希表(聯合數組) 可能大家這時候對哈希表數組,還是不太了解,實際上在C語言里我們使用了枚舉的數據類型,就是譬如我們定義了星期的枚舉變量,我們可以讓這個枚舉里含有星期一到星期日的名字,這樣我們就可以直接引用星期的名字也能得到正確的值了,但是枚舉需要預定義,數量也是定義好的,才能引用,在PHP將其歸類到了這種聯合數組,也就是說我們的下標不必非采用數字,這樣數組的下標也成了我們可以發揮的地方。請看下例 范例: <?php $a[1]= $f; //普通數組 $a["apple"]= "sweet"; //聯合數組 $a[1][0]= $f; //二維數組 $a["apple"][2]="tart"; //普通數組和聯合數組連用 $a["apple"][4]["color "][0]= "bad"; //四維數組 ?> 實際上數組的維數最好不要超過三維,否則會給服務器帶來極大的負擔,就有些得不償失了。 ##2 (六)函數 函數就是能執行特定功能的語句塊。在這些年編程語言發展的趨勢就是代碼的重用性和結構清晰,象C的輸入輸出等就是用函數來完成的,在PHP里也是這樣的,函數在PHP運用非常廣泛,也是各種PHP函數使PHP變為強大的WEB編程腳本語言的原因之一,我們在前面的學習的過程中也遇到了不少,如“echo”、“require”等,而我們可以通過用戶定義的函數使程序結構變得更清晰、更合理以及代碼更簡潔。PHP已經預定義了大量的函數,讀者需要詳細資料的話可以查詢PHP的網站,而我們這里主要講的是如何定義使用用戶定義的函數。 1.用戶定義函數 用戶在解決一些問題時需要用戶多次完成同樣的工作,還有就是PHP沒有解決的功能等這些問題,我們則提倡使用函數。PHP定義函數的方式,沒有象變量定義那樣非常嚴格,在這里大小寫可以混用,可以在定義的時候使用大寫,使用的時候用小寫的函數名,從這點上可以看出PHP是非常地為編程人員著想,PHP的函數定義如下 function 函數名(參數1,參數2,...) { 語句塊 return 返回值} PHP的函數可以有返回值,也可以沒有返回值,這樣可以省略上面的返回語句。 2.參數 <?php $str=″我是參數1″; $str2=″我是參數2″; function testFunc($testarg1,testarg2,testarg3=″我是測試″) { echo $testarg1.″\n″; echo $testarg2.″\n″; echo $testarg3.″\n″; $testarg1=$testarg1.″測試″; $testarg2=$testarg2.″測試″; } testfunc($str,&$str2); echo $str.″\n″; echo $str2.″\n″; /* 調用里后輸出: 我是參數1 我是參數2 我是測試 我是參數1 我是參數2測試 */ ?> 請注意看上面的函數,PHP的參數使用比較靈活,我們可以象C里面一樣使用“&”引用參數,在函數里改變參數的值的話,就直接改變了這個變量的值,也可定義參數的缺省值,這樣可以在需要的時候省略參數。 InstallShield 5.1由InstallShield公司開發,它提供了全面的軟件安裝盤制作技術。InstallShiteld 5.1與舊版本相比采用了全新的集成開發環境(IDE),使用戶僅通過鼠標就能完成安裝盤的制作。InstallShiteld 5.1分為測試版、普通版和國際版,其中國際版支持用戶在安裝過程中使用本地語言文字。下面將介紹InstallShiteld 5.1國際版的使用方法。 ##1 一、InstallShiteld 5.1的安裝與卸載 1.安裝的系統要求如^00100011a^ 2.安裝操作步驟如^00100011b^ 3.卸載InstallShiteld 5.1 安裝完成后,安裝程序除了將主要程序文件復制到指定的目標文件夾外,還將部分DLL文件復制到Windows的系統目錄中,并自動在C盤根目錄下建立一個名為“My Installations”的文件夾,作為所制作的安裝工程的默認存放位置。在卸載前,先將該目錄下的工程進行備份,再打開Windows控制面板中的“添加/刪除程序”,選擇“InstallShield 5.1 Professional Edition”,單擊“添加/刪除”,確認后即可完成卸載。
|