- 相關(guān)推薦
PHP高級教程
努力向上的開拓,才使彎曲的竹鞭化作了筆直的毛竹。以下是小編為大家搜索整理了PHP高級教程,希望能給大家?guī)韼椭?更多精彩內(nèi)容請及時關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
PHP 高級教程 PHP Date()PHP 的 date() 函數(shù)用于格式化時間或日期。 函數(shù)用于格式化時間或日期。PHP Date() 函數(shù)PHP Date() 函數(shù)可把時間戳格式化為可讀性更好的日期和時間。語法date(format,timestamp) 參數(shù) format timestamp 描述 必需。規(guī)定時間戳的格式。 可選。規(guī)定時間戳。默認(rèn)是當(dāng)前的日期和時間。PHP 日期 - 什么是時間戳(Timestamp)? 什么是時間戳( )?時間戳是自 1970 年 1 月 1 日(00:00:00 GMT)以來的秒數(shù)。它也被稱為 Unix 時間戳(Unix Timestam) 。PHP 日期 - 格式化日期date() 函數(shù)的第一個參數(shù)規(guī)定了如何格式化日期/時間。它使用字母來表示日期和時間的格式。這里列出 了一些可用的字母: ? ? ? d - 月中的天 (01-31) m - 當(dāng)前月,以數(shù)字計 (01-12) Y - 當(dāng)前的年(四位數(shù))您可以在我們的 PHP Date 參考手冊中,找到格式參數(shù)中可以使用的所有字母?梢栽谧帜钢g插入其他字符,比如 "/"、"." 或者 "-",這樣就可以增加附加格式了:
echo date("Y-m-d"); ?>以上代碼的輸出類似這樣:2006/07/11 2006.07.11 2006-07-11PHP 日期 - 添加時間戳date() 函數(shù)的第二個參數(shù)規(guī)定了一個時間戳。此參數(shù)是可選的。如果您沒有提供時間戳,當(dāng)前的時間將被 使用。在我們的例子中,我們將使用 mktime() 函數(shù)為明天創(chuàng)建一個時間戳。mktime() 函數(shù)可為指定的日期返回 Unix 時間戳。語法mktime(hour,minute,second,month,day,year,is_dst)如需獲得某一天的時間戳,我們只要設(shè)置 mktime() 函數(shù)的 day 參數(shù)就可以了:以上代碼的輸出類似這樣:明天是 2006/07/12PHP 引用文件用于創(chuàng)建可在多個頁面重復(fù)使用的函數(shù)、頁眉、頁腳或元素。 服務(wù)器端引用 (SSI) 用于創(chuàng)建可在多個頁面重復(fù)使用的函數(shù)、頁眉、頁腳或元素。
服務(wù)器端引用( 服務(wù)器端引用(Server Side Includes) )通過 include() 或 require() 函數(shù),您可以在服務(wù)器執(zhí)行 PHP 文件之前在該文件中插入一個文件的內(nèi) 容。除了它們處理錯誤的方式不同之外,這兩個函數(shù)在其他方面都是相同的。include() 函數(shù)會生成一個 警告(但是腳本會繼續(xù)執(zhí)行) ,而 require() 函數(shù)會生成一個致命錯誤(fatal error) (在錯誤發(fā)生后腳本 會停止執(zhí)行) 。這兩個函數(shù)用于創(chuàng)建可在多個頁面重復(fù)使用的函數(shù)、頁眉、頁腳或元素。這會為開發(fā)者節(jié)省大量的時間。這意味著您可以創(chuàng)建供所有網(wǎng)頁引用的標(biāo)準(zhǔn)頁眉或菜單文件。當(dāng)頁眉需要 更新時,您只更新一個包含文件就可以了,或者當(dāng)您向網(wǎng)站添加一張新頁面時,僅僅需要修改一下菜單文 件(而不是更新所有網(wǎng)頁中的鏈接) 。include() 函數(shù)include() 函數(shù)可獲得指定文件中的所有文本,并把文本拷貝到使用 include 函數(shù)的文件中。例子 1 假設(shè)您擁有一個標(biāo)準(zhǔn)的頁眉文件, 名為 "header.php"。 如需在頁面中引用這個頁眉文件, 請使用 include() 函數(shù),就像這樣:
Welcome to my home page
Some text
例子 2 現(xiàn)在,假設(shè)我們有一個在所有頁面上使用的標(biāo)準(zhǔn)菜單文件。請看下面這個 "menu.php":
Home | About Us | Contact Us三個文件,"default.php"、"about.php" 以及 "contact.php" 都引用了 "menu.php" 文件。這是 "default.php" 中的代碼:
Welcome to my home page
Some text
如果您在瀏覽器中查看 "default.php" 的源代碼,應(yīng)該類似這樣: Home | About Us | Contact Us
Welcome to my home page
Some text
同時,當(dāng)然,我們也將用相同的方法處理 "about.php" 和 "contact.php"。通過使用引用文件,在您需 要重命名鏈接、更改鏈接順序或向站點添加另一張網(wǎng)頁時,只要簡單地更新 "menu.php" 文件中的文本 即可。require() 函數(shù)require() 函數(shù)與 include() 相同,不同的是它對錯誤的處理方式。include() 函數(shù)會生成一個警告(但是腳本會繼續(xù)執(zhí)行) ,而 require() 函數(shù)會生成一個致命錯誤(fatal error) (在錯誤發(fā)生后腳本會停止執(zhí)行) 。如果在您通過 include() 引用文件時發(fā)生了錯誤,會得到類似下面這樣的錯誤消息:PHP 代碼: 代碼: 錯誤消息: 錯誤消息:Warning: include(wrongFile.php) [function.include]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5Warning: include() [function.include]: Failed opening 'wrongFile.php' for inclusion
(include_path='.;C:\php5\pear') in C:\home\website\test.php on line 5Hello World!請注意,echo 語句依然被執(zhí)行了!這是因為警告不會中止腳本的執(zhí)行,F(xiàn)在,讓我們使用 require() 函數(shù)運行相同的例子。PHP 代碼: 代碼: 錯誤消息: 錯誤消息:Warning: require(wrongFile.php) [function.require]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5Fatal error: require() [function.require]: Failed opening required 'wrongFile.php' (include_path='.;C:\php5\pear') in C:\home\website\test.php on line 5
由于在致命錯誤發(fā)生后終止了腳本的執(zhí)行,因此 echo 語句不會執(zhí)行。正因為在文件不存在或被重命名后腳本不會繼續(xù)執(zhí)行, 正因為在文件不存在或被重命名后腳本不會繼續(xù)執(zhí)行,因此我們推薦使用 require() 而不是 include()。 。PHP 文件處理fopen() 函數(shù)用于在 PHP 中打開文件。 中打開文件。打開文件fopen() 函數(shù)用于在 PHP 中打開文件。此函數(shù)的第一個參數(shù)含有要打開的文件的名稱,第二個參數(shù)規(guī)定了使用哪種模式來打開文件: 文件可能通過下列模式來打開: 模式 r r+ w w+ a 只讀。在文件的開頭開始。 讀/寫。在文件的開頭開始。 只寫。打開并清空文件的內(nèi)容;如果文件不存在,則創(chuàng)建新文件。 讀/寫。打開并清空文件的內(nèi)容;如果文件不存在,則創(chuàng)建新文件。 追加。打開并向文件文件的末端進(jìn)行寫操作,如果文件不存在, 則創(chuàng)建新文件。 a+ x 讀/追加。通過向文件末端寫內(nèi)容,來保持文件內(nèi)容。 只寫。創(chuàng)建新文件。如果文件以存在,則返回 FALSE。 描述
x+讀/寫。創(chuàng)建新文件。如果文件已存在,則返回 FALSE 和一個錯 誤。 注釋:如果 fopen() 無法打開指定文件,則返回 0 (false)。例子 如果 fopen() 不能打開指定的文件,下面的例子會生成一段消息: 關(guān)閉文件fclose() 函數(shù)用于關(guān)閉打開的文件。檢測 End-of-filefeof() 函數(shù)檢測是否已達(dá)到文件的末端 (EOF)。在循環(huán)遍歷未知長度的數(shù)據(jù)時,feof() 函數(shù)很有用。
注釋: 注釋:在 w 、a 以及 x 模式,您無法讀取打開的文件!if (feof($file)) echo "End of file";逐行讀取文件fgets() 函數(shù)用于從文件中逐行讀取文件。注釋: 注釋:在調(diào)用該函數(shù)之后,文件指針會移動到下一行。例子 下面的例子逐行讀取文件,直到文件末端為止:逐字符讀取文件fgetc() 函數(shù)用于從文件逐字符地讀取文件。注釋: 注釋:在調(diào)用該函數(shù)之后,文件指針會移動到下一個字符。例子 下面的例子逐字符地讀取文件,直到文件末端為止:
} fclose($file); ?>PHP 文件上傳通過 PHP,可以把文件上傳到服務(wù)器。 ,可以把文件上傳到服務(wù)器。創(chuàng)建一個文件上傳表單允許用戶從表單上傳文件是非常有用的。請看下面這個供上傳文件的 HTML 表單:
Filename:
請留意如下有關(guān)此表單的信息:
標(biāo)簽的 enctype 屬性規(guī)定了在提交表單時要使用哪種內(nèi)容類型。在表單需要二進(jìn)制數(shù)據(jù)時,比 如文件內(nèi)容,請使用 "multipart/form-data"。 標(biāo)簽的 type="file" 屬性規(guī)定了應(yīng)該把輸入作為文件來處理。 舉例來說, 當(dāng)在瀏覽器中預(yù)覽時, 會看到輸入框旁邊有一個瀏覽按鈕。
注釋: 注釋:允許用戶上傳文件是一個巨大的安全風(fēng)險。請僅僅允許可信的用戶執(zhí)行文件上傳操作。創(chuàng)建上傳腳本"upload_file.php" 文件含有供上傳文件的代碼: 0) { echo "Error: " . $_FILES["file"]["error"] . "
"; } else { echo "Upload: " . $_FILES["file"]["name"] . "
"; echo "Type: " . $_FILES["file"]["type"] . "
"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?>通過使用 PHP 的全局?jǐn)?shù)組 $_FILES,你可以從客戶計算機(jī)向遠(yuǎn)程服務(wù)器上傳文件。第一個參數(shù)是表單的 input name,第二個下標(biāo)可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣: ? ? ? ? ? $_FILES["file"]["name"] - 被上傳文件的名稱 $_FILES["file"]["type"] - 被上傳文件的類型 $_FILES["file"]["size"] - 被上傳文件的大小,以字節(jié)計 $_FILES["file"]["tmp_name"] - 存儲在服務(wù)器的文件的臨時副本的名稱 $_FILES["file"]["error"] - 由文件上傳導(dǎo)致的錯誤代碼這是一種非常簡單文件上傳方式;诎踩矫娴目紤],您應(yīng)當(dāng)增加有關(guān)什么用戶有權(quán)上傳文件的限制。上傳限制在這個腳本中, 我們增加了對文件上傳的限制。 用戶只能上傳 .gif 或 .jpeg 文件, 文件大小必須小于 20 kb:
0) { echo "Error: " . $_FILES["file"]["error"] . "
"; } else { echo "Upload: " . $_FILES["file"]["name"] . "
"; echo "Type: " . $_FILES["file"]["type"] . "
"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; }?>注釋: 注釋:對于 IE,識別 jpg 文件的類型必須是 pjpeg,對于 FireFox,必須是 jpeg。保存被上傳的文件上面的例子在服務(wù)器的 PHP 臨時文件夾創(chuàng)建了一個被上傳文件的臨時副本。這個臨時的復(fù)制文件會在腳本結(jié)束時消失。要保存被上傳的文件,我們需要把它拷貝到另外的位置:
0) { echo "Return Code: " . $_FILES["file"]["error"] . "
"; } else { echo "Upload: " . $_FILES["file"]["name"] . "
"; echo "Type: " . $_FILES["file"]["type"] . "
"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else
{ echo "Invalid file"; } ?>上面的腳本檢測了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。注釋: 注釋:這個例子把文件保存到了名為 "upload" 的新文件夾。PHP Cookiescookie 常用于識別用戶。 常用于識別用戶。什么是 Cookie? ?cookie 常用于識別用戶。cookie 是服務(wù)器留在用戶計算機(jī)中的小文件。每當(dāng)相同的計算機(jī)通過瀏覽器請 求頁面時,它同時會發(fā)送 cookie。通過 PHP,您能夠創(chuàng)建并取回 cookie 的值。如何創(chuàng)建 cookie? ?setcookie() 函數(shù)用于設(shè)置 cookie。注釋: 注釋:setcookie() 函數(shù)必須位于 標(biāo)簽之前。語法setcookie(name, value, expire, path, domain);例子 在下面的例子中,我們將創(chuàng)建名為 "user" 的 cookie,把為它賦值 "Alex Porter"。我們也規(guī)定了此 cookie 在一小時后過期:
注釋: 注釋:在發(fā)送 cookie 時,cookie 的值會自動進(jìn)行 URL 編碼,在取回時進(jìn)行自動解碼(為防止 URL 編 碼,請使用 setrawcookie() 取而代之) 。的值? 如何取回 Cookie 的值?PHP 的 $_COOKIE 變量用于取回 cookie 的值。在下面的例子中,我們?nèi)』亓嗣麨?"user" 的 cookie 的值,并把它顯示在了頁面上:在下面的例子中,我們使用 isset() 函數(shù)來確認(rèn)是否已設(shè)置了 cookie:
如何刪除 cookie? ?當(dāng)刪除 cookie 時,您應(yīng)當(dāng)使過期日期變更為過去的時間點。刪除的例子:該怎么辦? 如果瀏覽器不支持 cookie 該怎么辦?如果您的應(yīng)用程序涉及不支持 cookie 的瀏覽器,您就不得不采取其他方法在應(yīng)用程序中從一張頁面向另 一張頁面?zhèn)鬟f信息。一種方式是從表單傳遞數(shù)據(jù)(有關(guān)表單和用戶輸入的內(nèi)容,稍早前我們已經(jīng)在本教程 中介紹過了) 。下面的表單在用戶單擊提交按鈕時向 "welcome.php" 提交了用戶輸入:
Name: Age:
取回 "welcome.php" 中的值,就像這樣:
Welcome .
You are years old. PHP SessionsPHP session 變量用于存儲有關(guān)用戶會話的信息,或更改用戶會話的設(shè)置。Session 變量保存的信息 變量用于存儲有關(guān)用戶會話的信息,或更改用戶會話的設(shè)置。 是單一用戶的,并且可供應(yīng)用程序中的所有頁面使用。 是單一用戶的,并且可供應(yīng)用程序中的所有頁面使用。 所有頁面使用PHP Session 變量當(dāng)您運行一個應(yīng)用程序時,您會打開它,做些更改,然后關(guān)閉它。這很像一次會話。計算機(jī)清楚你是誰。 它知道你何時啟動應(yīng)用程序,并在何時終止。但是在因特網(wǎng)上,存在一個問題:服務(wù)器不知道你是誰以及 你做什么,這是由于 HTTP 地址不能維持狀態(tài)。通過在服務(wù)器上存儲用戶信息以便隨后使用, PHP session 解決了這個問題 (比如用戶名稱、 購買商品等) 。 不過,會話信息是臨時的,在用戶離開網(wǎng)站后將被刪除。如果您需要永久儲存信息,可以把數(shù)據(jù)存儲在數(shù) 據(jù)庫中。Session 的工作機(jī)制是: 為每個訪問者創(chuàng)建一個唯一的 id (UID), 并基于這個 UID 來存儲變量。 UID 存 儲在 cookie 中,亦或通過 URL 進(jìn)行傳導(dǎo)。開始 PHP Session在您把用戶信息存儲到 PHP session 中之前,首先必須啟動會話。注釋: 注釋:session_start() 函數(shù)必須位于 標(biāo)簽之前:
上面的代碼會向服務(wù)器注冊用戶的會話, 以便您可以開始保存用戶信息, 同時會為用戶會話分配一個 UID。存儲 Session 變量存儲和取回 session 變量的正確方法是使用 PHP $_SESSION 變量: 輸出:Pageviews=1在下面的例子中, 我們創(chuàng)建了一個簡單的 page-view 計數(shù)器。 isset() 函數(shù)檢測是否已設(shè)置 "views" 變 量。如果已設(shè)置 "views" 變量,我們累加計數(shù)器。如果 "views" 不存在,則我們創(chuàng)建 "views" 變量, 并把它設(shè)置為 1:
終結(jié) Session如果您希望刪除某些 session 數(shù)據(jù),可以使用 unset() 或 session_destroy() 函數(shù)。unset() 函數(shù)用于釋放指定的 session 變量:您也可以通過 session_destroy() 函數(shù)徹底終結(jié) session:注釋: 注釋:session_destroy() 將重置 session,您將失去所有已存儲的 session 數(shù)據(jù)。PHP 發(fā)送電子郵件PHP 允許您從腳本直接發(fā)送電子郵件。 允許您從腳本直接發(fā)送電子郵件。PHP mail() 函數(shù)PHP mail() 函數(shù)用于從腳本中發(fā)送電子郵件。
語法mail(to,subject,message,headers,parameters) 參數(shù) to subject 描述 必需。規(guī)定 email 接收者。 必需。規(guī)定 email 的主題。注釋:該參數(shù)不能包含任何新行 字符。 message headers 必需。定義要發(fā)送的消息。應(yīng)使用 LF (\n) 來分隔各行。 可選。規(guī)定附加的標(biāo)題,比如 From、Cc 以及 Bcc。 應(yīng)當(dāng)使用 CRLF (\r\n) 分隔附加的標(biāo)題。 parameters 可選。對郵件發(fā)送程序規(guī)定額外的參數(shù)。注釋: PHP 需要一個已安裝且正在運行的郵件系統(tǒng), 以便使郵件函數(shù)可用。 所用的程序通過在 php.ini 文 注釋: 件中的配置設(shè)置進(jìn)行定義。請在我們的 PHP Mail 參考手冊閱讀更多內(nèi)容。PHP 簡易 E-Mail通過 PHP 發(fā)送電子郵件的最簡單的方式是發(fā)送一封文本 email。在下面的例子中, 我們首先聲明變量($to, $subject, $message, $from, $headers), 然后我們在 mail() 函數(shù)中使用這些變量來發(fā)送了一封 e-mail:PHP Mail Form
通過 PHP, 您能夠在自己的站點制作一個反饋表單。 下面的例子向指定的 e-mail 地址發(fā)送了一條文本消 息:
?> 例子解釋: 例子解釋: 1 2 3 4 首先,檢查是否填寫了郵件輸入框 如果未填寫(比如在頁面被首次訪問時) ,輸出 HTML 表單 如果已填寫(在表單被填寫后) ,從表單發(fā)送郵件 當(dāng)點擊提交按鈕后,重新載入頁面,顯示郵件發(fā)送成功的消息PHP 安全的電子郵件腳本中,存在著一個漏洞。 在上一節(jié)中的 PHP e-mail 腳本中,存在著一個漏洞。PHP E-mail 注入首先,請看上一節(jié)中的 PHP 代碼:
else //if "email" is not filled out, display the form { echo "
Email:
Subject:
Message:
"; } ?> 以上代碼存在的問題是,未經(jīng)授權(quán)的用戶可通過輸入表單在郵件頭部插入數(shù)據(jù)。假如用戶在表單中的輸入框內(nèi)加入這些文本,會出現(xiàn)什么情況呢?someone@example.com%0ACc:person2@example.com %0ABcc:person3@example.com,person3@example.com, anotherperson4@example.com,person5@example.com %0ABTo:person6@example.com與往常一樣, mail() 函數(shù)把上面的文本放入郵件頭部, 那么現(xiàn)在頭部有了額外的 Cc:, Bcc: 以及 To: 字 段。當(dāng)用戶點擊提交按鈕時,這封 e-mail 會被發(fā)送到上面所有的地址!PHP 防止 E-mail 注入防止 e-mail 注入的最好方法是對輸入進(jìn)行驗證。下面的代碼與上一節(jié)類似,不過我們已經(jīng)增加了檢測表單中 email 字段的輸入驗證程序:
else {//send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } } else {//if "email" is not filled out, display the form echo "
Email:
Subject:
Message:
"; } ?> 在上面的代碼中,我們使用了 PHP 過濾器來對輸入進(jìn)行驗證: ? ? FILTER_SANITIZE_EMAIL 從字符串中刪除電子郵件的非法字符 FILTER_VALIDATE_EMAIL 驗證電子郵件地址您可以在我們的 PHP 過濾器這一節(jié)中閱讀更多有關(guān)過濾器的內(nèi)容。
PHP 錯誤處理默認(rèn)的錯誤處理很簡單。一條消息會被發(fā)送到瀏覽器,這條消息帶有文件名、 在 PHP 中,默認(rèn)的錯誤處理很簡單。一條消息會被發(fā)送到瀏覽器,這條消息帶有文件名、行號以及一條 描述錯誤的消息。 描述錯誤的消息。PHP 錯誤處理在創(chuàng)建腳本和 web 應(yīng)用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程 序看上去很不專業(yè),也為安全風(fēng)險敞開了大門。本教程介紹了 PHP 中一些最為重要的錯誤檢測方法。我們將為您講解不同的錯誤處理方法: ? ? ? 簡單的 "die()" 語句 自定義錯誤和錯誤觸發(fā)器 錯誤報告基本的錯誤處理: 基本的錯誤處理:使用 die() 函數(shù)第一個例子展示了一個打開文本文件的簡單腳本:如果文件不存在,您會獲得類似這樣的錯誤:Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in C:\webfolder\test.php on line 2為了避免用戶獲得類似上面的錯誤消息,我們在訪問文件之前檢測該文件是否存在:
{ $file=fopen("welcome.txt","r"); } ?>現(xiàn)在,假如文件不存在,您會得到類似這樣的錯誤消息:File not found比起之前的代碼,上面的代碼更有效,這是由于它采用了一個簡單的錯誤處理機(jī)制在錯誤之后終止了腳本。不過,簡單地終止腳本并不總是恰當(dāng)?shù)姆绞。讓我們研究一下用于處理錯誤的備選的 PHP 函數(shù)。創(chuàng)建自定義錯誤處理器創(chuàng)建一個自定義的錯誤處理器非常簡單。我們很簡單地創(chuàng)建了一個專用函數(shù),可以在 PHP 中發(fā)生錯誤時 調(diào)用該函數(shù)。該函數(shù)必須有能力處理至少兩個參數(shù) (error level 和 error message), 但是可以接受最多五個參數(shù) (可 選的:file, line-number 以及 error context) :語法error_function(error_level,error_message, error_file,error_line,error_context) 參數(shù) error_level 描述 必需。為用戶定義的錯誤規(guī)定錯誤報告級別。必須是一個值數(shù)。 參見下面的表格:錯誤報告級別。 error_message error_file error_line error_context 必需。為用戶定義的錯誤規(guī)定錯誤消息。 可選。規(guī)定錯誤在其中發(fā)生的文件名。 可選。規(guī)定錯誤發(fā)生的行號。 可選。規(guī)定一個數(shù)組,包含了當(dāng)錯誤發(fā)生時在用的每個變量以及 它們的值。錯誤報告級別
這些錯誤報告級別是錯誤處理程序旨在處理的錯誤的不同的類型: 值 2 8 常量 E_WARNING E_NOTICE 描述 非致命的 run-time 錯誤。不暫停腳本執(zhí)行。 Run-time 通知。 腳本發(fā)現(xiàn)可能有錯誤發(fā)生,但也可能在腳本正常運行時發(fā)生。 256 E_USER_ERROR 致命的用戶生成的錯誤。這類似于程序員使用 PHP 函數(shù) trigger_error() 設(shè)置的 E_ERROR。 512 E_USER_WARNI NG 1024 E_USER_NOTICE 非致命的用戶生成的警告。這類似于程序員使用 PHP 函數(shù) trigger_error() 設(shè)置的 E_WARNING。 用戶生成的通知。這類似于程序員使用 trigger_error() 設(shè)置的 E_NOTICE。 4096 E_RECOVERABL E_ERROR 8191 E_ALL 可捕獲的致命錯誤。類似 E_ERROR,但可被用戶定義的處理 程序捕獲。(參見 set_error_handler()) 所有錯誤和警告,除級別 E_STRICT 以外。 (在 PHP 6.0,E_STRICT 是 E_ALL 的一部分) PHP 函 數(shù)現(xiàn)在,讓我們創(chuàng)建一個處理錯誤的函數(shù):function customError($errno, $errstr) { echo "Error: [$errno] $errstr
"; echo "Ending Script"; die(); }上面的代碼是一個簡單的錯誤處理函數(shù)。當(dāng)它被觸發(fā)時,它會取得錯誤級別和錯誤消息。然后它會輸出錯 誤級別和消息,并終止腳本,F(xiàn)在,我們已經(jīng)創(chuàng)建了一個錯誤處理函數(shù),我們需要確定在何時觸發(fā)該函數(shù)。Set Error HandlerPHP 的默認(rèn)錯誤處理程序是內(nèi)建的錯誤處理程序。 我們打算把上面的函數(shù)改造為腳本運行期間的默認(rèn)錯誤 處理程序。
可以修改錯誤處理程序,使其僅應(yīng)用到某些錯誤,這樣腳本就可以不同的方式來處理不同的錯誤。不過, 在本例中,我們打算針對所有錯誤來使用我們的自定義錯誤處理程序:set_error_handler("customError");由于我們希望我們的自定義函數(shù)來處理所有錯誤,set_error_handler() 僅需要一個參數(shù),可以添加第二 個參數(shù)來規(guī)定錯誤級別。實例 通過嘗試輸出不存在的變量,來測試這個錯誤處理程序:以上代碼的輸出應(yīng)該類似這樣:Custom error: [8] Undefined variable: test觸發(fā)錯誤在腳本中用戶輸入數(shù)據(jù)的位置,當(dāng)用戶的輸入無效時觸發(fā)錯誤的很有用的。在 PHP 中,這個任務(wù)由 trigger_error() 完成。例子
在本例中,如果 "test" 變量大于 "1",就會發(fā)生錯誤:1) { trigger_error("Value must be 1 or below"); } ?>以上代碼的輸出應(yīng)該類似這樣:Notice: Value must be 1 or below in C:\webfolder\test.php on line 6您可以在腳本中任何位置觸發(fā)錯誤,通過添加的第二個參數(shù),您能夠規(guī)定所觸發(fā)的錯誤級別?赡艿腻e誤類型: 可能的錯誤類型: ? ? ? E_USER_ERROR - 致命的用戶生成的 run-time 錯誤。錯誤無法恢復(fù)。腳本執(zhí)行被中斷。 E_USER_WARNING - 非致命的用戶生成的 run-time 警告。腳本執(zhí)行不被中斷。 E_USER_NOTICE - 默認(rèn)。用戶生成的 run-time 通知。腳本發(fā)現(xiàn)了可能的錯誤,也有可能在腳本運行正常時發(fā)生。 例子 在本例中,如果 "test" 變量大于 "1",則發(fā)生 E_USER_WARNING 錯誤。如果發(fā)生了 E_USER_WARNING,我們將使用我們的自定義錯誤處理程序并結(jié)束腳本:
【PHP高級教程】相關(guān)文章:
原創(chuàng)PHP教程:變量10-22
php基礎(chǔ)教程10-10
PHP環(huán)境搭建教程08-09
Windows下的PHP安裝pear教程08-14
PHP文件寫入和讀取教程08-06
PHP中使用curl入門教程11-14
php中的curl使用入門教程06-20
PHP7多線程搭建教程詳解 08-12