標籤:err codeing 網站 png charset cookie header rand int
fwrite(檔案控制代碼,寫入內容) 傳回值為寫入檔案的位元組長度
fopen(檔案路徑,開啟檔案) 這個便是檔案控制代碼
fclose(檔案控制代碼) 關閉檔案控制代碼
檔案控制代碼開啟後,可以對檔案進行讀寫操作,關閉檔案控制代碼便不能再對檔案進行讀寫操作了。
copy(被複製檔案路徑,複製後存放檔案的路徑) 複製檔案
存放位置要包含檔案名稱
unlink(檔案路徑) 刪除檔案
filemtime(檔案路徑) 返回制定檔案最後被修改的時間,得到一個時間戳記
filesize(檔案路徑) 返迴文件的大小,單位位元組
關於http的請求協議包:
1, 請求行(request-line)
請求方式—請求路徑—協議版本
需要單獨佔用一行,路徑不包括網域名稱
2, 要求標頭(request-line)
本次請求需要用到的所有協議項的集合
host:指明請求伺服器的主機名稱(網域名稱)
accept-encoding:gzip指明瀏覽器所支援的檔案壓縮編碼類別型
accept_charset:瀏覽器支援的字元集
referer此次請求來自哪個網址
accept-language:可以接受的語言類型
cookie:若有該網站的未到期cookie則代入cookie資料
user-agent:瀏覽器的核心資訊
accept:瀏覽器可以接受的資料類型
3, 空行
用來分隔要求標頭和請求資料,表名要求標頭到此結束
4, 請求資料(request-line)
請求的資料存放於此,比如註冊帳號時輸入的個人資訊。
使用telnet向伺服器發送請求
在cmd中: 1,telnet 192.168.148.10 80
2,ctrl+] 進行資料的回顯
3,輸入請求行、要求標頭、空行
每次telnet發送請求只能單次,再次使用需要重新開啟telnet
關於http相應協議包:
1, 響應行(狀態行)
協議版本、狀態代碼(404:請求資源不存在)、狀態原因
常見狀態代碼:
200 ok:請求成功
302 found:重新導向,配合回應標頭location使用,伺服器要求瀏覽器重新發起一次請求
404 not found:請求資源不存在
403 forbidden:沒有許可權訪問該資源
500 server internet error:伺服器內部錯誤,不能正常進行響應
獨佔一行
2, 回應標頭(也是一些協議的集合)
協議的集合
協議名:值
server:伺服器資訊
date:回應時間
last-modified:檔案最後修改時間
content-length:響應主體的長度(位元組)
content-type:相應內容的資料類型—text/html image/png
location:重新導向,瀏覽器遇到這個選項便立刻跳轉,不會解析後面的內容
refresh:重新導向,瀏覽器遇到這個選項會準備跳轉,時間到了便會跳轉,繼續向下解析
content-encodeing:檔案編碼格式
cache-control:緩衝控制,no-cached—不要緩衝
3, 空行
4, 響應主體(相應資料)
PHP類比http響應
通過header()函數
header(“協議名:協議值”);
header(“Content-Type:text/html;charset=utf-8”); 設定檔案編碼
header(“location:新的url或uri”); 設定跳轉,瀏覽器訪問到該行時進行跳轉(站內用uri)
header(“refresh:重新整理等待的時間;url=url或uri”) 在等待過程中,後面代碼將繼續執行
驗證碼
PHP預設沒有處理圖片的功能,所以要載入GD庫(圖片處理擴充)
php.ini——extension=php_gd2.dll
畫布: imagecreate(width,height); (256種顏色)
imagecreatetruecolor(width,height); (24位真彩)(一般使用)
顏色控制代碼: imagecolorallocate(img,red,green,blue);
img:畫布資源
繪製文字: imagestring(img,size,x,y,sting,color);
size:文字大小
x、y:起始座標(左上方為原點)
string:文字內容
color:顏色控制代碼
image<png|jpeg|gif>(畫布資源[,儲存路徑])
輸出時要使用header函數設定相應頭資訊,告訴瀏覽器這是個圖片
輸出前使用ob_clean()清理資料緩衝區
1, 填充背景
a) imagefill(img,x,y,color); 把座標點顏色相同且連續的地區填色
img:畫布資源
x、y:座標點
color:顏色控制代碼
2, 添加幹擾線
a) imageline(img,x1,y1,x2,y2,color);
3, 添加噪點(幹擾點)
a) imagesetpixel(img,x,y,color);
代碼實現:
1. img = imagecreatetruecolor(170,40);
2. backcolor = imagecolorallocate($img,mt_rand(180,255),mt_rand(0,255),mt_rand(180,255));
3. imaggefill($img,0,0,$backcolor);
4. $arr = array_merge(range(‘A’,’Z’),rang(‘a’,’z’),range(0,9));
5. shuffle($arr);
6. $rand_keys = arr_rand($arr,4);
7. $str = ‘’;
8. foreach($rand_key as $value){
$str .= $arr[$value];
}
9. $span = ceil(170/(4+1));
10. for($i=1;$i<=4;$i++){
$strcolor = imagecolorallocate($img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
imagestring($img,5,$i*$span,10,$str[$i-1],$strcolor);
}
11. for($i=1;$i<=6;$i++){
$linecolor = imagecolorallocate($img,mt_rand(5,100),mt_rand(50,100),mt_rand(0,100));
imageline($img,mt_rand(0,169),mt_rand(0,39),mt_rand(0,169),mt_rand(0,39),$linecolor);
}
12. for($i=1;$i<=170*40*0.03;$i++){
$pxcolor = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)
imagesetpixel($img,mt_rand(0,169),mt_rand(0,39),$pxcolor);
}
13. header(“Content-Type:image/png”);
ob_clean();
imagepng($img);
12-8-協議、請求、響應、畫布(驗證碼製作)