發(fā)文章
發(fā)文工具
撰寫
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
協(xié)議:指的是一種約定,語法約束。用于限制數(shù)據(jù)在交互時(shí)的數(shù)據(jù)格式。
HTTP協(xié)議,用于b/s架構(gòu)中,瀏覽器與服務(wù)器之間數(shù)據(jù)傳輸?shù)囊?guī)則。
HTTP協(xié)議,是一個(gè)應(yīng)用層的協(xié)議,只負(fù)責(zé)程序間的數(shù)據(jù)交互格式,而不用負(fù)責(zé)程序的連接。
HTTP:超文本傳輸協(xié)議
一共兩次數(shù)據(jù)交互;
瀏覽器(發(fā)出請求的程序)應(yīng)該向http服務(wù)器發(fā)送什么格式的數(shù)據(jù)。
由三個(gè)子部分組成:請求行,請求頭,請求主體
現(xiàn)行的GET請求格式如下:GET /index.php?name=itcast HTTP/1.1
請求方式 地址URL 協(xié)議版本
瀏覽器(請求發(fā)送端)發(fā)送給服務(wù)器端的需要服務(wù)器知道的信息。
例如:user-agent:用戶代理信息,用于告知服務(wù)器,請求時(shí)誰發(fā)出的。
在服務(wù)器端,可以利用$_SERVER變量,獲得該信息:
host:主機(jī),請求需要的域名。
cookie:瀏覽器上的cookie數(shù)據(jù)
Accept-Language:瀏覽器可以接收的語言,通常用來判斷瀏覽器語言,做多語言程序:
格式:
頭標(biāo)識:值
Host:shop.
User-Agent:Firefox
注意:每個(gè)頭占用一行。
采用回車+換行來表示:
使用一個(gè)空行表示頭信息結(jié)束
指的是瀏覽器請求段發(fā)送給服務(wù)器端的數(shù)據(jù)部分。
只指的是POST請求的數(shù)據(jù)。只有post請求才需要請求主體,而get沒有請求主體,因?yàn)閿?shù)據(jù)是在請求行中url部分傳遞過去的。
常規(guī)是瀏覽器發(fā)出請求。留啊兩年期可以連接上目標(biāo)服務(wù)器,并可以向目標(biāo)服務(wù)器發(fā)送符合http請求協(xié)議格式的數(shù)據(jù),此時(shí)http服務(wù)器,就知道瀏覽器發(fā)送了請求,做出響應(yīng)。
如果模擬請求,模擬瀏覽器做出的工作:連接上目標(biāo)服務(wù)器,發(fā)送請求數(shù)據(jù)。
PHP模擬請求:
地址,端口。
利用 fsockopen 可以完成建立連接:成功后,生成鏈接資源。
利用連接,目標(biāo)服務(wù)器寫數(shù)據(jù)。
服務(wù)器處理,做出響應(yīng)。
利用連接,從目標(biāo)服務(wù)器讀取數(shù)據(jù)的過程。
HTTP服務(wù)器(apache)應(yīng)該向?yàn)g覽器(請求來源)發(fā)送什么格式的數(shù)據(jù)。
分成三部分:響應(yīng)狀態(tài)行,響應(yīng)頭,響應(yīng)主體
表示具體的響應(yīng)結(jié)果
HTTP/1.1 200 OK
協(xié)議版本 狀態(tài)碼 狀態(tài)消息
常見的狀態(tài)碼:
200 OK 成功
404 notFound 沒有找到腳本
403 Forbidden 沒有權(quán)限
302 Found 重定向
500 服務(wù)器錯(cuò)誤
完整的查看:
1xx: 信息
2xx: 成功
3xx: 重定向
4xx: 客戶端錯(cuò)誤
5xx:服務(wù)器錯(cuò)誤
服務(wù)器告知瀏覽器的信息部分
date: 響應(yīng)時(shí)間
GMT時(shí)間,格林威治平時(shí)
Content-Type: 主體的類型
Content-Length: 主體的長度
注意: 每個(gè)信息占用一行,行以\r\n結(jié)束,頭結(jié)束有個(gè)空行
服務(wù)器發(fā)送給請求代理端的主體數(shù)據(jù)部分
發(fā)送響應(yīng)頭或者響應(yīng)主體。
header()函數(shù)用于發(fā)送響應(yīng)頭
任何輸出都算響應(yīng)主體。
echo
var_dump()
php 標(biāo)簽外的html代碼
都算響應(yīng)主體。
例如,模擬cookie:
header 還可以發(fā)送響應(yīng)行:
文件由服務(wù)器到瀏覽器,發(fā)生在響應(yīng)時(shí)。
告知瀏覽器,響應(yīng)的主體數(shù)據(jù),作為附件來處理。不要打開,保存。
利用響應(yīng)頭:Content-Disposition:attachment
主體的處理方式:附件
下載圖片:將圖片的內(nèi)容作為主體數(shù)據(jù)輸出到瀏覽器端,并告知瀏覽器,將數(shù)據(jù)保存。
readfile()讀取文件內(nèi)容并輸出。
告知瀏覽器保存的文件名:Content-Disposition:attachment
增加一個(gè)filename的選項(xiàng)即可:Content-Disposition:attachment; filename=xxx.xxx
完善的下載:處理文件格式
此時(shí),建議使用fileinfo擴(kuò)展,老獲取文件格式:開啟extension=php_fileinfo.dll(php.ini)
finfo_open();建立一個(gè)獲取文件信息的資源。
finfo_file();利用資源獲得某個(gè)文件的信息。
控制瀏覽器端的緩存數(shù)據(jù)。
利用響應(yīng)頭實(shí)現(xiàn):
Expires:響應(yīng)頭,表示當(dāng)前響應(yīng)結(jié)果的有效期到什么時(shí)候:
是一個(gè)GMT時(shí)間。
date()得到是本地時(shí)間
gmdate()得到格林威治平時(shí)
告知響應(yīng)數(shù)據(jù)的有效期:
禁用瀏覽器緩存,應(yīng)該設(shè)置失效的一個(gè)時(shí)間。
為了兼容:禁用緩存還可以如下寫:
利用請求頭重的:referer:當(dāng)前請求的來源,由哪里發(fā)出的請求。
因此程序中判斷請求來源,決定是否顯示該圖片了:
與get請求相比,post請求數(shù)據(jù)存在請求主體。
請求行:POST URL協(xié)議
請求行頭:增加對請求主體的描述部分:
Content-Type:
Content-Length:
描述的請求的主體的內(nèi)容:
請求主體:是請求數(shù)據(jù)即可:
不需要\r\n結(jié)束。
模擬URL請求的客戶端擴(kuò)展。
php支持的一個(gè)可以快速模擬請求的功能。
開啟擴(kuò)展:extension=php_curl.dll(php.ini)
可能需要將動(dòng)態(tài)庫,拷貝到windows目錄:(libeay32.dll ssleay32.dll)
curl_init();
利用函數(shù):
curl_setopt(curl資源,選項(xiàng)標(biāo)識,選項(xiàng)值);
利用選項(xiàng) CURLOPT_POST 來設(shè)置是否是post請求
利用選項(xiàng) CURLOPT_POSTFIELDS 來設(shè)置post 數(shù)據(jù),支持?jǐn)?shù)組形式。
在 post 數(shù)據(jù)上做操作即可:
在 post 數(shù)據(jù) 數(shù)組內(nèi),使用絕對地址前增加 @ 符號,表示該數(shù)據(jù)是個(gè)文件數(shù)據(jù)。
利用正確的用戶名和密碼,獲得登陸標(biāo)識,獲得 cookie 中的 SESSIONID
請求 signinAction
http://shop./index.php?p=back&c=Admin&a=signin POST
需要使用 CURLOPT_COOKIEJAR 選項(xiàng),可以設(shè)置一個(gè)保存服務(wù)器設(shè)置 cookie 的文件。
再拿著 cookie 中的 sessionID 去請求需要登陸驗(yàn)證腳本,服務(wù)器就認(rèn)為我們認(rèn)證用戶,看頁面。
選項(xiàng):CURLOPT_COOKIEFILE 請求時(shí),攜帶的 cookie 所保存的文件。
選項(xiàng),CURL_RETURNTRANSFER
利用函數(shù)curl_exec(curl資源)
e:\Server\PHP\php.exe -f e:\Server\Apache\htdocs\129.php
在實(shí)際使用中,速度最快的排序算法。
體現(xiàn)的分治原則,分而治之
將困難的問題,拆分成相對簡單的問題
解決難度N的問題的效率,要低于解決2個(gè)難度為N/2的問題
6個(gè)元素,做冒泡排序:5+4+3+2+1 = 15
2個(gè)3個(gè)元素,冒泡排序:2+1=3*2 = 6
步驟:
將分成兩個(gè)部分,拆分的原則,找到參考源,將小于參考元分成一部分,將大于參考元的分層一部分:
典型的選擇第一個(gè)元素作為參考元:
再對拆分的兩個(gè)部分分別排序(還是使用該原則),最后將排序的結(jié)果與參考元再組合起來。當(dāng),序列號總,只有一個(gè)或者零個(gè)時(shí),認(rèn)為序列是排序好的,不用在拆分。
編程實(shí)現(xiàn):
遞歸點(diǎn):對任何一個(gè)拆分出來的部分排序方式一致,調(diào)用同一個(gè)函數(shù)完成。
遞歸出口:當(dāng)需要排序的序列內(nèi),只有一個(gè)或者沒有元素時(shí),不需要遞歸,認(rèn)為該序列已經(jīng)排序完畢。
定義函數(shù):
參數(shù):
需要排序的序列:數(shù)組
采用同一個(gè)較大的數(shù)組
生成較大的數(shù)組
利用函數(shù) var_export(); 將數(shù)據(jù)導(dǎo)出字符串,是符合PHP語法的定義數(shù)據(jù)的字符串:
使用 microtime 函數(shù),獲得當(dāng)前的時(shí)間戳,精確的微秒。
形成一個(gè)桶:由待排序序列中,最小數(shù),到,最大數(shù)之間所有的數(shù)的一個(gè)桶。先假設(shè)每個(gè)元素都出現(xiàn)0次。
一個(gè)數(shù)組,鍵表示數(shù),值表示次數(shù)。
遍歷所有待排序的序列元素,統(tǒng)計(jì)出現(xiàn)次數(shù),并記錄
遍歷桶,將對應(yīng)數(shù)量的元素得到即可!
20
21
25
26
…
30
40
41
48
49
50
..
66
67
1
0
2
PHPMyAdmin
一個(gè)web版的操作mysql的工具:默認(rèn)使用mysqli作為數(shù)據(jù)庫操作擴(kuò)展。
MySQL-Front
Navicat For MySQL
來自: 昵稱10504424 > 《工作》
0條評論
發(fā)表
請遵守用戶 評論公約
一次完整的http請求的過程是怎樣的?
一次完整的http請求的過程是怎樣的?HTTP協(xié)議是基于TCP協(xié)議來實(shí)現(xiàn)的,因此首先就是要通過TCP三次握手與服務(wù)器端建立連接,一般HTTP默認(rèn)...
一次完整的http請求過程是怎樣的?
一次完整的http請求過程是怎樣的?這時(shí)候?yàn)g覽器獲得了目標(biāo)服務(wù)器的IP(DNS返回)、端口(URL中包含,沒有就使用默認(rèn)),瀏覽器會調(diào)用庫...
Servlet認(rèn)識的革命
Servlet的功能就是:提供服務(wù)器端對HTTP請求的處理;所有的Servlet都必須直接或者間接地實(shí)現(xiàn)javax.servlet.Servlet接口,才能在Servlet Engine上運(yùn)行;Servlet的一些類和方法的說明 如果你的servlet類...
HTTP協(xié)議及其工作原理介紹
在HTTP通信中,每個(gè)HTTP請求報(bào)文都包含一個(gè)方法。用以告訴Web服務(wù)端需要執(zhí)行什么具體的動(dòng)作,這些動(dòng)作包括:獲取指定Web頁面、提交內(nèi)容...
HTTP客戶請求的數(shù)據(jù)格式說明(轉(zhuǎn)載)
HTTP客戶請求的數(shù)據(jù)格式說明(轉(zhuǎn)載)HTTP請求包括三部分:請求行(Request Line),頭部(Headers)和數(shù)據(jù)體(Body)。其中,請求行由請求方法(method),請求網(wǎng)址Request-URI和協(xié)議 (Protocol)構(gòu)成,而請求...
[C#]網(wǎng)絡(luò)編程系列:HTTP協(xié)議詳解
HTTP中文為超文本傳輸協(xié)議,從名字上很容易理解,Http協(xié)議就是將超文本標(biāo)記語言的文檔(即Html文檔)從web服務(wù)傳送到客戶端的瀏覽器。Ht...
推薦:如何快速的呈現(xiàn)我們的網(wǎng)頁
把JS跟CSS合并成一個(gè)文件 B.減小被請求文件大小,減少請求數(shù)據(jù)占用的網(wǎng)絡(luò)帶寬 壓縮JS體積:刪除JS中空白換行,注釋,混淆把長變量換成短變量;
python爬蟲從入門到放棄(二)之爬蟲的原理
python爬蟲從入門到放棄(二)之爬蟲的原理。爬蟲爬取數(shù)據(jù)時(shí)必須要有一個(gè)目標(biāo)的URL才可以獲取數(shù)據(jù),因此,它是爬蟲獲取數(shù)據(jù)的基本依據(jù)。...
TCP/IP和HTTP協(xié)議代理
TCP/IP和HTTP協(xié)議代理。TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)是用于計(jì)算機(jī)通信的一個(gè)協(xié)議族。TCP/IP協(xié)議族包括諸如Internet協(xié)議(IP)、地址解析...
微信掃碼,在手機(jī)上查看選中內(nèi)容