驗(yàn)證碼在日常技術(shù)開發(fā)應(yīng)用中非常常見且重要,通常用來防止用戶惡意提交表單,如惡意注冊(cè)和登錄、論壇惡意灌水等。非常實(shí)用的PHP驗(yàn)證碼庫Captcha。
安裝
使用composer:
composer require gregwar/captcha
使用
我們可以使用CaptchaBuilder創(chuàng)建一個(gè)驗(yàn)證碼:
<?php
use Gregwar\Captcha\CaptchaBuilder;
$builder = new CaptchaBuilder;
$builder->build();
也可以把驗(yàn)證碼保存為圖片:
<?php
$builder->save('out.jpg');
或者直接輸出為圖片路徑:
<?php
header('Content-type: image/jpeg');
$builder->output();
也可以結(jié)合HTML直接輸出圖片:
<img src="<?php echo $builder->inline(); ?>" />
我們可以使用PHP的session()來記錄驗(yàn)證碼并用于比對(duì)用戶輸入的驗(yàn)證碼是否有效,請(qǐng)看:
<?php
$_SESSION['phrase'] = $builder->getPhrase();
上述代碼在生成驗(yàn)證碼的時(shí)候就把驗(yàn)證碼保存在session中,當(dāng)用戶提交輸入的驗(yàn)證碼后,再從session中取出來進(jìn)行比對(duì),具體處理代碼請(qǐng)查看DEMO和下載DEMO中的源碼。
生成的驗(yàn)證碼默認(rèn)是5個(gè)字符,那如果你想生成4個(gè)字符的驗(yàn)證碼,可以這樣:
如果你想生成的驗(yàn)證碼只有數(shù)字,只需修改:
<?php
$phraseBuilder = new PhraseBuilder(4, '0123456789');
這樣就可以生成4個(gè)數(shù)字的驗(yàn)證碼。
常用方法與選項(xiàng)
build($width = 150, $height = 40, $font = null):設(shè)置生成的驗(yàn)證碼的寬度、高度以及字體。默認(rèn)情況下,將隨機(jī)使用庫中的字體。
save($filename, $quality = 80):生成一張指定文件名和圖片質(zhì)量的jpg驗(yàn)證碼圖片。
get($quality = 80):獲取jpg圖片data數(shù)據(jù)。
output($quality = 80):向?yàn)g覽器輸出圖片。
setBackgroundColor($r, $g, $b):設(shè)置驗(yàn)證碼背景色,這個(gè)選項(xiàng)一般不推薦使用。
getPhrase():獲取驗(yàn)證碼內(nèi)容。