php 写的验证码 ,帮忙看看有什么毛病?
问什么下面的文件不能显示出验证码来,大虾救命
这是 ii.php 文件
<?
session_start();
?>
<FORM METHOD=POST ACTION="ii.php">
<input type=text name=number maxlength=4><img src="Yan.php?act=init">
<INPUT TYPE="submit" name="sub">
</FORM>
<?
if(isset($HTTP_POST_VARS["sub"])){
if($HTTP_POST_VARS["number"]!=$HTTP_SESSION_VARS[login_check_number]||empty($HTTP_POST_VARS["number"])){
echo "验证码错误" ;
}else{
echo"验证码正确";
};
};
?>
下面是 yan.php 文件
<?
session_start();
session_register("login_check_number");
$height=120;
$width=40;
if($HTTP_GET_VARS["act"]=="init"){
for($i=0;$i<4;$i++){
$temp.=dechex(mt_rand(0,15));
}
$HTTP_SESSION_VARS["login_check_number"]=$temp;
$aimg=imagecreate($height,$width);
imagecolorallocate($aimg,180,180,180);
$black=imagecolorallocate($aimg,100,100,100);
imagerectangle($aimg,0,0,$height-1,$width-1,$black);
for($i=0;$i<100;$i++){
imagestring($aimg,2,mt_rand(0,$height-1),mt_rand(0,$width-1),"*",imagecolorallocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
};
for($i=0;$i<strlen($HTTP_SESSION_VARS["login_check_number"]);$i++){
imagestring($aimg,mt_rand(3,5),mt_rand($i*$height/4,($i+1)*$height/4),mt_rand($1,$width/2),$HTTP_SESSION_VARS["login_check_number"],imagecolorallocate($aimg,mt_rand(0,200),mt_rand(0,200),mt_rand(0,200)));
};
header("content-type:image/png");
imagepng($aimg);
imagedestroy($aimg);
}
?>
问题点数:20、回复次数:6Top
1 楼anziqi(美洲狮)回复于 2003-07-02 14:09:25 得分 5
你在ii中看看你的 session变量$HTTP_SESSION_VARS[login_check_number]
有没有值 。用这个看看也成。$_SESSION["login_check_number"]Top
2 楼xuzuning(唠叨)回复于 2003-07-02 14:17:41 得分 5
在你的 ii.php 文件 中没有调用验证码码生成的程序,接下来的都是没有意义的事情
Top
3 楼netvt(唯她(为了泡老婆,努力学习LISP))回复于 2003-07-02 14:33:27 得分 5
<?
/* ii.php */
session_start();
?>
<FORM METHOD=POST ACTION="ii.php">
<input type=text name=number maxlength=4><img src="yan.php">
<INPUT TYPE="submit" name="sub">
</FORM>
<?
if(isset($HTTP_POST_VARS["sub"])){
if($HTTP_POST_VARS["number"]!=$HTTP_SESSION_VARS["auth"]||empty($HTTP_POST_VARS["number"])){
echo "验证码错误" ;
}else{
echo"验证码正确";
};
};
?>
yan.php
<?php
session_start();
srand((double)microtime()*1000000);
while(($authnum=rand()%10000)<1000);//生成四位随机整数验证码
$_SESSION['auth']=$authnum;
//生成验证码图片
Header("Content-type: image/PNG");
$im = imagecreate(50,20);
$black = ImageColorAllocate($im, 200,10,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 230,230,230);
imagefill($im,68,30,$gray);
//将四位整数验证码绘入图片
//位置交错
for ($i = 0; $i < strlen($authnum); $i++) {
if ($i%2 == 0) $top = 1;
else $top = 5;
imagestring($im, 5, 10*$i+6, $top, substr($authnum,$i,1), $black);
}
for($i=0;$i<150;$i++) //加入干扰象素
{
imagesetpixel($im, rand()%70 , rand()%30 , $black);
}
ImagePNG($im);
ImageDestroy($im);
?>
Top
4 楼WXPQD(Sean)回复于 2003-07-02 14:33:42 得分 0
帮我改进一下Top
5 楼enhydra(明)回复于 2003-07-02 16:25:17 得分 5
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered(), and session_unregister().
如果使用$_SESSION (or $HTTP_SESSION_VARS), 是不用注册session变量的,你已经注册了session变量,就应该直接用变量名来表示session变量,那$_SESSION (or $HTTP_SESSION_VARS)里的元素没有值就很正常了。Top
6 楼WXPQD(Sean)回复于 2003-07-03 14:22:15 得分 0
已经正常了。使我把1写成了$1了。Top




