如何刷新验证码
小弟目前用的是CI_2.0.3版本,想问一下群里的各位大大,在CI框架里面,刷新验证码如何实现(只刷新验证码,不刷新整个页面),望各位大大赐教,最好能够贴源码,小弟感激不尽。本帖最后由 qi_ruo 于 2011-11-20 15:28 编辑
class Test extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper('url');
}
public function get_captcha()
{
if ($this->input->is_ajax_request()) {
$this->load->helper('captcha');
$vals = array(
'img_path' => './captcha/',
'img_url' => base_url().'captcha/'
);
$cap = create_captcha($vals);
$data = array(
'captcha_time' => $cap['time'],
'ip_address' => $this->input->ip_address(),
'word' => $cap['word']
);
$query = $this->db->insert_string('captcha', $data);
$this->db->query($query);
echo $cap['image'];
} else {
show_404();
}
}
public function captcha_form()
{
$this->load->view('captcha_form');
}
}
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Captcha Form</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script type="text/javascript">
function get_captcha() {
$.get("<?php echo site_url('test/get_captcha');?>", function(data){
$('#captcha-image').html(data);
});
};
$(function(){
get_captcha();
$('#reload-captcha').click(get_captcha);
})
</script>
</head>
<body>
<form method="post">
<p id="captcha-image"></p>
<p><a href="javascript:void(0);" id="reload-captcha">Reload Captcha</a></p>
<p><input type="text" name="captcha" /></p>
<p><input type="submit" value="submit" /></p>
</form>
</body>
</html>
qi_ruo 发表于 2011-11-20 14:42
非常感谢你的代码。
之前我一直把创建captcha写在login或者register的function里,还是你这么写比较好,captcha和登陆注册函数分离。
thenbsp 发表于 2011-12-25 19:04
费话不说
可是我的为什么就是显示不出来图片啊,在captcha文件下生成了图片啊 其实我不懂,不过我想不是 JS 就是 AJAX 本帖最后由 Уаиɡ_輄 于 2011-11-20 00:37 编辑
原生的代码不知道怎么改.同求.同求.
想知道 captcha.helper.php 文件下怎么修改可实现刷新:
$img = "<img src=\"$img_url$img_name\" width=\"$img_width\" height=\"$img_height\" onclick=\"this.src='<?php echo site_url(/register/index/)?>?rand=' + Math.random();\" style=\"border:0;\" alt=\" \" />";
不知道哪出问题了,请高人出手顺便也给解决了吧!{:soso_e183:} 孤月蓝风 发表于 2011-11-20 00:03 static/image/common/back.gif
其实我不懂,不过我想不是 JS 就是 AJAX
就是不知道怎么写。 Уаиɡ_輄 发表于 2011-11-20 00:36 static/image/common/back.gif
原生的代码不知道怎么改.同求.同求.
想知道 captcha.helper.php 文件下怎么修改可实现刷新:
什么乱七八糟的名字,你这代码有点乱,以后不好改。
改进一下,JS绑定事件一般写在后台,这样才能实现代码分离,比如CSS。
<img>那些杂七杂八的转义字符,换一下写法吧,由后台captcha生成,在分配给视图,或者后台生成src分配给视图。 ci_phper_mj 发表于 2011-11-20 09:52 static/image/common/back.gif
什么乱七八糟的名字,你这代码有点乱,以后不好改。
改进一下,JS绑定事件一般写在后台,这样才能实 ...
呵呵那个captcha.helper.php 是CI的配置文件.
如果可以在里面改当然是最简单的啦!:P qi_ruo 发表于 2011-11-20 14:42 static/image/common/back.gif
这个还是只能点字刷新验证码.图片点击后就显示X了! 本帖最后由 qi_ruo 于 2011-11-20 16:17 编辑
Уаиɡ_輄 发表于 2011-11-20 16:03 static/image/common/back.gif
这个还是只能点字刷新验证码.图片点击后就显示X了!
稍微修改一下就可以了
echo '<a href="javascript:void(0);"_onclick="get_captcha();">'.$cap['image'].'</a>';
qi_ruo 发表于 2011-11-20 16:13 static/image/common/back.gif
稍微修改一下就可以了
echo ''.$cap['image'].'';
:handshake 谢谢兄弟你的回答.
你的意思是把test.php里面的
echo $cap['image']; 换成
echo '<a href="javascript:void(0);"_onclick="get_captcha();">'.$cap['image'].'</a>';
可是还是不行。 :dizzy:我晕了! 能详细说说吗?谢谢!
页:
[1]
2