在12306購票的時候驗證碼是一件特別令人煩惱的事情,現在分享一個可以識別圖片驗證碼的功能,PHP仿12306官網圖片驗證碼功能
生成驗證碼的demo使用模型model讀取圖庫,有需要對接框架的朋友可以自己修改,如下:
<?php
# 引入測試的數據庫model
require_once dirname(__FILE__).'/Model.php';
# 引入驗證碼核心類庫
require_once dirname(dirname(__FILE__)).'/vendor/Vif.php';
$model = new Model('vif_type');
# 1、先獲得隨機出來的分類
$find = $model->order('rand()')->find();
# 2、根據隨機分類,獲得指定數量的圖片,你想幾張都可以,越多越安全
$num = 4;
$model = new Model('vif_img');
$yes_list = $model->field('vi_id, vi_url')->where('vt_id = '.$find['vt_id'])->order('rand()')->limit($num)->select();
# 3、再隨機,獲得4張除了指定分類外的其他圖片
$no_list = $model->field('vi_id, vi_url')->where('vt_id != '.$find['vt_id'])->order('rand()')->limit($num)->select();
$obj = new Vif();
# 4、調用驗證碼類庫:將兩組圖片隨機打亂合并成一組新數據
$img_list = $obj->MergeImg($yes_list, $no_list, $find['vt_title']);
echo $img_list;
判斷圖片驗證碼是否正確:
<?php
# 引入驗證碼核心類庫
require_once dirname(dirname(__FILE__)).'/vendor/Vif.php';
$vif = $_POST['id'];
$obj = new Vif();
# 4、調用驗證碼類庫:將兩組圖片隨機打亂合并成一組新數據
$img_list = $obj->VifResult($vif);
echo $img_list;