亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

PHP實現驗證碼制作

難度初級
時長 1小時20分
學習人數
綜合評分9.80
173人評價 查看評價
10.0 內容實用
9.8 簡潔易懂
9.6 邏輯清晰
  • 動態校驗
    查看全部
  • session
    查看全部
  • 驗證碼介紹
    查看全部
    0 采集 收起 來源:驗證碼介紹

    2017-11-03

  • <form method="post" action="./form.php"> <p> 驗證碼圖片: <!-- 這里在 src 中添加一個隨機數,是為了在使用 "換一個" 功能時,瀏覽器會以為 src 與之前的有所不同 而重新從服務器下載圖片,否則瀏覽器會直接調用緩存中的 圖片 或者甚至 不做任何動作 --> <img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand();?>" width:100px; height:30px/> <a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">換一個</a> </p> <p>請輸入圖片中的內容:<input type="text" name="authcode" value="" /></p> <p><input type="submit" value="提交" ></p> </form>
    查看全部
  • <?php session_start(); $image = imagecreatetruecolor( 100,30 ); $bgcolor = imagecolorallocate($image,255,255,255); imagefill($image,0,0,$bgcolor); for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,99),$pointcolor); } for($i=0;$i<3;$i++){ $linecolor = imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220)); } $captch_code = ''; for($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data = 'abcdefghijkmnpqrstuvwxy3456789'; $fontcontent = substr($data,rand(0,strlen($data)-1),1); $captch_code.=$fontcontent; $x = ($i*100/4) + rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } header('content-type:image/png'); imagepng($image); $_SESSION['authcode'] = $captch_code; ?>
    查看全部
  • <?php header('content-type:text/html;charset=utf-8'); if(isset($_REQUEST['authcode'])){ session_start(); if(strtolower($_REQUEST['authcode']) == $_SESSION['authcode']){ echo '<font color="#0000cc">輸入正確</font>'; }else{ echo '<font color="#0000cc">輸入錯誤</font>'; } exit(); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>驗證碼確認</title> </head> <body> <form method="post" action="./form.php"> <p>驗證碼圖片:<img border = "1" src="./captcha.php?r=<?php echo rand();?>"width:100px,height:100px" /></p> <p>請輸入驗證碼內容:<input type="text" name="authcode" value="" /></p> <p> <input type="submit" value="提交" /></p> </form> </body> </html>
    查看全部
  • 這里打一個卡,利用memcache來存儲session信息以達到在多服務器情況下幾種管理session信息。
    查看全部
  • // 數字+字母驗證碼 for ($i=0; $i < 4; $i++) { $fontsize = 6; // 0-120 為深色區,能更好的在淺色背景中識別驗證碼 $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); // 制作字典 并去除容易混淆的字符(l 與 1, z 與 2,等等) $data = 'abcdefghijkmnqprstuvwxy3456789'; // 通過截取字符串內容方法,獲得隨機字符 $fontcontent = substr($data, rand(0,strlen($data)),1); // 生成的驗證內容不重疊 $x = ($i*100/4) + rand(5,10); // 生成的驗證內容不齊平 $y = rand(5,10); // 用 $fontcolor 顏色將字符串 $fontcontent 畫到 $image 所代表的圖像的 $x,$y 坐標處 imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); }
    查看全部
  • 干擾信息一定控制好顏色,避免“喧賓奪主”背景色最淺,字體顏色最深,其次是像素點,再次是干擾線 for ($i=0; $i < 3; $i++) { // 顏色設置為 80-220 ,是為了使 線 與 點 與 驗證碼 更好的區分 $linecolor = imagecolorallocate($image, rand(80,220), rand(80,220), rand(80,220)); // imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color ) // imageline() 用 color 顏色在圖像 image 中從坐標 x1,y1 到 x2,y2 畫一條線段。 imageline($image, rand(1,99), rand(1,29), rand(1,99), rand(1,29), $linecolor) } PS: 干擾元素一定要控制好顏色,使之不影響用戶識別驗證碼
    查看全部
  • 總結語法: 1、imagestring(圖像畫布 ,大小,x軸坐標,y軸坐標,內容,顏色):水平地畫出一行字符串 2、imagecolorallocate(圖像畫布,顏色1,顏色2,顏色3):為一幅圖像分配顏色 3、imageline(圖像畫布,x1,y1,x2,y2,顏色):為一幅圖像添加一條線段 4、imagesetpixel(圖像畫布,x,y,顏色):畫出單一像素
    查看全部
  • <?php /*php之驗證制作*/ //1、創建一個真空彩色圖像 $image=imagecreatetruecolor(100,30); //2、為圖像分配顏色 $bgcolor=imagecolorallocate($image,255,255,255); //3、填充圖像 imagefill($image,0,0,$bgcolor); //4、在圖像中添加隨機數字 $code=''; $content=''; for($i=0;$i<4;$i++){ $fontsize=20; $code=rand(0,9); $fontcolor=imagecolorallocate($image,0,0,0); $x=$i*(100/4)+rand(5,10); $y=rand(5,15); $content.=$code; imagestring($image,$fontsize,$x,$y,$code,$fontcolor); } //增加干擾元素 for($i=0;$i<400;$i++){ $pointcolor=imagecolorallocate($image,rand(0,200),rand(0,200),rand(0,200)); imagesetpixel($image,rand(0,100),rand(0,30),$pointcolor); } session_start(); $_SESSION["content"]=$content; header('content-type:image/png'); imagepng($image); imagedestroy($image);
    查看全部
  • 技術點、難點分析: 技術點: 1)底圖的實現,并且添加干擾元素:依賴PHP圖片處理庫GD,詳細查看:http://php.net/gd 2)生成驗證內容:簡單的隨機數生成,使用PHP函數mt_rand();隨機數字+字幕生成,需要ASCⅡ碼理論基礎; 隨機中文內容生成,需要UTF-8編碼理論基礎 3)驗證內容保存在服務端:需要PHP操作SESSION基礎 4)驗證內容的校驗:需要前端Ajax基礎
    查看全部
  • 1、驗證碼流程 服務器設置驗證碼->判斷是否輸入正確:①、如果不正確,是Robot校驗。②、如果正確,是person校驗 2、為什么要屏蔽機器請求? 一般服務端業務,寫請求產生的消耗要遠遠大于讀請求。 3、驗證碼應用哪些場景? A、登錄、注冊確定提交前,Person/Robot校驗 B、發布回復信息前,Person/robot校驗 C、疑似Robot請求時,Person/robot校驗
    查看全部
    0 采集 收起 來源:驗證碼介紹

    2018-03-22

  • 課程代碼 https://gitee.com/xxg3053/captcha
    查看全部
  • 驗證碼所需技術
    查看全部

舉報

0/150
提交
取消
課程須知
本課程適合PHP初學者或者自學的童鞋們。
老師告訴你能學到什么?
1、如何拆解驗證碼項目 2、PHP的繪圖擴展GD庫的使用 3、如何用GD函數畫圖與驗證碼內容 4、如何用PHP做驗證碼校驗,及動態校驗 5、怎么實現中文、圖片、視頻驗證碼

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!