CI 驗證碼 Captcha (含點圖刷新)
本帖最后由 Closer 于 2015-1-9 11:42 编辑參考自:http://my.oschina.net/sorenring/blog/343462
Model : test.php
//輸出驗證碼圖片
public function get_captcha(){
//rand()取亂數後轉為md5碼,並只取前四碼,str用來小寫轉大寫
$rand = strtoupper(substr(md5(rand()),0,4));
$session_rand = array("rand"=>$rand); //存入陣列
$this->session->set_userdata($session_rand); //紀錄 session
$img = array(
'word' => $rand,
'img_path' => './captcha/',
'img_url' => base_url('captcha').'/', //請先建好權限777的 captcha 資料夾
'font_path' => './path/arial.ttf', //設置字體,避免跑版
'img_width' => '100',
'expiration' => 10 //設定圖片刪除時間 = 10秒
);
$rec = create_captcha($img);
return $rec['image']; //輸出img驗證圖片
}
Controller : captcha.php
class Captcha extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('test');//載入模型
$this->load->helper('captcha'); //載入驗證碼函式
}
public function index(){
echo $this->test->get_captcha();
}
}
Controller : login.php
class Login extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('test');
$this->load->helper('captcha'); //載入驗證碼函式
}
public function index(){
$data['img'] = $this->test->get_captcha();
$this->load->view('login', $data);
}
}
view : login.php
<script type="text/javascript">
function load_captcha(id,url){
$("#"+id).html('');
$("#"+id).load(url);
}
</script>
<input type="text" name="s" placeholder="輸入帳號" /><br />
<input type="password" name="p" placeholder="輸入密碼" /><br />
<input type="text" name="r" placeholder="輸入驗證碼" /><br />
<input type="submit" value="登入">
<a href="#" onclick="load_captcha('captcha','<?php echo site_url('captcha');?>');" title="換一張" id="captcha" ><?php echo $img;?></a>
第一次讀取控制器 login.php
引用於 model 內的方法
點圖後刷新
是刷新控制器 captcha.php
一樣是引用 model 同一個方法
以前也自己写,现在改用第三方的了自己只加个隐藏token做二次验证
极验验证 geetest点坑可以看看
以前自己写的只做备用了 我還是比較不信任第三方的東西
哪天他的網站掛了你就得重弄
或是給你偷放個木馬都不知道
你說的那個還不錯
只是好像限制台灣無法使用
還是他的套件出了問題
我在他官網或有使用的網站
看不到那個拖拉條 {:soso_e113:}谢谢搞成了 点图为什么不刷新呢,偶用的火狐 weiryang 发表于 2015-7-14 03:06
点图为什么不刷新呢,偶用的火狐
你關閉到了 JS ?
或是沒有載入 JQ ?
V 端的區塊轉換有依賴於 JQ 的運作
Message:Call to undefined method Test::creat_captcha()
yzhdaidai 发表于 2015-7-22 13:04
Message:Call to undefined method Test::creat_captcha()
test 是指載入的 Model 名
你得看你放的 Model 是哪個名稱 controller里的生成验证码方法岂不是直接可以在浏览器中访问啦?。。这样不友好吧
页:
[1]