做了一个验证码的程序,用number.php来生成验证码,代码如下:
session_start();
function randomkeys($length)
   {
       $pattern = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
      for($i=0; $i<$length; $i++)
       {
           $key .= $pattern{mt_rand(0,61)};
       }
       return $key;
   }
//$str = randomkeys(6);//输入的文字 
$_SESSION['v']=randomkeys(6);
header("Content-type: image/jpeg"); 
$im = imagecreate(100, 30) or die("Cannot Initialize new GD image stream");//图片大小 //$str=iconv("gb2312","UTF-8",$str); 
$_SESSION['v']=iconv("gb2312","UTF-8",$_SESSION['v']);
for($i=0;$i<200;$i++) //加入干扰象素 

$clr = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); 
imagesetpixel($im, rand()%100 , rand()%50 , $clr); 
} $black = imagecolorallocate($im, 0, 0, 0); 
$fnt = "ARIAL.TTF"; //字体文件
ImageTTFText($im, 15, 0, 10, 20, $black, $fnt, $_SESSION['v']); 
imagejpeg($im); 
imagedestroy($im); 
然后用refresh.php实现刷新,refresh.php代码如下:
<script language="JavaScript">
<!--
function change(id){
document.getElementById(id).src ='number.php?'+Math.random(1);
}
//-->
</script>
<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><img src="number.php" width="100" height="30" id="vnum"/></td>
    <td>&nbsp;<a href="#" onclick="change('vnum')">Change</a></td>
  </tr>
</table>在用到验证码的页面里我用include refresh.php把refresh页面包含在内,但是想要进行验证时却总是失败。我的想法是在生成验证码图片的时候把验证码的值存进session里,然后refresh页面每次刷新验证码时session的值也会变,用的时候只要对比检查用户提交的值和session的值就可以了。但是session的值好像不会变,不知道该用什么方法来进行正确的验证,希望高人解答。