php学习:给CI框架添加验证码
这篇笔记是上个月给robin添加验证码功能的记录。起初在网上搜索php的验证码例程,最后在CodeIgniter论坛找到了别人写好的库,果断拿来使用了。
下载 下载完压缩包后解压,并重命名为captcha_code.php(我喜欢酷酷的名字)。复制captcha_code.php到项目的application/libraries里面。
修改controller/user.php文件 在空白区域添加函数:
function captcha() { $conf['name']='captcha'; //作为配置参数 $this->load->library('captcha_code',$conf); $this->captcha_code->show(); $yzm_session=$this->session->userdata('captcha');//将验证码放在了缓存中 }
修改view/login.php文件 添加一段
<a href="javascript:reloadCode();"><img src="<?php echo site_url(user/captcha');?>" name="checkCodeImg" id="checkCodeImg" border="0" /></a>
JS代码部分:
function reloadCode() { var dom = document.getElementById("checkCodeImg"); dom.src = "<?php echo site_url('user/captcha');?>?str=" + Math.random(); }
页面js传值 照例前端把数据POST到后端去,在原有代码上修改
function form_submit(){ $.ajax({ 'url' : '/user/check', 'type' : 'POST', 'data' : {'checknum':$.trim($("#checknum").val()),'submit':'submit'}, 'dataType' : 'json', 'success' : function(data){ console.log(data); if(data == '1' ){ $.ajax({ 'url' : '/user/login', 'type' : 'POST', 'data' : {'number':$.trim($("#number").val()),'password':$.trim($('#password').val()),'remember':$("#remember").val(),'submit':'submit'}, 'dataType':'json', 'success' :function(data){ window.location = window.location.toString(); }, 'complete' :function (xhr, textStatus) { if(xhr.status == '400'){ show_error_tips("密码或账号名出错"); }else if(xhr.status == '403'){ show_error_tips("账号已停用或出错"); }else if( xhr.status == 200 ){ if( textStatus == 'parsererror'){ var curl = xhr.getResponseHeader('x-req-path'); if( curl && curl.slice(5) != '/user' ){ window.location.href = curl; } } } } }); } else{ show_checknum_error_tips("验证码错误"); } } }); }
再修改controller/user.php文件 这次修改添加后台进行验证码校验的功能
/** * 检查验证码 checknum */ function check(){ $checknum = $this->input->post('checknum'); $captcha_session = $this->session->userdata('captcha'); if($checknum == $captcha_session){ echo '1'; } else{ echo '2'; } }
总结 这个功能其实很简单,就是搭积木一样的把别人成熟的库导入进入项目中引入排错,这也是积累经验的方式咯。