<meter id="19vbb"><span id="19vbb"></span></meter>

    style=\"background-color:#ddd; <\/span>\"<\/span><\/span>><\/span>\n<\/span>\n <\/span> create_image();\n<\/span><\/span> display();\n<\/span><\/span> \/***** definition of functions *****\/\n<\/span><\/span> function display()\n<\/span><\/span> {\n<\/span><\/span> ?><\/span>\n<\/span>\n style=\"text-align:center;<\/span>\"<\/span><\/span>><\/span>\n<\/span> ><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span> ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n style=\"display:block;margin-bottom:20px;margin-top:20px;<\/span>\"<\/span><\/span>><\/span>\n<\/span> src=\"image.png\"<\/span>><\/span>\n<\/span> <\/div<\/span>><\/span>\n<\/span> \/\/div1 ends\n <\/div<\/span>><\/span> \/\/div2 ends\n<\/span>\n <\/span> }\n<\/span><\/span>\n<\/span> function create_image()\n<\/span><\/span> {\n<\/span><\/span> $image = imagecreatetruecolor(200, 50);\n<\/span><\/span> imagepng($image, \"image.png\");\n<\/span><\/span> }\n<\/span><\/span>\n<\/span> ?><\/span>\n<\/span> <\/body<\/span>><\/span>\n<\/span><\/span>?><\/span><\/span><\/pre>\n

    生成隨機線。 <\/p>\n

    現(xiàn)在,我們實際上是從使驗證碼的失真部分開始。在PHP中,線從起點(x1,y1)到終點(x2,y2)生成?,F(xiàn)在,當我們希望線條觸摸盒子的兩端時,我們將保持坐標為,即我們的盒子的完整寬度。 坐標將被隨機生成。這將僅創(chuàng)建一個隨機行。我們將通過將此功能放入for循環(huán)中來生成多行。 \"帶有PHP和GD的簡單驗驗\"\n<\/y1><\/x1><\/p>\n

    imageLine()函數(shù)將x1,x2,y1,y2坐在該順序中作為參數(shù),除了線的圖像參考和顏色。線色已被分配,就像在上一步中分配了背景顏色一樣。 <\/h3>\n

    > y坐標是rand()*p給出的,因為這是我們盒子的高度,並且始終將返回50以下的值。您可以使用rand(0,50)。它們將產(chǎn)生相同的輸出範圍。 <\/p>\n

    $background_color = imagecolorallocate($image, 255, 255, 255);  \n<\/span>imagefilledrectangle($image,0,0,200,50,$background_color);<\/span><\/pre>\n

    <\/p>\n\n

    生成隨機點。 <\/p>\n

    隨機點將以與隨機線相同的方式生成。使用的函數(shù)是ImagesetPixel()。此函數(shù)採用將點將點放在框中的坐標值的值。 \"帶有PHP和GD的簡單驗驗\">\n<\/p>\n

    >通過使用rand()* 0隨機生成X坐標,因為這是我們盒子的寬度,這將始終返回200歲以下的值。您可以使用RAND(0,200)。它們將產(chǎn)生相同的輸出範圍。 y坐標的生成如線步中。<\/h3>\n

    \"帶有PHP和GD的簡單驗驗\" <\/p>\n

    生成隨機文本<\/h3>\n

    >我們將隨機指向字符串中的一個位置(其中包含在下層和高層中的字母),並將其分配給變量$ letter<\/p>>\n

    <\/span>session_start();\n<\/span><\/span>?><\/span>\n<\/span>\n    ><\/span>demo.php<\/title<\/span>><\/span>\n<\/span>    
    

    亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

    style=\"background-color:#ddd; <\/span>\"<\/span><\/span>><\/span>\n<\/span>\n <\/span> create_image();\n<\/span><\/span> display();\n<\/span><\/span> \/***** definition of functions *****\/\n<\/span><\/span> function display()\n<\/span><\/span> {\n<\/span><\/span> ?><\/span>\n<\/span>\n style=\"text-align:center;<\/span>\"<\/span><\/span>><\/span>\n<\/span> ><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span> ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n style=\"display:block;margin-bottom:20px;margin-top:20px;<\/span>\"<\/span><\/span>><\/span>\n<\/span> src=\"image.png\"<\/span>><\/span>\n<\/span> <\/div<\/span>><\/span>\n<\/span> \/\/div1 ends\n <\/div<\/span>><\/span> \/\/div2 ends\n<\/span>\n <\/span> }\n<\/span><\/span>\n<\/span> function create_image()\n<\/span><\/span> {\n<\/span><\/span> $image = imagecreatetruecolor(200, 50);\n<\/span><\/span> imagepng($image, \"image.png\");\n<\/span><\/span> }\n<\/span><\/span>\n<\/span> ?><\/span>\n<\/span> <\/body<\/span>><\/span>\n<\/span><\/span>?><\/span><\/span><\/pre>\n

    放入循環(huán)時,看起來像<\/p>\n

    $background_color = imagecolorallocate($image, 255, 255, 255);  \n<\/span>imagefilledrectangle($image,0,0,200,50,$background_color);<\/span><\/pre>\n

    我們將解釋行<\/p>>\n

    $line_color = imagecolorallocate($image, 64,64,64); \n<\/span>for($i=0;$i<10;$i++) {\n<\/span>    imageline($image,0,rand()%50,200,rand()%50,$line_color);\n<\/span>}<\/span><\/pre>\n

    在下一節(jié)中。 <\/p>\n

    函數(shù)Imagestring()在我們的圖像中寫入文本。它有6個參數(shù):<\/p>\n

      \n
    1. >圖像參考。 <\/li>\n文本的字體大?。ㄗ疃嗫梢允?)。
    2. \n<\/li> x坐標(每個字母比例更改)。
    3. \n<\/li>y坐標(保持相同,儘管我們也可以隨機更改此)。
    4. \n<\/li>>要編寫的實際字符串。
    5. \n文本的字體色。 <\/li>\n
    6. \n如果您希望具有更大的字體和不同的字體樣式,<\/li>>也可以使用函數(shù)imagettftext()。對於文本的角度和字體樣式,它還需要2個其他論點。 <\/ol>\n

      X坐標的計算是通過檢查完成的。大概,這些字母的間距約為35個像素(5($ i*30)),其中$ i = 0,1,2,3,4,5,6。這是因為如果我們將這個值保持在15-20px左右,則可能會有兩個字母重疊。如果該值超過40px,則完全不適合盒子。\n<\/p>這將生成6個字母驗證碼文本。我們始終可以通過更改由於簡單性(例如顏色,Y-Coordine等)來創(chuàng)造更多的隨機性,例如\n

      最終的驗證碼看起來像這樣<\/p>>\n

      <\/p>

      \n<\/p>每次您刷新頁面時,在驗證碼中寫的文本都會更改。

      \n可以通過使用像素或更改顏色或大小來創(chuàng)建設(shè)計來實現(xiàn)更多隨機性。 \"帶有PHP和GD的簡單驗驗\">\n<\/p>驗證

      \n
      >在這裡採取用戶的響應(yīng),然後在處理後,他\/她會收到答復(fù)。首先,使用輸入文本框和提交按鈕製作一個簡單的表單。根據(jù)複雜的Web應(yīng)用程序的要求,可以有許多方法來處理驗證碼。但是,出於此示例,請保持簡單,我們將在同一頁面上對其進行處理。 <\/p>\n

      >在上一個代碼段中未解釋的兩行現(xiàn)在開始發(fā)揮作用:>\n<\/ancy>\n<\/h2>\n

      $ word。 = $ letter; - 串聯(lián)操作員。用於一個接一個地附加所有單個字母,生成6個字母的單詞。 <\/p>\n

      $ _ session ['catcha_string'] = $ word;我們的驗證碼字符串存儲在會話變量中,該變量將用於驗證目的。 <\/p>>\n

        \n
      1. 我們將更改display()的定義以添加類似形式的結(jié)構(gòu)。 >\n<\/ancy>\n<\/li>將使用兩個提交按鈕,一個將字符串提交,另一個提交按鈕刷新頁面。
      2. \n<\/li>>將在兩個關(guān)閉的DIV標籤之間添加以下行(請參閱上一個display()函數(shù)中的註釋)<\/ol>>
        <\/span>session_start();\n<\/span><\/span>?><\/span>\n<\/span>\n    ><\/span>demo.php<\/title<\/span>><\/span>\n<\/span>     style=\"background-color:#ddd; <\/span>\"<\/span><\/span>><\/span>\n<\/span>\n    <\/span>    create_image();\n<\/span><\/span>    display();\n<\/span><\/span>    \/***** definition of functions *****\/\n<\/span><\/span>    function display()\n<\/span><\/span>    {\n<\/span><\/span>        ?><\/span>\n<\/span>\n         style=\"text-align:center;<\/span>\"<\/span><\/span>><\/span>\n<\/span>            ><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span>            ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n             style=\"display:block;margin-bottom:20px;margin-top:20px;<\/span>\"<\/span><\/span>><\/span>\n<\/span>                 src=\"image.png\"<\/span>><\/span>\n<\/span>            <\/div<\/span>><\/span>\n<\/span>            \/\/div1 ends\n        <\/div<\/span>><\/span>                          \/\/div2 ends\n<\/span>\n    <\/span>    }\n<\/span><\/span>\n<\/span>    function  create_image()\n<\/span><\/span>    {\n<\/span><\/span>        $image = imagecreatetruecolor(200, 50);\n<\/span><\/span>        imagepng($image, \"image.png\");\n<\/span><\/span>    }\n<\/span><\/span>\n<\/span>    ?><\/span>\n<\/span>    <\/body<\/span>><\/span>\n<\/span><\/span>?><\/span><\/span><\/pre>\n

        >在進一步移動之前,我們必須知道何時顯示以及何時不顯示輸入框。它將僅顯示<\/p>>\n

          \n
        1. 如果頁面剛剛加載。 <\/li>\n
        2. 如果用戶的答案不正確。 <\/li>\n<\/ol>\n\n

          >每次單擊提交按鈕時,使用$標誌設(shè)置為“ 1”來滿足第一個條件。最初,它已設(shè)置為任何其他值。通過檢查我們的會話變量中存儲的值是否與用戶輸入相同(請參見下面的代碼)來實現(xiàn)第二個條件。 <\/p>\n為了實現(xiàn)這一目標,我們將在本文開頭替換開始步驟的以下幾行:>\n

          \n<\/p> with:

          $background_color = imagecolorallocate($image, 255, 255, 255);  \n<\/span>imagefilledrectangle($image,0,0,200,50,$background_color);<\/span><\/pre>\n

          \n<\/p>請注意,函數(shù)create_image()和display()僅按照上述2個條件來調(diào)用。

          $line_color = imagecolorallocate($image, 64,64,64); \n<\/span>for($i=0;$i<10;$i++) {\n<\/span>    imageline($image,0,rand()%50,200,rand()%50,$line_color);\n<\/span>}<\/span><\/pre>\n

          >我們需要上一頁的會話變量,因此會話不會在此處銷毀。關(guān)閉瀏覽器窗口後,會話將自動銷毀。 <\/p>>\n

          驗證碼看起來像<\/p>\n

          <\/p>

          \n\"帶有PHP和GD的簡單驗驗\"如果輸入不正確,則只有然後再次提示用戶。 <\/p>>\n

          <\/p>

          \n\"帶有PHP和GD的簡單驗驗\"如果輸入正確,則將向用戶顯示消息。 <\/p>>\n

          <\/p>

          \n\"帶有PHP和GD的簡單驗驗\">有一個小警告 - 當用戶按下返回按鈕時,瀏覽器緩存中的任何圖像都不會重新加載,而頁面則可以。在發(fā)布請求中,瀏覽器返回按鈕將顯示一個“過期的文檔”頁面,但是當請求獲取時,圖像不會再生。 <\/p>>\n

          解決方案很簡單 - 每次創(chuàng)建圖像的唯一名稱,以便瀏覽器在緩存中找不到它們。我們將在創(chuàng)建和顯示在瀏覽器中時,將一個唯一的字符串通過內(nèi)置時間()函數(shù)返回給我們。 <\/p>。\n

          >在您開始會話的位置下方添加此行:<\/p>\n

          \n<\/p>>用

          $pixel_color = imagecolorallocate($image, 0,0,255);\n<\/span>for($i=0;$i<1000;$i++) {\n<\/span>    imagesetpixel($image,rand()%200,rand()%50,$pixel_color);\n<\/span>}  <\/span><\/pre>>替換顯示()函數(shù)中的img src標籤\n

          \n<\/p>以及我們在create_image()函數(shù)中創(chuàng)建png映像的部分也將被

          $letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n<\/span>$len = strlen($letters);\n<\/span>$letter = $letters[rand(0, $len-1)];\n<\/span>\n$text_color = imagecolorallocate($image, 0,0,0);<\/span><\/pre>替換\n

          \n<\/p>現(xiàn)在,圖像將被稱為Image39342015.png。此過程將隨著頁面的刷新而創(chuàng)建的圖像多次,這可能會浪費大量的磁盤空間,因此,我們將確保在創(chuàng)建圖像之前,刪除了PNG擴展名的所有其他圖像。在調(diào)用ImagePNG()函數(shù)之前添加以下內(nèi)容。

          for ($i = 0; $i< 6;$i++) {\n<\/span>    $letter = $letters[rand(0, $len-1)];\n<\/span>    imagestring($image, 5,  5+($i*30), 20, $letter, $text_color);\n<\/span>    $word.=$letter;\n<\/span>}\n<\/span>$_SESSION['captcha_string'] = $word;<\/span><\/pre>\n

          \n在生產(chǎn)應(yīng)用程序中,只需確保您隔離存儲驗證碼圖像的文件夾,其他有用的圖像也可能會被刪除。 <\/p>\n

          $word.=$letter;\n<\/span>$_SESSION['captcha_string'] = $word;   <\/span><\/pre>>在此處下載完整的代碼。  

          <\/p>\n

          結(jié)論<\/h2>\n在PHP中製作各種類型的驗證碼非常容易。本文介紹了用於創(chuàng)建標準驗證碼的三個基本內(nèi)容 - 形狀,失真和文本。本文是概念證明,本文介紹的代碼不應(yīng)在生產(chǎn)中使用,尤其是因為存在諸如recaptcha之類的優(yōu)秀替代方案,這也支持聲音輸出以幫助有聽力障礙的人。我們希望您發(fā)現(xiàn)這篇文章很有趣。在下面留下您的評論和反饋!

          >\n\n\n\n<\/p>經(jīng)常詢問的問題(常見問題解答)關(guān)於帶有PHP GD

          的簡單驗證\n\n\n\n<\/h2>>如何自定義驗證碼的外觀?

          <\/h3>>可以通過修改PHP代碼來自定義驗證碼的外觀。您可以更改字體,顏色,尺寸,甚至可以更改驗證碼的背景。例如,要更改字體,您可以使用imagettftext()函數(shù)並在參數(shù)中指定字體文件。要更改顏色,您可以使用ImageColorallocate()函數(shù)並指定所需顏色的RGB值。請記住,自定義不僅使您的驗證碼更加美觀,而且更加安全地抵抗機器人。

          ><\/p>>如何使我的驗證碼更安全?

          >有幾種使驗證碼更安全的方法。一種方法是使用上和下情況的字母數(shù)字字符的混合。這增加了可能的組合數(shù)量,因此機器人更難猜測。您還可以增加驗證碼的長度。另一種方法是將噪聲(例如線或點)添加到驗證碼圖像中??梢允褂肐mageLine()和ImageLeLipse()函數(shù)在php。 <\/h3>>

          中完成此操作?幾個原因。一個常見的原因是,在PHP安裝中未安裝或啟用GD庫。您可以使用function_Exists('gd_info')函數(shù)檢查此功能。如果返回false,則未啟用GD。另一個原因可能是您的PHP代碼中的錯誤。確保檢查您的錯誤日誌是否有任何線索。 <\/p>\n

          如何實現(xiàn)刷新驗證驗證功能? <\/h3>\n

          可以使用AJAX實現(xiàn)刷新驗證驗證功能。您需要創(chuàng)建一個JavaScript函數(shù),該功能將請求發(fā)送到服務(wù)器以生成新的驗證碼。然後,該服務(wù)器使用新的驗證碼映像進行響應(yīng),然後在沒有完整頁面的網(wǎng)頁上更新網(wǎng)頁上。 <\/p>

          我可以在沒有GD庫的情況下使用CACTCHA嗎? <\/ante>\n<\/h3>\n

          <\/p>\n

          ,而GD庫通常用於用於在PHP中創(chuàng)建驗證碼,這不是唯一的方法。您也可以使用其他庫,例如ImageMagick,甚至可以創(chuàng)建基於文本的驗證碼。但是,這些方法可能無法提供與GD庫相同的安全性和自定義。

          >如何將CAPTCHA添加到我的觸點表格? <\/h3>\n<\/h3>\n

          >向您的聯(lián)繫表中添加驗證碼涉及修改表單的HTML和PHP代碼。在HTML中,您需要為驗證碼添加一個圖像標籤和一個輸入字段,以便用戶輸入驗證碼。在PHP中,您需要生成驗證碼並驗證用戶的輸入。 <\/p>>

          >為什麼我的驗證驗證驗證不起作用? <\/h3>>

          如果您的驗證碼驗證不起作用,則可以到期有幾個原因。一個常見的原因是,會話變量未正確設(shè)置或檢索。在將任何輸出發(fā)送到瀏覽器之前,請確保調(diào)用Session_Start(),並且會話變量正在正確使用。另一個原因可能是用戶的輸入未與驗證碼正確進行比較。如果您的驗證碼包含上部和下案例字符,請確保使用不敏感的比較。 <\/p>>

          >如何使我的驗證碼可訪問視覺受損的用戶? <\/ancy>\n<\/h3>>使您的驗證碼可訪問以視覺上的鍵盤訪問受損的用戶可能具有挑戰(zhàn)性,但是有幾種方法。一種方法是提供音頻驗證碼選項。這涉及生成帶有驗證碼字符大聲說出來的音頻文件。另一種方法是使用一個基於問題的驗證碼,在其中詢問用戶一個簡單的問題,即一個機器人很難回答。

          > <\/p> bot仍然可以繞過我的驗證碼嗎?為防止機器人而設(shè)計,它們不是萬無一失的。高級機器人可以使用OCR(光學字符識別)讀取CAPTCHA字符。但是,通過使您的驗證碼更加複雜,例如使用字符的混合,添加噪音並定期更改驗證碼,您可以使bot更難繞過。

          <\/h3>是CAPTCHA,是防止垃圾郵件的唯一方法?

          <\/p> CAPTCHA是防止垃圾郵件的常見方法,但這不是唯一的方法。其他方法包括使用Honeypot,這是一個隱藏的表單字段,該字段將填寫,但人類不會檢查用戶的行為,例如填寫表單所花費的時間,並使用諸如Akismet之類的服務(wù),該服務(wù)已過濾出來垃圾郵件基於已知垃圾郵件的數(shù)據(jù)庫。

          <\/h3><\/ancy><\/ancy><\/ancy>"}
          目錄
          >在瀏覽器上顯示一個空圖像。
          將顏色分配給變量,因為它將顏色的RGB組合作為參數(shù)。以下代碼將附加在create()函數(shù)中。
          imageLine()函數(shù)將x1,x2,y1,y2坐在該順序中作為參數(shù),除了線的圖像參考和顏色。線色已被分配,就像在上一步中分配了背景顏色一樣。
          >通過使用rand()* 0隨機生成X坐標,因為這是我們盒子的寬度,這將始終返回200歲以下的值。您可以使用RAND(0,200)。它們將產(chǎn)生相同的輸出範圍。 y坐標的生成如線步中。
          生成隨機文本
          結(jié)論
          >有幾種使驗證碼更安全的方法。一種方法是使用上和下情況的字母數(shù)字字符的混合。這增加了可能的組合數(shù)量,因此機器人更難猜測。您還可以增加驗證碼的長度。另一種方法是將噪聲(例如線或點)添加到驗證碼圖像中??梢允褂肐mageLine()和ImageLeLipse()函數(shù)在php。
          如何實現(xiàn)刷新驗證驗證功能?
          ,而GD庫通常用於用於在PHP中創(chuàng)建驗證碼,這不是唯一的方法。您也可以使用其他庫,例如ImageMagick,甚至可以創(chuàng)建基於文本的驗證碼。但是,這些方法可能無法提供與GD庫相同的安全性和自定義。

          >如何將CAPTCHA添加到我的觸點表格?

          >為什麼我的驗證驗證驗證不起作用?
          首頁 後端開發(fā) php教程 帶有PHP和GD的簡單驗驗

          帶有PHP和GD的簡單驗驗

          Feb 22, 2025 am 09:13 AM

          帶有PHP和GD的簡單驗驗

          帶有PHP和GD的簡單驗驗

          到目前為止,我們都以在線表格遇到了Captcha圖像。驗證碼是必不可少的邪惡,本文將教您如何製作它們。

          >請注意,儘管有更好的自動第三方解決方案,例如Recaptcha,但該教程旨在僅解釋和證明此類技術(shù)的實際運行方式。我們不會解釋什麼驗證碼實際上是什麼,因為它被認為是常識,並且已經(jīng)在其他地方進行了更詳細的範圍。

          鑰匙要點

          PHP中的GD(圖形繪製)庫可用於創(chuàng)建驗證碼圖像,該圖像通常由形狀,失真和文本組成。

          驗證碼創(chuàng)建過程涉及顯示一個空圖像,創(chuàng)建形狀,生成隨機線和點以及生成隨機文本。
          • 碼驗證驗證過程涉及將用戶的輸入與會話變量中存儲的驗證碼字符串進行比較。如果輸入與驗證碼字符串匹配,則將用戶的響應(yīng)視為正確。
          • > 為了確保始終刷新驗證碼圖像,並且不會從瀏覽器緩存中檢索,可以使用php。
          • 本教程演示瞭如何創(chuàng)建簡單的驗證碼,建議使用更安全,更可訪問的第三方解決方案(例如recaptcha)進行生產(chǎn)應(yīng)用程序。
          • 繪製驗證碼
          • >您必須在繼續(xù)之前安裝GD(圖形繪製)庫。該庫可以通過內(nèi)置的PHP功能繪製圖形和圖像。要安裝它,請運行sudo apt-get安裝php5-gd或在基於非Ubuntu的操作系統(tǒng)上,請按照說明進行操作。
          • 驗證碼通常由三件事組成 - 形狀,失真和文本。
          • 我們將遵循下面提到的步驟:

          >在瀏覽器上顯示一個空圖像。

          >創(chuàng)建一個形狀。

          生成隨機線。

          生成隨機點。
          1. 生成隨機文本。
          2. 本文中使用的過程樣式僅出現(xiàn)僅是因為這是概念的證明,並且使最終文件盡可能簡單。在一個真實的項目中,您會oop。
          3. >
          4. 顯示一個空圖像
          5. >圖像將由HTML處理,就好像使用“ IMG”標籤顯示外部圖像一樣。使用了兩個功能 - 一個用於創(chuàng)建圖像,另一個用於顯示。
          6. >
          第一行指示在我們頁面上用戶會話的開始。

          display()函數(shù)除了在瀏覽器中顯示圖像的普通HTML代碼外,沒有其他內(nèi)容。除此之外,只能進行樣式以使輸出看起來可顯示。

          >在Create_image()函數(shù)中,使用一個變量來引用ImageCreateTureColor()函數(shù)返回的圖像,該函數(shù)以圖像的寬度和長度作為其參數(shù)。 ImagePng()創(chuàng)建指定名稱和路徑的PNG圖像(在同一目錄中)。

          黑色圖像將是我們的第一步之後的輸出。

          請注意,功能imagepng()將是我們函數(shù)的最後一行,以下所有步驟將僅在此函數(shù)調(diào)用之前插入create_image()函數(shù)中,否則它們不會生效。 帶有PHP和GD的簡單驗驗

          創(chuàng)建一個形狀

          可以為驗證碼選擇任何形狀。我們將使用函數(shù)ImageFilledRectangle()選擇矩形。它需要五個參數(shù) - 圖像參考,啟動X-POS,啟動Y-POS,結(jié)束X-POS,結(jié)束Y-POS和背景顏色。您可以使用相應(yīng)的函數(shù)作為橢圓驗驗。 ImageColaralocate()函數(shù)

          將顏色分配給變量,因為它將顏色的RGB組合作為參數(shù)。以下代碼將附加在create()函數(shù)中。

          在此步驟之後,上圖將是白色的。

          <span><span><?php
          </span></span><span><span>session_start();
          </span></span><span><span>?></span>
          </span>
              <span><span><span><title</span>></span>demo.php<span><span></title</span>></span>
          </span>    <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span>
          </span>
              <span><span><?php
          </span></span><span>    <span>create_image();
          </span></span><span>    <span>display();
          </span></span><span>    <span>/***** definition of functions *****/
          </span></span><span>    <span>function display()
          </span></span><span>    <span>{
          </span></span><span>        <span>?></span>
          </span>
                  <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span>
          </span>            <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span>
          </span>            <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span>
          </span>
                      <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span>
          </span>                <span><span><span><img</span> src<span>="image.png"</span>></span>
          </span>            <span><span><span></div</span>></span>
          </span>            //div1 ends
                  <span><span><span></div</span>></span>                          //div2 ends
          </span>
              <span><span><?php
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>function  create_image()
          </span></span><span>    <span>{
          </span></span><span>        <span>$image = imagecreatetruecolor(200, 50);
          </span></span><span>        <span>imagepng($image, "image.png");
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>?></span>
          </span>    <span><span><span></body</span>></span>
          </span><span><span><?php
          </span></span><span><span>?></span></span>

          生成隨機線。

          現(xiàn)在,我們實際上是從使驗證碼的失真部分開始。在PHP中,線從起點(x1,y1)到終點(x2,y2)生成?,F(xiàn)在,當我們希望線條觸摸盒子的兩端時,我們將保持坐標為,即我們的盒子的完整寬度。 坐標將被隨機生成。這將僅創(chuàng)建一個隨機行。我們將通過將此功能放入for循環(huán)中來生成多行。 帶有PHP和GD的簡單驗驗

          imageLine()函數(shù)將x1,x2,y1,y2坐在該順序中作為參數(shù),除了線的圖像參考和顏色。線色已被分配,就像在上一步中分配了背景顏色一樣。

          > y坐標是rand()*p給出的,因為這是我們盒子的高度,並且始終將返回50以下的值。您可以使用rand(0,50)。它們將產(chǎn)生相同的輸出範圍。

          <span>$background_color = imagecolorallocate($image, 255, 255, 255);  
          </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>

          生成隨機點。

          隨機點將以與隨機線相同的方式生成。使用的函數(shù)是ImagesetPixel()。此函數(shù)採用將點將點放在框中的坐標值的值。 帶有PHP和GD的簡單驗驗>

          >通過使用rand()* 0隨機生成X坐標,因為這是我們盒子的寬度,這將始終返回200歲以下的值。您可以使用RAND(0,200)。它們將產(chǎn)生相同的輸出範圍。 y坐標的生成如線步中。

          帶有PHP和GD的簡單驗驗

          生成隨機文本

          >我們將隨機指向字符串中的一個位置(其中包含在下層和高層中的字母),並將其分配給變量$ letter

          >
          <span><span><?php
          </span></span><span><span>session_start();
          </span></span><span><span>?></span>
          </span>
              <span><span><span><title</span>></span>demo.php<span><span></title</span>></span>
          </span>    <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span>
          </span>
              <span><span><?php
          </span></span><span>    <span>create_image();
          </span></span><span>    <span>display();
          </span></span><span>    <span>/***** definition of functions *****/
          </span></span><span>    <span>function display()
          </span></span><span>    <span>{
          </span></span><span>        <span>?></span>
          </span>
                  <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span>
          </span>            <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span>
          </span>            <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span>
          </span>
                      <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span>
          </span>                <span><span><span><img</span> src<span>="image.png"</span>></span>
          </span>            <span><span><span></div</span>></span>
          </span>            //div1 ends
                  <span><span><span></div</span>></span>                          //div2 ends
          </span>
              <span><span><?php
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>function  create_image()
          </span></span><span>    <span>{
          </span></span><span>        <span>$image = imagecreatetruecolor(200, 50);
          </span></span><span>        <span>imagepng($image, "image.png");
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>?></span>
          </span>    <span><span><span></body</span>></span>
          </span><span><span><?php
          </span></span><span><span>?></span></span>

          放入循環(huán)時,看起來像

          <span>$background_color = imagecolorallocate($image, 255, 255, 255);  
          </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>

          我們將解釋行

          >
          <span>$line_color = imagecolorallocate($image, 64,64,64); 
          </span><span>for($i=0;$i<10;$i++) {
          </span>    <span>imageline($image,0,rand()%50,200,rand()%50,$line_color);
          </span><span>}</span>

          在下一節(jié)中。

          函數(shù)Imagestring()在我們的圖像中寫入文本。它有6個參數(shù):

          1. >圖像參考。
          2. 文本的字體大?。ㄗ疃嗫梢允?)。
          3. x坐標(每個字母比例更改)。
          4. y坐標(保持相同,儘管我們也可以隨機更改此)。
          5. >要編寫的實際字符串。
          6. 文本的字體色。
          7. 如果您希望具有更大的字體和不同的字體樣式,
          8. >也可以使用函數(shù)imagettftext()。對於文本的角度和字體樣式,它還需要2個其他論點。

          X坐標的計算是通過檢查完成的。大概,這些字母的間距約為35個像素(5($ i*30)),其中$ i = 0,1,2,3,4,5,6。這是因為如果我們將這個值保持在15-20px左右,則可能會有兩個字母重疊。如果該值超過40px,則完全不適合盒子。

          這將生成6個字母驗證碼文本。我們始終可以通過更改由於簡單性(例如顏色,Y-Coordine等)來創(chuàng)造更多的隨機性,例如

          最終的驗證碼看起來像這樣

          >

          每次您刷新頁面時,在驗證碼中寫的文本都會更改。

          可以通過使用像素或更改顏色或大小來創(chuàng)建設(shè)計來實現(xiàn)更多隨機性。 帶有PHP和GD的簡單驗驗>

          驗證


          >在這裡採取用戶的響應(yīng),然後在處理後,他/她會收到答復(fù)。首先,使用輸入文本框和提交按鈕製作一個簡單的表單。根據(jù)複雜的Web應(yīng)用程序的要求,可以有許多方法來處理驗證碼。但是,出於此示例,請保持簡單,我們將在同一頁面上對其進行處理。

          >在上一個代碼段中未解釋的兩行現(xiàn)在開始發(fā)揮作用:>

          $ word。 = $ letter; - 串聯(lián)操作員。用於一個接一個地附加所有單個字母,生成6個字母的單詞。

          $ _ session ['catcha_string'] = $ word;我們的驗證碼字符串存儲在會話變量中,該變量將用於驗證目的。

          >
          1. 我們將更改display()的定義以添加類似形式的結(jié)構(gòu)。 >
          2. 將使用兩個提交按鈕,一個將字符串提交,另一個提交按鈕刷新頁面。
          3. >將在兩個關(guān)閉的DIV標籤之間添加以下行(請參閱上一個display()函數(shù)中的註釋)
          >
          <span><span><?php
          </span></span><span><span>session_start();
          </span></span><span><span>?></span>
          </span>
              <span><span><span><title</span>></span>demo.php<span><span></title</span>></span>
          </span>    <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span>
          </span>
              <span><span><?php
          </span></span><span>    <span>create_image();
          </span></span><span>    <span>display();
          </span></span><span>    <span>/***** definition of functions *****/
          </span></span><span>    <span>function display()
          </span></span><span>    <span>{
          </span></span><span>        <span>?></span>
          </span>
                  <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span>
          </span>            <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span>
          </span>            <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span>
          </span>
                      <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span>
          </span>                <span><span><span><img</span> src<span>="image.png"</span>></span>
          </span>            <span><span><span></div</span>></span>
          </span>            //div1 ends
                  <span><span><span></div</span>></span>                          //div2 ends
          </span>
              <span><span><?php
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>function  create_image()
          </span></span><span>    <span>{
          </span></span><span>        <span>$image = imagecreatetruecolor(200, 50);
          </span></span><span>        <span>imagepng($image, "image.png");
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>?></span>
          </span>    <span><span><span></body</span>></span>
          </span><span><span><?php
          </span></span><span><span>?></span></span>

          >在進一步移動之前,我們必須知道何時顯示以及何時不顯示輸入框。它將僅顯示

          >
          1. 如果頁面剛剛加載。
          2. 如果用戶的答案不正確。

          >每次單擊提交按鈕時,使用$標誌設(shè)置為“ 1”來滿足第一個條件。最初,它已設(shè)置為任何其他值。通過檢查我們的會話變量中存儲的值是否與用戶輸入相同(請參見下面的代碼)來實現(xiàn)第二個條件。

          為了實現(xiàn)這一目標,我們將在本文開頭替換開始步驟的以下幾行:>

          with:
          <span>$background_color = imagecolorallocate($image, 255, 255, 255);  
          </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>

          請注意,函數(shù)create_image()和display()僅按照上述2個條件來調(diào)用。
          <span>$line_color = imagecolorallocate($image, 64,64,64); 
          </span><span>for($i=0;$i<10;$i++) {
          </span>    <span>imageline($image,0,rand()%50,200,rand()%50,$line_color);
          </span><span>}</span>

          >我們需要上一頁的會話變量,因此會話不會在此處銷毀。關(guān)閉瀏覽器窗口後,會話將自動銷毀。

          >

          驗證碼看起來像

          帶有PHP和GD的簡單驗驗如果輸入不正確,則只有然後再次提示用戶。

          >

          帶有PHP和GD的簡單驗驗如果輸入正確,則將向用戶顯示消息。

          >

          帶有PHP和GD的簡單驗驗>有一個小警告 - 當用戶按下返回按鈕時,瀏覽器緩存中的任何圖像都不會重新加載,而頁面則可以。在發(fā)布請求中,瀏覽器返回按鈕將顯示一個“過期的文檔”頁面,但是當請求獲取時,圖像不會再生。

          >

          解決方案很簡單 - 每次創(chuàng)建圖像的唯一名稱,以便瀏覽器在緩存中找不到它們。我們將在創(chuàng)建和顯示在瀏覽器中時,將一個唯一的字符串通過內(nèi)置時間()函數(shù)返回給我們。

          。

          >在您開始會話的位置下方添加此行:

          >用
          <span>$pixel_color = imagecolorallocate($image, 0,0,255);
          </span><span>for($i=0;$i<1000;$i++) {
          </span>    <span>imagesetpixel($image,rand()%200,rand()%50,$pixel_color);
          </span><span>}  </span>
          >替換顯示()函數(shù)中的img src標籤

          以及我們在create_image()函數(shù)中創(chuàng)建png映像的部分也將被
          <span>$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
          </span><span>$len = strlen($letters);
          </span><span>$letter = $letters[rand(0, $len-1)];
          </span>
          <span>$text_color = imagecolorallocate($image, 0,0,0);</span>
          替換

          現(xiàn)在,圖像將被稱為Image39342015.png。此過程將隨著頁面的刷新而創(chuàng)建的圖像多次,這可能會浪費大量的磁盤空間,因此,我們將確保在創(chuàng)建圖像之前,刪除了PNG擴展名的所有其他圖像。在調(diào)用ImagePNG()函數(shù)之前添加以下內(nèi)容。
          <span>for ($i = 0; $i< 6;$i++) {
          </span>    <span>$letter = $letters[rand(0, $len-1)];
          </span>    <span>imagestring($image, 5,  5+($i*30), 20, $letter, $text_color);
          </span>    <span>$word.=$letter;
          </span><span>}
          </span><span>$_SESSION['captcha_string'] = $word;</span>

          在生產(chǎn)應(yīng)用程序中,只需確保您隔離存儲驗證碼圖像的文件夾,其他有用的圖像也可能會被刪除。

          <span>$word.=$letter;
          </span><span>$_SESSION['captcha_string'] = $word;   </span>
          >在此處下載完整的代碼。

          結(jié)論

          在PHP中製作各種類型的驗證碼非常容易。本文介紹了用於創(chuàng)建標準驗證碼的三個基本內(nèi)容 - 形狀,失真和文本。本文是概念證明,本文介紹的代碼不應(yīng)在生產(chǎn)中使用,尤其是因為存在諸如recaptcha之類的優(yōu)秀替代方案,這也支持聲音輸出以幫助有聽力障礙的人。我們希望您發(fā)現(xiàn)這篇文章很有趣。在下面留下您的評論和反饋!

          >

          經(jīng)常詢問的問題(常見問題解答)關(guān)於帶有PHP GD

          的簡單驗證

          >如何自定義驗證碼的外觀?

          >可以通過修改PHP代碼來自定義驗證碼的外觀。您可以更改字體,顏色,尺寸,甚至可以更改驗證碼的背景。例如,要更改字體,您可以使用imagettftext()函數(shù)並在參數(shù)中指定字體文件。要更改顏色,您可以使用ImageColorallocate()函數(shù)並指定所需顏色的RGB值。請記住,自定義不僅使您的驗證碼更加美觀,而且更加安全地抵抗機器人。

          >

          >如何使我的驗證碼更安全?

          >有幾種使驗證碼更安全的方法。一種方法是使用上和下情況的字母數(shù)字字符的混合。這增加了可能的組合數(shù)量,因此機器人更難猜測。您還可以增加驗證碼的長度。另一種方法是將噪聲(例如線或點)添加到驗證碼圖像中??梢允褂肐mageLine()和ImageLeLipse()函數(shù)在php。

          >

          中完成此操作?幾個原因。一個常見的原因是,在PHP安裝中未安裝或啟用GD庫。您可以使用function_Exists('gd_info')函數(shù)檢查此功能。如果返回false,則未啟用GD。另一個原因可能是您的PHP代碼中的錯誤。確保檢查您的錯誤日誌是否有任何線索。

          如何實現(xiàn)刷新驗證驗證功能?

          可以使用AJAX實現(xiàn)刷新驗證驗證功能。您需要創(chuàng)建一個JavaScript函數(shù),該功能將請求發(fā)送到服務(wù)器以生成新的驗證碼。然後,該服務(wù)器使用新的驗證碼映像進行響應(yīng),然後在沒有完整頁面的網(wǎng)頁上更新網(wǎng)頁上。

          我可以在沒有GD庫的情況下使用CACTCHA嗎?

          ,而GD庫通常用於用於在PHP中創(chuàng)建驗證碼,這不是唯一的方法。您也可以使用其他庫,例如ImageMagick,甚至可以創(chuàng)建基於文本的驗證碼。但是,這些方法可能無法提供與GD庫相同的安全性和自定義。

          >如何將CAPTCHA添加到我的觸點表格?

          >向您的聯(lián)繫表中添加驗證碼涉及修改表單的HTML和PHP代碼。在HTML中,您需要為驗證碼添加一個圖像標籤和一個輸入字段,以便用戶輸入驗證碼。在PHP中,您需要生成驗證碼並驗證用戶的輸入。

          >

          >為什麼我的驗證驗證驗證不起作用?

          >

          如果您的驗證碼驗證不起作用,則可以到期有幾個原因。一個常見的原因是,會話變量未正確設(shè)置或檢索。在將任何輸出發(fā)送到瀏覽器之前,請確保調(diào)用Session_Start(),並且會話變量正在正確使用。另一個原因可能是用戶的輸入未與驗證碼正確進行比較。如果您的驗證碼包含上部和下案例字符,請確保使用不敏感的比較。

          >

          >如何使我的驗證碼可訪問視覺受損的用戶?

          >使您的驗證碼可訪問以視覺上的鍵盤訪問受損的用戶可能具有挑戰(zhàn)性,但是有幾種方法。一種方法是提供音頻驗證碼選項。這涉及生成帶有驗證碼字符大聲說出來的音頻文件。另一種方法是使用一個基於問題的驗證碼,在其中詢問用戶一個簡單的問題,即一個機器人很難回答。

          >

          bot仍然可以繞過我的驗證碼嗎?為防止機器人而設(shè)計,它們不是萬無一失的。高級機器人可以使用OCR(光學字符識別)讀取CAPTCHA字符。但是,通過使您的驗證碼更加複雜,例如使用字符的混合,添加噪音並定期更改驗證碼,您可以使bot更難繞過。

          是CAPTCHA,是防止垃圾郵件的唯一方法?

          CAPTCHA是防止垃圾郵件的常見方法,但這不是唯一的方法。其他方法包括使用Honeypot,這是一個隱藏的表單字段,該字段將填寫,但人類不會檢查用戶的行為,例如填寫表單所花費的時間,並使用諸如Akismet之類的服務(wù),該服務(wù)已過濾出來垃圾郵件基於已知垃圾郵件的數(shù)據(jù)庫。

          以上是帶有PHP和GD的簡單驗驗的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

          本網(wǎng)站聲明
          本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

          熱AI工具

          Undress AI Tool

          Undress AI Tool

          免費脫衣圖片

          Undresser.AI Undress

          Undresser.AI Undress

          人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

          AI Clothes Remover

          AI Clothes Remover

          用於從照片中去除衣服的線上人工智慧工具。

          Clothoff.io

          Clothoff.io

          AI脫衣器

          Video Face Swap

          Video Face Swap

          使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

          熱工具

          記事本++7.3.1

          記事本++7.3.1

          好用且免費的程式碼編輯器

          SublimeText3漢化版

          SublimeText3漢化版

          中文版,非常好用

          禪工作室 13.0.1

          禪工作室 13.0.1

          強大的PHP整合開發(fā)環(huán)境

          Dreamweaver CS6

          Dreamweaver CS6

          視覺化網(wǎng)頁開發(fā)工具

          SublimeText3 Mac版

          SublimeText3 Mac版

          神級程式碼編輯軟體(SublimeText3)

          PHP變量範圍解釋了 PHP變量範圍解釋了 Jul 17, 2025 am 04:16 AM

          PHP變量作用域常見問題及解決方法包括:1.函數(shù)內(nèi)部無法訪問全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次並在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數(shù)需通過use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助於避免錯誤並提升代碼穩(wěn)定性。

          如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

          要安全處理PHP文件上傳需驗證來源與類型、控製文件名與路徑、設(shè)置服務(wù)器限制並二次處理媒體文件。 1.驗證上傳來源通過token防止CSRF並通過finfo_file檢測真實MIME類型使用白名單控制;2.重命名文件為隨機字符串並根據(jù)檢測類型決定擴展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

          在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

          PHP註釋代碼常用方法有三種:1.單行註釋用//或#屏蔽一行代碼,推薦使用//;2.多行註釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧註釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

          發(fā)電機如何在PHP中工作? 發(fā)電機如何在PHP中工作? Jul 11, 2025 am 03:12 AM

          AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

          撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

          寫好PHP註釋的關(guān)鍵在於明確目的與規(guī)範,註釋應(yīng)解釋“為什麼”而非“做了什麼”,避免冗餘或過於簡單。 1.使用統(tǒng)一格式,如docblock(/*/)用於類、方法說明,提升可讀性與工具兼容性;2.強調(diào)邏輯背後的原因,如說明為何需手動輸出JS跳轉(zhuǎn);3.在復(fù)雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標記待辦事項與問題,便於後續(xù)追蹤與協(xié)作。好的註釋能降低溝通成本,提升代碼維護效率。

          快速PHP安裝教程 快速PHP安裝教程 Jul 18, 2025 am 04:52 AM

          ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

          學習PHP:初學者指南 學習PHP:初學者指南 Jul 18, 2025 am 04:54 AM

          易於效率,啟動啟動tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

          如何通過php中的索引訪問字符串中的字符 如何通過php中的索引訪問字符串中的字符 Jul 12, 2025 am 03:15 AM

          在PHP中獲取字符串特定索引字符可用方括號或花括號,但推薦方括號;索引從0開始,超出範圍訪問返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結(jié)果;實際應(yīng)用中循環(huán)訪問前應(yīng)檢查字符串長度,動態(tài)字符串需驗證有效性,多語言項目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

          See all articles