1.處理不一樣的圖片格式 針對圖片處理的公共類兼容多種圖片類型的處理。php
只要使用不一樣類型的圖片使用不一樣的imagecreatefrom類型便可實現。mysql
【重點!!!】 【php實現網絡編程】 2.HTTP請求協議【HTTP權威指南已經看了,可是尚未深入的認識】 HTTP用於規範b/s架構中,瀏覽器和服務器之間信息數據交換的規則。【超文本傳輸協議對應的(超文本標記語言和數據)】sql
瀏覽器和服務器之間創建的TCP鏈接【鏈接部分須要注意:三次握手已經不說。持久鏈接自己佔用的資源問題(持久鏈接保證了HTTP傳輸的順利)】數據庫
請求的報文信息【request】 (1)請求行【請求數據的第一行,內有三個信息組成:請求方式(http請求的方式:例如get),請求url,協議版本(http/1.1)】 (2)請求頭【帶瀏覽器發送請求裏的一些狀態碼:進行標示等等:瀏覽器信息,cookie等等】【須要使用一個空行標示結束】 (3)請求主體【post方式傳輸數據時有主體】apache
所謂的網絡編程就是使用語言來模擬HTTP請求和結果,實現咱們須要的效果。編程
3.php模擬HTTP請求 在知道HTTP請求的報文以後,使用php來生成這樣的請求來進行模擬。 【重點】 【爬蟲也是這樣經過腳本實現請求和響應結果】 php模擬get請求 (1)先鏈接上目標服務器【利用php函數:fsocketopen創建一個socket或者internet鏈接。須要使用ip和端口進行惟一識別】 (2)使用該函數鏈接服務器以後,返回一個資源【stream流】 對資源和鏈接有一個比較清晰的認識。【關鍵是鏈接,而鏈接佔用服務器資源的問題須要對服務器方面學習】 (3)鏈接以後,使用請求的報文進行模擬【php生成報文信息】 (4)發送請求【利用剛剛創建的stream數據通道,以及fwrite寫入到目標服務器上】數組
因而便實現了php模擬一個HTTP請求。【而php腳本又須要瀏覽器請求才可以運行,因此這裏用來模擬HTTP請求的腳本至關於作了一層中間層】瀏覽器
php來接收響應結果: 使用fgets來接受響應數據【一行行的接收。也是stream的流】 【使用循環來接收fgets的結果:顯示全文(使用feof來判斷是否到了數據流的結尾)】緩存
4.HTTP響應信息 響應信息: 【響應行】:協議版本,狀態碼,狀態消息【狀態碼和狀態消息是對應的:用來表示響應結果】 狀態碼: 200:狀態正常 300:請求被重定向 400:not found 500:server內部錯誤 【響應頭】:服務器須要告知瀏覽器的一些信息【例如文件類型等等】【多行表示,還須要一個空行標示響應頭結束】 【相應主體】:在瀏覽器中用來顯示的文件都是相應主體。服務器
【HTTP報文中須要的換行都須要使用在任何系統中都是換行的\r\n】
5.php操做響應結果 利用header函數來操做響應頭【響應結果中的cookie也能夠進行設置】【下載的本質是將本來從服務器上傳輸過來的數據保存起來(而不是顯示):經過響應頭來(header函數)管理。(經過header對文件的類型和是否打開進行管理便能實現下載)】 利用echo來操做響應主體【這個不須要太多說,直接輸出便可處理】
6.php模擬post請求【也就是操做請求主體!!】 利用php來模擬一次表單提交。 鍵值對的形式來造成請求主體的格式。
只不過在HTTP中的信息中,經過空行來區別,和HTTP的機制自己並無關係。【只不過須要在請求頭裏標示請求主體的必要信息:主體類型,主體長度等進行主體限制】 最後使用fwrite來實現數據的發送。
【重點】 7.curl 【用於專門來模擬HTTP請求,實現各類請求的方式】 【是一個獨立的工具:是一個擴展】【php_curl.dll】 curl提供了不少函數來實現HTTP請求的模擬工做
一整套的函數須要注意使用。 【由於如今的請求基本須要cookie和session,因此curl也須要帶着這些會話信息進行模擬請求】
由於有這樣的模擬的過程,因此咱們使用驗證碼防止暴力破解。【經過遍歷的方式來肯定用戶的密碼】
8.控制緩存:
控制瀏覽器的緩存:【對瀏覽器保存頁面進行控制】【expire】 在響應頭中進行瀏覽器緩存控制。【使用header進行處理】
防止盜鏈【注意請求頭中的referer來判斷該文件的來源】【進行一次對來源的處理:只有訪問的服務器是指定的服務器來講,圖片能夠被使
用和訪問】
9.PDO
另外一種php操做mysql或其餘數據庫的方法
php data object【php的數據訪問對象】
PDO可以將php用於操做數據庫的動做進行抽象處理【數據庫抽象層:將數據庫的典型操做都抽象出來,使之達到代碼公用的效果(不一樣數據庫進行切換,代碼並不須要更改)】
這裏就須要封裝各類不一樣數據庫的操做方法【(代碼層面)實現工廠方法,根據不一樣的條件進入不一樣的處理方法】
使用PDO時,由於PDO是數據對象,因此須要進行實例化和進行各自的調用狀況實現。
PDO對象的使用:
須要注意數據庫操做中語句是否有返回結果來判斷使用狀況
(1)執行語句的兩種使用狀況:
【語句對象:query()。沒有返回結果的話【例如set name gbk之類的】使用exec()】
(2)針對事物的操做
PDO有針對事物的方法
(3)新生成的行的id
插入行的語句使用獲取返回值
(4)PDO能夠傳入參數對取出來的結果進行數組方式的限制
【索引或關聯數組來表示結果】
(5)PDO的預處理
若是咱們須要重複的執行結構相同的sql語句【也就是對一個sql語句中,只有數據是不一樣的,結構自己是徹底一致的】,咱們須要對結構相同的語句進行預處理【防止進行重複的工做】
預處理的原理【將結構相同的部分進行提早編譯,將不一樣的數據部分和結構進行綁定,這樣會減小重複性工做】
具體的實現手段是在不一樣的數據位置上進行佔位,實現對數據的綁定處理
$sta = $pdo->prepare($sql)方法實現【在sql語句中進行佔位,而後再使用$sta->bind進行佔位上的變量的綁定處理】
最後使用execute()方法進行處理
(6)PDO錯誤處理機制
PDO的異常處理也是符合php的異常處理的提示信息進行
try:監聽
catch:捕獲
exception:進行拋出處理
10.桶式排序
先取得最大和最小的數
而後從小數開始到大數之間全部的數依次造成【全部的數都組成一個新的組合】
一次次按照想要實現排序的數據在以上得到的組合中出現的次數進行統計處理
最後對這個組合進行從新處理【將沒有出現的數據去掉,出現屢次的累計出現】
這樣便能使整個數組得到正常的排序
【這種處理思路也比較另類】
【可是使用的場景並很少:對空間的消耗比較大,並且只適用於數的排序】
【可是要比快速排序更加快,實現起來也比較容易。(使用要排序的數據作新建組合的下標,使用出現次數作數組的值)】
這樣便能實現排序處理
這就是桶式排序的思路和實現手段
【注意】
【php的數組的數據結構是鏈表結構,當咱們知道鍵名來定位該值,php的處理速度很是快】
var_export():將數組輸出成符合php語法的格式【功能和var_dump相似,可是輸出的格式可以支持php要求的數據】【用於將數據保存在文件,而且可以保證符合php要求的狀況來保存】
11.文件處理函數
除了文件的讀寫等函數以外的函數
目錄函數,文件函數
一個比較常見的題目:
就是讀取一個文件夾下的全部文件【使用遞歸處理:判斷文件夾下的文件存在(readdir),還有就是對文件夾的處理】
//用來遍歷一個文件夾下的全部文件
function deepDir($dir, $deep=0) { $dir_open = opendir($dir); while(($file = readdir($dir_open)) !== false) { echo str_repeat('--', $deep), $file, '<br>'; //判斷當前文件是不是目錄 if (is_dir($dir.'/'.$file) && $file!='.' && $file!='..') { //進入繼續讀取 deepDir($dir . '/' . $file, $deep+1); } }}$dir = 'e:/php1016/apache/htdocs/test';deepDir($dir);