zhjx922 发表于 2010-2-10 17:10:25

验证码刷新问题

JS如下
function codess()
{
    var el =document.getElementById("codeg");
    el.src="<?php echo site_url(index/code/'.rand(1,10000));?>";
}

VIEW
<img src="<?php echo site_url(index/code');?>" alt="点击刷新" class="codes" id="codeg" />

控制器
function code(){
$id=1;
if($id==1){
$this->load->library('codes');
echo $this->codes->get();
}
}

验证码类
<?phpif ( ! defined('BASEPATH')) exit('No direct script access allowed');
//-------------------------------------
// 文件说明:验证码
// 载入Codes   $this->load->library('codes');
// 直接打印就可以了 echo $this->codes->get();
//-------------------------------------
class Codes{
function get() {
$randnum = '';//**,PHP也得先定义?
$width = 92; //定义验证码的宽和高
$hight = 22;
session_start();
for($i=0;$i<4;$i++){
$randnum .= dechex(rand(1,15));
}
$_SESSION['codes'] = $randnum;
$im = imagecreatetruecolor($width,$hight);
//设置颜色
imagecolorallocate($im,0,0,0);
$te = imagecolorallocate($im,255,255,255);
$nmsg = $randnum;
//文字输出
imagestring($im,rand(1,6),rand(1,50),rand(1,5),$nmsg,$te);


header("pragma:no-cachern");
header("Cache-Control:no-cachern");
header("Expires:0rn");

//输出图片
header("Content-type: image/jpeg");
imagejpeg($im);
}
}

我的问题是:为什么我第一次点刷新有反映,第二次就没了呢?

Hex 发表于 2010-2-10 17:37:23

el.src="<?php echo site_url(index/code/'.rand(1,10000));?>";
随机数要用 js 生成,你用 PHP 生成的,所以只有第一次生效,再点击还是原来的随机数,所以无效。
请改用 JS 生成随机数:
el.src="<?php echo site_url(index/code);?>/" + 生成随机数;

zhjx922 发表于 2010-2-10 17:56:49

回复 2# Hex


    明白了,谢谢:D

zhjx922 发表于 2010-2-10 18:07:08

因为我在config里面加了个后缀.html,下面的就返回的地址就错了
el.src="<?php echo site_url('index/code');?>/" + Math.random();
现在改成了这样子
el.src="<?php echo base_url().index_page().'/index/code/';?>" + Math.random();

fadingyu 发表于 2011-3-29 17:18:26

已经成功做出了验证码,谢啦

smartweb 发表于 2011-4-5 21:35:53

cool php captcha
页: [1]
查看完整版本: 验证码刷新问题