用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4300|回复: 5
收起左侧

[已解决] 验证码刷新问题

[复制链接]
发表于 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();
  }
}

验证码类
<?php  if ( ! 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);
}
}

我的问题是:为什么我第一次点刷新有反映,第二次就没了呢?
发表于 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);?>/" + 生成随机数;
 楼主| 发表于 2010-2-10 17:56:49 | 显示全部楼层
回复 2# Hex


    明白了,谢谢
 楼主| 发表于 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();
发表于 2011-3-29 17:18:26 | 显示全部楼层
已经成功做出了验证码,谢啦
发表于 2011-4-5 21:35:53 | 显示全部楼层
cool php captcha

本版积分规则