亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語(yǔ)言

PHP高級(jí)教程

時(shí)間:2024-10-20 04:54:42 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

PHP高級(jí)教程

  努力向上的開拓,才使彎曲的竹鞭化作了筆直的毛竹。以下是小編為大家搜索整理了PHP高級(jí)教程,希望能給大家?guī)?lái)幫助!更多精彩內(nèi)容請(qǐng)及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  PHP 高級(jí)教程 PHP Date()PHP 的 date() 函數(shù)用于格式化時(shí)間或日期。 函數(shù)用于格式化時(shí)間或日期。PHP Date() 函數(shù)PHP Date() 函數(shù)可把時(shí)間戳格式化為可讀性更好的日期和時(shí)間。語(yǔ)法date(format,timestamp) 參數(shù) format timestamp 描述 必需。規(guī)定時(shí)間戳的格式。 可選。規(guī)定時(shí)間戳。默認(rèn)是當(dāng)前的日期和時(shí)間。PHP 日期 - 什么是時(shí)間戳(Timestamp)? 什么是時(shí)間戳( )?時(shí)間戳是自 1970 年 1 月 1 日(00:00:00 GMT)以來(lái)的秒數(shù)。它也被稱為 Unix 時(shí)間戳(Unix Timestam) 。PHP 日期 - 格式化日期date() 函數(shù)的第一個(gè)參數(shù)規(guī)定了如何格式化日期/時(shí)間。它使用字母來(lái)表示日期和時(shí)間的格式。這里列出 了一些可用的字母: ? ? ? d - 月中的天 (01-31) m - 當(dāng)前月,以數(shù)字計(jì) (01-12) Y - 當(dāng)前的年(四位數(shù))您可以在我們的 PHP Date 參考手冊(cè)中,找到格式參數(shù)中可以使用的所有字母?梢栽谧帜钢g插入其他字符,比如 "/"、"." 或者 "-",這樣就可以增加附加格式了:

  echo date("Y-m-d"); ?>以上代碼的輸出類似這樣:2006/07/11 2006.07.11 2006-07-11PHP 日期 - 添加時(shí)間戳date() 函數(shù)的第二個(gè)參數(shù)規(guī)定了一個(gè)時(shí)間戳。此參數(shù)是可選的。如果您沒(méi)有提供時(shí)間戳,當(dāng)前的時(shí)間將被 使用。在我們的例子中,我們將使用 mktime() 函數(shù)為明天創(chuàng)建一個(gè)時(shí)間戳。mktime() 函數(shù)可為指定的日期返回 Unix 時(shí)間戳。語(yǔ)法mktime(hour,minute,second,month,day,year,is_dst)如需獲得某一天的時(shí)間戳,我們只要設(shè)置 mktime() 函數(shù)的 day 參數(shù)就可以了:以上代碼的輸出類似這樣:明天是 2006/07/12PHP 引用文件用于創(chuàng)建可在多個(gè)頁(yè)面重復(fù)使用的函數(shù)、頁(yè)眉、頁(yè)腳或元素。 服務(wù)器端引用 (SSI) 用于創(chuàng)建可在多個(gè)頁(yè)面重復(fù)使用的函數(shù)、頁(yè)眉、頁(yè)腳或元素。

  服務(wù)器端引用( 服務(wù)器端引用(Server Side Includes) )通過(guò) include() 或 require() 函數(shù),您可以在服務(wù)器執(zhí)行 PHP 文件之前在該文件中插入一個(gè)文件的內(nèi) 容。除了它們處理錯(cuò)誤的方式不同之外,這兩個(gè)函數(shù)在其他方面都是相同的。include() 函數(shù)會(huì)生成一個(gè) 警告(但是腳本會(huì)繼續(xù)執(zhí)行) ,而 require() 函數(shù)會(huì)生成一個(gè)致命錯(cuò)誤(fatal error) (在錯(cuò)誤發(fā)生后腳本 會(huì)停止執(zhí)行) 。這兩個(gè)函數(shù)用于創(chuàng)建可在多個(gè)頁(yè)面重復(fù)使用的函數(shù)、頁(yè)眉、頁(yè)腳或元素。這會(huì)為開發(fā)者節(jié)省大量的時(shí)間。這意味著您可以創(chuàng)建供所有網(wǎng)頁(yè)引用的標(biāo)準(zhǔn)頁(yè)眉或菜單文件。當(dāng)頁(yè)眉需要 更新時(shí),您只更新一個(gè)包含文件就可以了,或者當(dāng)您向網(wǎng)站添加一張新頁(yè)面時(shí),僅僅需要修改一下菜單文 件(而不是更新所有網(wǎng)頁(yè)中的鏈接) 。include() 函數(shù)include() 函數(shù)可獲得指定文件中的所有文本,并把文本拷貝到使用 include 函數(shù)的文件中。例子 1 假設(shè)您擁有一個(gè)標(biāo)準(zhǔn)的頁(yè)眉文件, 名為 "header.php"。 如需在頁(yè)面中引用這個(gè)頁(yè)眉文件, 請(qǐng)使用 include() 函數(shù),就像這樣:

  Welcome to my home page

  Some text

  例子 2 現(xiàn)在,假設(shè)我們有一個(gè)在所有頁(yè)面上使用的標(biāo)準(zhǔn)菜單文件。請(qǐng)看下面這個(gè) "menu.php":

  Home | About Us | Contact Us三個(gè)文件,"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

  同時(shí),當(dāng)然,我們也將用相同的方法處理 "about.php" 和 "contact.php"。通過(guò)使用引用文件,在您需 要重命名鏈接、更改鏈接順序或向站點(diǎn)添加另一張網(wǎng)頁(yè)時(shí),只要簡(jiǎn)單地更新 "menu.php" 文件中的文本 即可。require() 函數(shù)require() 函數(shù)與 include() 相同,不同的是它對(duì)錯(cuò)誤的處理方式。include() 函數(shù)會(huì)生成一個(gè)警告(但是腳本會(huì)繼續(xù)執(zhí)行) ,而 require() 函數(shù)會(huì)生成一個(gè)致命錯(cuò)誤(fatal error) (在錯(cuò)誤發(fā)生后腳本會(huì)停止執(zhí)行) 。如果在您通過(guò) include() 引用文件時(shí)發(fā)生了錯(cuò)誤,會(huì)得到類似下面這樣的錯(cuò)誤消息:PHP 代碼: 代碼: 錯(cuò)誤消息: 錯(cuò)誤消息: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!請(qǐng)注意,echo 語(yǔ)句依然被執(zhí)行了!這是因?yàn)榫娌粫?huì)中止腳本的執(zhí)行,F(xiàn)在,讓我們使用 require() 函數(shù)運(yùn)行相同的例子。PHP 代碼: 代碼: 錯(cuò)誤消息: 錯(cuò)誤消息: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

  由于在致命錯(cuò)誤發(fā)生后終止了腳本的執(zhí)行,因此 echo 語(yǔ)句不會(huì)執(zhí)行。正因?yàn)樵谖募淮嬖诨虮恢孛竽_本不會(huì)繼續(xù)執(zhí)行, 正因?yàn)樵谖募淮嬖诨虮恢孛竽_本不會(huì)繼續(xù)執(zhí)行,因此我們推薦使用 require() 而不是 include()。 。PHP 文件處理fopen() 函數(shù)用于在 PHP 中打開文件。 中打開文件。打開文件fopen() 函數(shù)用于在 PHP 中打開文件。此函數(shù)的第一個(gè)參數(shù)含有要打開的文件的名稱,第二個(gè)參數(shù)規(guī)定了使用哪種模式來(lái)打開文件: 文件可能通過(guò)下列模式來(lái)打開: 模式 r r+ w w+ a 只讀。在文件的開頭開始。 讀/寫。在文件的開頭開始。 只寫。打開并清空文件的內(nèi)容;如果文件不存在,則創(chuàng)建新文件。 讀/寫。打開并清空文件的內(nèi)容;如果文件不存在,則創(chuàng)建新文件。 追加。打開并向文件文件的末端進(jìn)行寫操作,如果文件不存在, 則創(chuàng)建新文件。 a+ x 讀/追加。通過(guò)向文件末端寫內(nèi)容,來(lái)保持文件內(nèi)容。 只寫。創(chuàng)建新文件。如果文件以存在,則返回 FALSE。 描述

  x+讀/寫。創(chuàng)建新文件。如果文件已存在,則返回 FALSE 和一個(gè)錯(cuò) 誤。 注釋:如果 fopen() 無(wú)法打開指定文件,則返回 0 (false)。例子 如果 fopen() 不能打開指定的文件,下面的例子會(huì)生成一段消息: 關(guān)閉文件fclose() 函數(shù)用于關(guān)閉打開的文件。檢測(cè) End-of-filefeof() 函數(shù)檢測(cè)是否已達(dá)到文件的末端 (EOF)。在循環(huán)遍歷未知長(zhǎng)度的數(shù)據(jù)時(shí),feof() 函數(shù)很有用。

  注釋: 注釋:在 w 、a 以及 x 模式,您無(wú)法讀取打開的文件!if (feof($file)) echo "End of file";逐行讀取文件fgets() 函數(shù)用于從文件中逐行讀取文件。注釋: 注釋:在調(diào)用該函數(shù)之后,文件指針會(huì)移動(dòng)到下一行。例子 下面的例子逐行讀取文件,直到文件末端為止:逐字符讀取文件fgetc() 函數(shù)用于從文件逐字符地讀取文件。注釋: 注釋:在調(diào)用該函數(shù)之后,文件指針會(huì)移動(dòng)到下一個(gè)字符。例子 下面的例子逐字符地讀取文件,直到文件末端為止:

  } fclose($file); ?>PHP 文件上傳通過(guò) PHP,可以把文件上傳到服務(wù)器。 ,可以把文件上傳到服務(wù)器。創(chuàng)建一個(gè)文件上傳表單允許用戶從表單上傳文件是非常有用的。請(qǐng)看下面這個(gè)供上傳文件的 HTML 表單:

  Filename:

  請(qǐng)留意如下有關(guān)此表單的信息:

  標(biāo)簽的 enctype 屬性規(guī)定了在提交表單時(shí)要使用哪種內(nèi)容類型。在表單需要二進(jìn)制數(shù)據(jù)時(shí),比 如文件內(nèi)容,請(qǐng)使用 "multipart/form-data"。 標(biāo)簽的 type="file" 屬性規(guī)定了應(yīng)該把輸入作為文件來(lái)處理。 舉例來(lái)說(shuō), 當(dāng)在瀏覽器中預(yù)覽時(shí), 會(huì)看到輸入框旁邊有一個(gè)瀏覽按鈕。

  注釋: 注釋:允許用戶上傳文件是一個(gè)巨大的安全風(fēng)險(xiǎn)。請(qǐ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"]; } ?>通過(guò)使用 PHP 的全局?jǐn)?shù)組 $_FILES,你可以從客戶計(jì)算機(jī)向遠(yuǎn)程服務(wù)器上傳文件。第一個(gè)參數(shù)是表單的 input name,第二個(gè)下標(biāo)可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣: ? ? ? ? ? $_FILES["file"]["name"] - 被上傳文件的名稱 $_FILES["file"]["type"] - 被上傳文件的類型 $_FILES["file"]["size"] - 被上傳文件的大小,以字節(jié)計(jì) $_FILES["file"]["tmp_name"] - 存儲(chǔ)在服務(wù)器的文件的臨時(shí)副本的名稱 $_FILES["file"]["error"] - 由文件上傳導(dǎo)致的錯(cuò)誤代碼這是一種非常簡(jiǎn)單文件上傳方式;诎踩矫娴目紤],您應(yīng)當(dāng)增加有關(guān)什么用戶有權(quán)上傳文件的限制。上傳限制在這個(gè)腳本中, 我們?cè)黾恿藢?duì)文件上傳的限制。 用戶只能上傳 .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"; }?>注釋: 注釋:對(duì)于 IE,識(shí)別 jpg 文件的類型必須是 pjpeg,對(duì)于 FireFox,必須是 jpeg。保存被上傳的文件上面的例子在服務(wù)器的 PHP 臨時(shí)文件夾創(chuàng)建了一個(gè)被上傳文件的臨時(shí)副本。這個(gè)臨時(shí)的復(fù)制文件會(huì)在腳本結(jié)束時(shí)消失。要保存被上傳的文件,我們需要把它拷貝到另外的位置:

  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"; } ?>上面的腳本檢測(cè)了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。注釋: 注釋:這個(gè)例子把文件保存到了名為 "upload" 的新文件夾。PHP Cookiescookie 常用于識(shí)別用戶。 常用于識(shí)別用戶。什么是 Cookie? ?cookie 常用于識(shí)別用戶。cookie 是服務(wù)器留在用戶計(jì)算機(jī)中的小文件。每當(dāng)相同的計(jì)算機(jī)通過(guò)瀏覽器請(qǐng) 求頁(yè)面時(shí),它同時(shí)會(huì)發(fā)送 cookie。通過(guò) PHP,您能夠創(chuàng)建并取回 cookie 的值。如何創(chuàng)建 cookie? ?setcookie() 函數(shù)用于設(shè)置 cookie。注釋: 注釋:setcookie() 函數(shù)必須位于 標(biāo)簽之前。語(yǔ)法setcookie(name, value, expire, path, domain);例子 在下面的例子中,我們將創(chuàng)建名為 "user" 的 cookie,把為它賦值 "Alex Porter"。我們也規(guī)定了此 cookie 在一小時(shí)后過(guò)期:

  注釋: 注釋:在發(fā)送 cookie 時(shí),cookie 的值會(huì)自動(dòng)進(jìn)行 URL 編碼,在取回時(shí)進(jìn)行自動(dòng)解碼(為防止 URL 編 碼,請(qǐng)使用 setrawcookie() 取而代之) 。的值? 如何取回 Cookie 的值?PHP 的 $_COOKIE 變量用于取回 cookie 的值。在下面的例子中,我們?nèi)』亓嗣麨?"user" 的 cookie 的值,并把它顯示在了頁(yè)面上:在下面的例子中,我們使用 isset() 函數(shù)來(lái)確認(rèn)是否已設(shè)置了 cookie:

  如何刪除 cookie? ?當(dāng)刪除 cookie 時(shí),您應(yīng)當(dāng)使過(guò)期日期變更為過(guò)去的時(shí)間點(diǎn)。刪除的例子:該怎么辦? 如果瀏覽器不支持 cookie 該怎么辦?如果您的應(yīng)用程序涉及不支持 cookie 的瀏覽器,您就不得不采取其他方法在應(yīng)用程序中從一張頁(yè)面向另 一張頁(yè)面?zhèn)鬟f信息。一種方式是從表單傳遞數(shù)據(jù)(有關(guān)表單和用戶輸入的內(nèi)容,稍早前我們已經(jīng)在本教程 中介紹過(guò)了) 。下面的表單在用戶單擊提交按鈕時(shí)向 "welcome.php" 提交了用戶輸入:

  Name: Age:

  取回 "welcome.php" 中的值,就像這樣:

  Welcome .

  You are years old. PHP SessionsPHP session 變量用于存儲(chǔ)有關(guān)用戶會(huì)話的信息,或更改用戶會(huì)話的設(shè)置。Session 變量保存的信息 變量用于存儲(chǔ)有關(guān)用戶會(huì)話的信息,或更改用戶會(huì)話的設(shè)置。 是單一用戶的,并且可供應(yīng)用程序中的所有頁(yè)面使用。 是單一用戶的,并且可供應(yīng)用程序中的所有頁(yè)面使用。 所有頁(yè)面使用PHP Session 變量當(dāng)您運(yùn)行一個(gè)應(yīng)用程序時(shí),您會(huì)打開它,做些更改,然后關(guān)閉它。這很像一次會(huì)話。計(jì)算機(jī)清楚你是誰(shuí)。 它知道你何時(shí)啟動(dòng)應(yīng)用程序,并在何時(shí)終止。但是在因特網(wǎng)上,存在一個(gè)問(wèn)題:服務(wù)器不知道你是誰(shuí)以及 你做什么,這是由于 HTTP 地址不能維持狀態(tài)。通過(guò)在服務(wù)器上存儲(chǔ)用戶信息以便隨后使用, PHP session 解決了這個(gè)問(wèn)題 (比如用戶名稱、 購(gòu)買商品等) 。 不過(guò),會(huì)話信息是臨時(shí)的,在用戶離開網(wǎng)站后將被刪除。如果您需要永久儲(chǔ)存信息,可以把數(shù)據(jù)存儲(chǔ)在數(shù) 據(jù)庫(kù)中。Session 的工作機(jī)制是: 為每個(gè)訪問(wèn)者創(chuàng)建一個(gè)唯一的 id (UID), 并基于這個(gè) UID 來(lái)存儲(chǔ)變量。 UID 存 儲(chǔ)在 cookie 中,亦或通過(guò) URL 進(jìn)行傳導(dǎo)。開始 PHP Session在您把用戶信息存儲(chǔ)到 PHP session 中之前,首先必須啟動(dòng)會(huì)話。注釋: 注釋:session_start() 函數(shù)必須位于 標(biāo)簽之前:

  上面的代碼會(huì)向服務(wù)器注冊(cè)用戶的會(huì)話, 以便您可以開始保存用戶信息, 同時(shí)會(huì)為用戶會(huì)話分配一個(gè) UID。存儲(chǔ) Session 變量存儲(chǔ)和取回 session 變量的正確方法是使用 PHP $_SESSION 變量: 輸出:Pageviews=1在下面的例子中, 我們創(chuàng)建了一個(gè)簡(jiǎn)單的 page-view 計(jì)數(shù)器。 isset() 函數(shù)檢測(cè)是否已設(shè)置 "views" 變 量。如果已設(shè)置 "views" 變量,我們累加計(jì)數(shù)器。如果 "views" 不存在,則我們創(chuàng)建 "views" 變量, 并把它設(shè)置為 1:

  終結(jié) Session如果您希望刪除某些 session 數(shù)據(jù),可以使用 unset() 或 session_destroy() 函數(shù)。unset() 函數(shù)用于釋放指定的 session 變量:您也可以通過(guò) session_destroy() 函數(shù)徹底終結(jié) session:注釋: 注釋:session_destroy() 將重置 session,您將失去所有已存儲(chǔ)的 session 數(shù)據(jù)。PHP 發(fā)送電子郵件PHP 允許您從腳本直接發(fā)送電子郵件。 允許您從腳本直接發(fā)送電子郵件。PHP mail() 函數(shù)PHP mail() 函數(shù)用于從腳本中發(fā)送電子郵件。

  語(yǔ)法mail(to,subject,message,headers,parameters) 參數(shù) to subject 描述 必需。規(guī)定 email 接收者。 必需。規(guī)定 email 的主題。注釋:該參數(shù)不能包含任何新行 字符。 message headers 必需。定義要發(fā)送的消息。應(yīng)使用 LF (\n) 來(lái)分隔各行。 可選。規(guī)定附加的標(biāo)題,比如 From、Cc 以及 Bcc。 應(yīng)當(dāng)使用 CRLF (\r\n) 分隔附加的標(biāo)題。 parameters 可選。對(duì)郵件發(fā)送程序規(guī)定額外的參數(shù)。注釋: PHP 需要一個(gè)已安裝且正在運(yùn)行的郵件系統(tǒng), 以便使郵件函數(shù)可用。 所用的程序通過(guò)在 php.ini 文 注釋: 件中的配置設(shè)置進(jìn)行定義。請(qǐng)?jiān)谖覀兊?PHP Mail 參考手冊(cè)閱讀更多內(nèi)容。PHP 簡(jiǎn)易 E-Mail通過(guò) PHP 發(fā)送電子郵件的最簡(jiǎn)單的方式是發(fā)送一封文本 email。在下面的例子中, 我們首先聲明變量($to, $subject, $message, $from, $headers), 然后我們?cè)?mail() 函數(shù)中使用這些變量來(lái)發(fā)送了一封 e-mail:PHP Mail Form

  通過(guò) PHP, 您能夠在自己的站點(diǎn)制作一個(gè)反饋表單。 下面的例子向指定的 e-mail 地址發(fā)送了一條文本消 息:

  ?> 例子解釋: 例子解釋: 1 2 3 4 首先,檢查是否填寫了郵件輸入框 如果未填寫(比如在頁(yè)面被首次訪問(wèn)時(shí)) ,輸出 HTML 表單 如果已填寫(在表單被填寫后) ,從表單發(fā)送郵件 當(dāng)點(diǎn)擊提交按鈕后,重新載入頁(yè)面,顯示郵件發(fā)送成功的消息PHP 安全的電子郵件腳本中,存在著一個(gè)漏洞。 在上一節(jié)中的 PHP e-mail 腳本中,存在著一個(gè)漏洞。PHP E-mail 注入首先,請(qǐng)看上一節(jié)中的 PHP 代碼:

  else //if "email" is not filled out, display the form { echo "

  Email:

  Subject:

  Message:

  "; } ?> 以上代碼存在的問(wèn)題是,未經(jīng)授權(quán)的用戶可通過(guò)輸入表單在郵件頭部插入數(shù)據(jù)。假如用戶在表單中的輸入框內(nèi)加入這些文本,會(huì)出現(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)用戶點(diǎn)擊提交按鈕時(shí),這封 e-mail 會(huì)被發(fā)送到上面所有的地址!PHP 防止 E-mail 注入防止 e-mail 注入的最好方法是對(duì)輸入進(jìn)行驗(yàn)證。下面的代碼與上一節(jié)類似,不過(guò)我們已經(jīng)增加了檢測(cè)表單中 email 字段的輸入驗(yàn)證程序:

  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 過(guò)濾器來(lái)對(duì)輸入進(jìn)行驗(yàn)證: ? ? FILTER_SANITIZE_EMAIL 從字符串中刪除電子郵件的非法字符 FILTER_VALIDATE_EMAIL 驗(yàn)證電子郵件地址您可以在我們的 PHP 過(guò)濾器這一節(jié)中閱讀更多有關(guān)過(guò)濾器的內(nèi)容。

  PHP 錯(cuò)誤處理默認(rèn)的錯(cuò)誤處理很簡(jiǎn)單。一條消息會(huì)被發(fā)送到瀏覽器,這條消息帶有文件名、 在 PHP 中,默認(rèn)的錯(cuò)誤處理很簡(jiǎn)單。一條消息會(huì)被發(fā)送到瀏覽器,這條消息帶有文件名、行號(hào)以及一條 描述錯(cuò)誤的消息。 描述錯(cuò)誤的消息。PHP 錯(cuò)誤處理在創(chuàng)建腳本和 web 應(yīng)用程序時(shí),錯(cuò)誤處理是一個(gè)重要的部分。如果您的代碼缺少錯(cuò)誤檢測(cè)編碼,那么程 序看上去很不專業(yè),也為安全風(fēng)險(xiǎn)敞開了大門。本教程介紹了 PHP 中一些最為重要的錯(cuò)誤檢測(cè)方法。我們將為您講解不同的錯(cuò)誤處理方法: ? ? ? 簡(jiǎn)單的 "die()" 語(yǔ)句 自定義錯(cuò)誤和錯(cuò)誤觸發(fā)器 錯(cuò)誤報(bào)告基本的錯(cuò)誤處理: 基本的錯(cuò)誤處理:使用 die() 函數(shù)第一個(gè)例子展示了一個(gè)打開文本文件的簡(jiǎn)單腳本:如果文件不存在,您會(huì)獲得類似這樣的錯(cuò)誤:Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in C:\webfolder\test.php on line 2為了避免用戶獲得類似上面的錯(cuò)誤消息,我們?cè)谠L問(wèn)文件之前檢測(cè)該文件是否存在:

  { $file=fopen("welcome.txt","r"); } ?>現(xiàn)在,假如文件不存在,您會(huì)得到類似這樣的錯(cuò)誤消息:File not found比起之前的代碼,上面的代碼更有效,這是由于它采用了一個(gè)簡(jiǎn)單的錯(cuò)誤處理機(jī)制在錯(cuò)誤之后終止了腳本。不過(guò),簡(jiǎn)單地終止腳本并不總是恰當(dāng)?shù)姆绞。讓我們研究一下用于處理錯(cuò)誤的備選的 PHP 函數(shù)。創(chuàng)建自定義錯(cuò)誤處理器創(chuàng)建一個(gè)自定義的錯(cuò)誤處理器非常簡(jiǎn)單。我們很簡(jiǎn)單地創(chuàng)建了一個(gè)專用函數(shù),可以在 PHP 中發(fā)生錯(cuò)誤時(shí) 調(diào)用該函數(shù)。該函數(shù)必須有能力處理至少兩個(gè)參數(shù) (error level 和 error message), 但是可以接受最多五個(gè)參數(shù) (可 選的:file, line-number 以及 error context) :語(yǔ)法error_function(error_level,error_message, error_file,error_line,error_context) 參數(shù) error_level 描述 必需。為用戶定義的錯(cuò)誤規(guī)定錯(cuò)誤報(bào)告級(jí)別。必須是一個(gè)值數(shù)。 參見(jiàn)下面的表格:錯(cuò)誤報(bào)告級(jí)別。 error_message error_file error_line error_context 必需。為用戶定義的錯(cuò)誤規(guī)定錯(cuò)誤消息。 可選。規(guī)定錯(cuò)誤在其中發(fā)生的文件名。 可選。規(guī)定錯(cuò)誤發(fā)生的行號(hào)。 可選。規(guī)定一個(gè)數(shù)組,包含了當(dāng)錯(cuò)誤發(fā)生時(shí)在用的每個(gè)變量以及 它們的值。錯(cuò)誤報(bào)告級(jí)別

  這些錯(cuò)誤報(bào)告級(jí)別是錯(cuò)誤處理程序旨在處理的錯(cuò)誤的不同的類型: 值 2 8 常量 E_WARNING E_NOTICE 描述 非致命的 run-time 錯(cuò)誤。不暫停腳本執(zhí)行。 Run-time 通知。 腳本發(fā)現(xiàn)可能有錯(cuò)誤發(fā)生,但也可能在腳本正常運(yùn)行時(shí)發(fā)生。 256 E_USER_ERROR 致命的用戶生成的錯(cuò)誤。這類似于程序員使用 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 可捕獲的致命錯(cuò)誤。類似 E_ERROR,但可被用戶定義的處理 程序捕獲。(參見(jiàn) set_error_handler()) 所有錯(cuò)誤和警告,除級(jí)別 E_STRICT 以外。 (在 PHP 6.0,E_STRICT 是 E_ALL 的一部分) PHP 函 數(shù)現(xiàn)在,讓我們創(chuàng)建一個(gè)處理錯(cuò)誤的函數(shù):function customError($errno, $errstr) { echo "Error: [$errno] $errstr

  "; echo "Ending Script"; die(); }上面的代碼是一個(gè)簡(jiǎn)單的錯(cuò)誤處理函數(shù)。當(dāng)它被觸發(fā)時(shí),它會(huì)取得錯(cuò)誤級(jí)別和錯(cuò)誤消息。然后它會(huì)輸出錯(cuò) 誤級(jí)別和消息,并終止腳本,F(xiàn)在,我們已經(jīng)創(chuàng)建了一個(gè)錯(cuò)誤處理函數(shù),我們需要確定在何時(shí)觸發(fā)該函數(shù)。Set Error HandlerPHP 的默認(rèn)錯(cuò)誤處理程序是內(nèi)建的錯(cuò)誤處理程序。 我們打算把上面的函數(shù)改造為腳本運(yùn)行期間的默認(rèn)錯(cuò)誤 處理程序。

  可以修改錯(cuò)誤處理程序,使其僅應(yīng)用到某些錯(cuò)誤,這樣腳本就可以不同的方式來(lái)處理不同的錯(cuò)誤。不過(guò), 在本例中,我們打算針對(duì)所有錯(cuò)誤來(lái)使用我們的自定義錯(cuò)誤處理程序:set_error_handler("customError");由于我們希望我們的自定義函數(shù)來(lái)處理所有錯(cuò)誤,set_error_handler() 僅需要一個(gè)參數(shù),可以添加第二 個(gè)參數(shù)來(lái)規(guī)定錯(cuò)誤級(jí)別。實(shí)例 通過(guò)嘗試輸出不存在的變量,來(lái)測(cè)試這個(gè)錯(cuò)誤處理程序:以上代碼的輸出應(yīng)該類似這樣:Custom error: [8] Undefined variable: test觸發(fā)錯(cuò)誤在腳本中用戶輸入數(shù)據(jù)的位置,當(dāng)用戶的輸入無(wú)效時(shí)觸發(fā)錯(cuò)誤的很有用的。在 PHP 中,這個(gè)任務(wù)由 trigger_error() 完成。例子

  在本例中,如果 "test" 變量大于 "1",就會(huì)發(fā)生錯(cuò)誤: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ā)錯(cuò)誤,通過(guò)添加的第二個(gè)參數(shù),您能夠規(guī)定所觸發(fā)的錯(cuò)誤級(jí)別?赡艿腻e(cuò)誤類型: 可能的錯(cuò)誤類型: ? ? ? E_USER_ERROR - 致命的用戶生成的 run-time 錯(cuò)誤。錯(cuò)誤無(wú)法恢復(fù)。腳本執(zhí)行被中斷。 E_USER_WARNING - 非致命的用戶生成的 run-time 警告。腳本執(zhí)行不被中斷。 E_USER_NOTICE - 默認(rèn)。用戶生成的 run-time 通知。腳本發(fā)現(xiàn)了可能的錯(cuò)誤,也有可能在腳本運(yùn)行正常時(shí)發(fā)生。 例子 在本例中,如果 "test" 變量大于 "1",則發(fā)生 E_USER_WARNING 錯(cuò)誤。如果發(fā)生了 E_USER_WARNING,我們將使用我們的自定義錯(cuò)誤處理程序并結(jié)束腳本:

【PHP高級(jí)教程】相關(guān)文章:

PHP環(huán)境搭建教程08-09

php基礎(chǔ)教程10-10

十個(gè)PHP高級(jí)應(yīng)用技巧07-28

PPT中如何制作環(huán)形圖高級(jí)教程09-01

PHP高級(jí)工程師所具備的要求07-09

php正則去掉php注釋07-30

php與php MySQL之間的關(guān)系10-03

PHP高級(jí)工程師面試問(wèn)題集合05-30

PHP試題07-04

PHP是做什么的 如何學(xué)習(xí)PHP06-18