ci驗證碼

ci 之驗證碼
爲了方便,把 system/system/helpers/captcha_helper.php複製放在 application/helpers/文件夾裏面
手冊上面推薦用數據庫,但我的認爲用 $_SESSION方便些(session必須開啓)
打開 application/helpers/captcha_helper.php文件,在判斷 $word變量以後加上 $_SESSION['sess_validate'] = $word;
即在:
$length    = strlen($word);以前加上$_SESSION['sess_validate'] = $word;便可
其實 $_SESSION['sess_validate']中的sess_validate隨便本身命名,與別的不衝突就好了,

新建一個控制器,如 yes.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Yes extends CI_Controller {
        
    //根據手冊設置驗證碼的參數,我是在源碼裏面設置爲 4位驗證碼,且用的全是數字
    public function __construct()
    {
        parent::__construct();
        session_start();
    }

    // 初始化,即初次使用
    function validatecode()
    {
        $this->load->helper('captcha');
        $vals = array(
            'img_path' => './captcha/',
            'img_url' => base_url() . 'captcha/',
            'img_width' => '150',
            'img_height' => 30,
            'expiration' => 100
    );

    $cap['img'] = create_captcha($vals);
    $this->load->view('validate', $cap);    
    }

    // 刷新驗證碼用
    function ajaxvalidate()
    {
        $this->load->helper('captcha');
        $vals = array(
            'img_path' => './captcha/',
            'img_url' => base_url() . 'captcha/',
            'img_width' => '150',
            'img_height' => 30,
            'expiration' => 100
    );

        $cap['img'] = create_captcha($vals);
        echo $_SESSION['sess_validate'] . $cap['img']['image'];

    }

}
?>
展現頁面(即模板文件((validate.php))可這樣用(本身引入 jquery庫),提交前可用 js 先檢測一次是否輸入正確的驗證碼

<form action="" method="post">
<input type="hidden" name="_url" id="vurl" value="<?php echo site_url('yes/ajaxvalidate'); ?>" />
<input type="hidden" name="validate" id="validate" value="<?php echo $_SESSION['sess_validate'];?>" />
<input type="text" name="mycode" value="" />
<br />
<a id="ff"><?php echo $img['image']; ?></a><a id="clickme">點擊刷新</a><br />
<input type="submit" name="sub" value="submit" />
</form>
<script type="text/javascript">
    $(document).ready(function(){
        $("#clickme").click(function(){                            
            var _url = $('#vurl').val();
            $.ajax({
                url:_url,
                type:'post',
                async:false,
                data:{name:'11'},
                success: function(data)
                {
                    $('#ff').html(data.substr(4));
                    $('#validate').val(data.substr(0,4));
                }
            });
            
        
        });
    });

</script>
以上只是說明方法,其實在一個頁面中,把上面的兩個方法融到別的控制器便可,這樣就能夠運用了
相關文章
相關標籤/搜索