本次要介紹的是簡易輕便的驗證碼外掛
省去以往手刻驗證碼的麻煩 只需簡單的設定即可完成表單驗證碼的實作
官方最新的版本是 cool-php-captcha-0.3.1 (基本上好像也沒在更新了...)
下載解壓後會有範例 基本上它的驗證流程就是
利用HTML <img>讀取captcha.php
captcha.php讀(或不讀)字典檔產生驗證碼字串
利用PHP GD函式的image語法產生圖片
再將正確的驗證碼字串存入$_SESSION['captcha']
最後從使用者表單送出的字串判斷是否符合
另外 captcha.php其中有可供使用者自行設定的選項
以下做個簡單介紹:
// OPTIONAL Change configuration...
$captcha->wordsFile = 'words/en.php'; //是否讀取字典檔 若否則改為null
$captcha->session_var = 'secretword'; //可自訂session的變數名稱 預設為captcha
$captcha->imageFormat = 'png'; //圖片格式
$captcha->lineWidth = 3; //干擾線長度
$captcha->scale = 3; $captcha->blur = true; //是否帶有模糊效果及其比例
$captcha->resourcesPath = "resources"; //附件的路徑
// OPTIONAL Simple autodetect language example
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$langs = array('en', 'es'); //根據語系的不同切換字典檔
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (in_array($lang, $langs)) {
$captcha->wordsFile = "words/$lang.php";
}
}
範例:
index.php
<form action='auth.php' method='POST'>
<img src='captcha.php'> <!-- 產生驗證碼圖示 -->
<input type='text' name='captcha' value=''> <!-- 使用者在此輸入驗證碼 -->
<input type='submit' value='送出'>
</form>
auth.php
<?php
session_start();
//依據上述使用者自訂選項中的session_var設定為secretWord
if($_SESSION['secretword'] == $_POST['captcha']) {
echo "驗證成功!";
}
else {
echo "驗證失敗!";
}
?>