最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解PHP如何完成驗證碼功能示例

 更新時間:2023年12月22日 11:48:22   作者:文煞  
這篇文章主要介紹了PHP如何完成驗證碼功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

在使用php開發(fā)程序的時候,特別是在用戶注冊登錄的頁面,如果不設置驗證碼功能,很有可能被人利用工具,批量注冊賬號或者暴力破解用戶賬號信息,對網站或者用戶造成損失。那么php如何完成驗證碼功能呢?

一、驗證碼的生成

我們可以寫一個yzm.php文件,用來生成動態(tài)的驗證碼圖片。代碼如下:

<?php
session_start();
// 生成隨機驗證碼
$charset = '0123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcvbnmasdfghjkpiuytrewq';
$randomString = '';
$length = 6; // 驗證碼長度
$charsetLength = strlen($charset) - 1;
for ($i = 0; $i < $length; $i++) {
    $randomString .= $charset[random_int(0, $charsetLength)];
}
// 保存驗證碼到session中
$_SESSION['captcha'] = $randomString;
// 創(chuàng)建驗證碼圖片
$image = imagecreatetruecolor(120, 40);
$bgColor = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);
// 填充背景色
imagefilledrectangle($image, 0, 0, 120, 40, $bgColor);
// 在圖片上繪制驗證碼
imagestring($image, 5, 40, 10, $randomString, $textColor);
// 發(fā)送圖像頭部到瀏覽器
header('Content-Type: image/png');
// 輸出圖像到瀏覽器
imagepng($image);
// 銷毀圖像資源
imagedestroy($image);
?>

上面的代碼可以從“0123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcvbnmasdfghjkpiuytrewq”這一串字符串中隨機選擇6個字符作為驗證碼,并命名為$_SESSION['captcha']存入服務器SESSION中,方便后續(xù)進行驗證。當然生成的驗證碼圖片你可以進行更多的裝飾,這里就不贅述了。

二、驗證碼的調用

我們往往在注用戶冊或者登錄的頁面需要告訴用戶驗證碼是多少,讓用戶準確輸入驗證碼。

 <div id="popup" class="popup">
    <div class="popup-inner">
      <center><h3>用戶注冊</h3></center>
      <span class="button-close" onclick="closePopup()">&times;</span>
      <form id="joinForm" action="sub.php" method="POST">
        <div class="form-group">
          <label for="username">賬號:</label>
          <input type="text" id="username" name="username" placeholder="請輸入賬號" required>
        </div>
        <div class="form-group">
          <label for="userpass">密碼:</label>
          <input type="pass" id="userpass" name="userpass" placeholder="請輸密碼" required>
        </div>
        <div class="form-group">
          <label for="captcha">驗證碼:<img class="ue-image" src="yzm.php"/></label>
          <input type="text" id="captcha" name="captcha" placeholder="請輸入驗證碼" required>
        </div>
        <div class="form-group">
          <div class="button-group">
            <button type="submit">提交</button>
          </div>
        </div>
      </form>
    </div>
  </div>

可以看到,在注冊頁面,我們直接使用以下代碼展示生成的驗證碼:

<img class="ue-image" src="yzm.php"/>

當然你也可以直接調用$_SESSION['captcha']來展示驗證碼,但是為了驗證功能的有效性和安全性,這里不建議直接調用$_SESSION['captcha']函數。

三、驗證碼的驗證

當用戶輸入驗證碼以后,我們需要對驗證碼進行驗證,判斷用戶是否準確輸入了驗證碼。如果用戶未能準確輸入驗證碼,則php文件不再繼續(xù)執(zhí)行后面的代碼。

<?php
session_start();//首先開啟session
if(!empty($_POST)){
  $username = $_POST['username'];
  $userpass = $_POST['userpass'];
  $captcha = $_POST['captcha'];
if (!preg_match('/^[A-Za-z0-9]+$/', $captcha)) {
echo '<script>alert("驗證碼不正確!"); window.location.href = "index.php";</script>';exit;    
  }//這里使用正則判斷驗證碼的合法性,如果驗證碼未按0-9和a-Z的規(guī)則輸入則提示驗證碼不正確并返回首頁。
  if($captcha!=$_SESSION['captcha']){
echo '<script>alert("驗證碼不正確!"); window.location.href = "index.php";</script>';exit;      
}//這里判斷用戶輸入的驗證碼是否與yzm.php生成的驗證碼一直 ,如果不一致則提示驗證碼不正確并返回首頁。
//如果驗證碼正確,則繼續(xù)執(zhí)行下面的代碼
.......
//
}
?>

當然本文只是簡單介紹php如何設計驗證碼功能,實際開發(fā)中可能需要更完善更豐富的功能,需要對以上代碼進行完善和修改。

php編程語言是一款十分簡單容易上手的編程語言,非常適合新手學習。

以上就是PHP如何完成驗證碼功能的詳細內容,更多關于PHP如何完成驗證碼功能的資料請關注腳本之家其它相關文章!

相關文章

  • 變量在 PHP7 內部的實現(二)

    變量在 PHP7 內部的實現(二)

    在上篇文章給大家介紹了變量在 PHP7 內部的實現(一),本篇繼續(xù)給大家介紹php7內部實現相關知識,感興趣的朋友通過本篇文章一起學習吧
    2015-12-12
  • Thinkphp模板標簽if和eq的區(qū)別和比較實例分析

    Thinkphp模板標簽if和eq的區(qū)別和比較實例分析

    這篇文章主要介紹了Thinkphp模板標簽if和eq的區(qū)別和比較,實例分析了Thinkphp模板標簽if和eq用于變量比較的區(qū)別,需要的朋友可以參考下
    2015-07-07
  • 常用PHP框架功能對照表

    常用PHP框架功能對照表

    這篇文章主要介紹了常用PHP框架功能對照表,對于選擇PHP框架進行開發(fā)時具有一定的參考價值,需要的朋友可以參考下
    2014-10-10
  • PHP中is_dir()函數使用指南

    PHP中is_dir()函數使用指南

    php提供內置函數is_dir來檢查傳入的路徑參數是否為目錄,如果是目錄則返回true。也就是說傳入的參數是文件或者不存在都為false,因此當前參數不能說不是文件夾就是文件。另外需要注意的是參數支持相對路徑和絕對路徑。
    2015-05-05
  • Laravel重寫用戶登錄簡單示例

    Laravel重寫用戶登錄簡單示例

    這篇文章主要介紹了Laravel重寫用戶登錄的方法,結合簡單實例形式分析了Laravel框架根據已有的login方法重寫實現針對驗證碼、后臺登陸頻率及日志記錄的擴種等功能,需要的朋友可以參考下
    2016-10-10
  • PHP設計模式之觀察者模式實例

    PHP設計模式之觀察者模式實例

    一個對象通過添加一個方法(該方法允許另一個對象,即觀察者 注冊自己)使本身變得可觀察。當可觀察的對象更改時,它會將消息發(fā)送到已注冊的觀察者。通過本文給大家介紹PHP設計模式之觀察者模式,需要的朋友參考下
    2016-02-02
  • PHP中數據庫單例模式的實現代碼分享

    PHP中數據庫單例模式的實現代碼分享

    這篇文章主要介紹了PHP中數據庫單例模式的實現代碼分享,本文先是講解了單例模式的一些知識,然后給出了數據庫單例模式實現代碼,需要的朋友可以參考下
    2014-08-08
  • C#使用PHP服務端的Web Service通信實例

    C#使用PHP服務端的Web Service通信實例

    這篇文章主要介紹了C#使用PHP服務端的Web Service通信實例,需要的朋友可以參考下
    2014-04-04
  • php正則去除網頁中所有的html,js,css,注釋的實現方法

    php正則去除網頁中所有的html,js,css,注釋的實現方法

    下面小編就為大家?guī)硪黄猵hp正則去除網頁中所有的html,js,css,注釋的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • YII路徑的用法總結

    YII路徑的用法總結

    這篇文章主要介紹了YII路徑的用法總結,需要的朋友可以參考下
    2014-07-07

最新評論

桦川县| 永城市| 潞西市| 大悟县| 沙湾县| 冀州市| 中阳县| 阳江市| 福安市| 隆尧县| 乌鲁木齐县| 苏州市| 通河县| 准格尔旗| 淮滨县| 阿拉善左旗| 盘山县| 苏尼特右旗| 克什克腾旗| 永昌县| 雅安市| 北宁市| 万山特区| 邹平县| 达日县| 西峡县| 岳普湖县| 册亨县| 鄂温| 玛多县| 苏尼特左旗| 仲巴县| 古交市| 昆山市| 德兴市| 汝州市| 名山县| 麦盖提县| 泊头市| 鞍山市| 旌德县|