12-8-協議、請求、響應、畫布(驗證碼製作)

來源:互聯網
上載者:User

標籤: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-協議、請求、響應、畫布(驗證碼製作)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.