20分太少么???<?php
Header("Content-type: image/PNG");
session_start();
$authnum=mt_rand(1000,9999);
$_SESSION['num']=$authnum;$im = imagecreate(56,20);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,0,0,$gray);imagestring($im, 5, 10, 3, $authnum, $black);
for($i=0;$i<200;$i++)
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
ImagePNG($im);
ImageDestroy($im);?>$_SESSION['num']居然无值!!!
如何把这个RAND值给代出来,给验证的脚本用呢?
如何判断呢?

解决方案 »

  1.   

    $authnum=mt_rand(1000,9999);
    改成:
    srand();
    $authnum=rand(1000,9999);
    在生成随机数之前,要有随机种子。
      

  2.   

    其次,还可以验证信息来源,如果是本站提交的数据就接收,如果不是就停止。
    if(strpos($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'])<0){
    echo "请到本站页面提交数据!";
    return;
    }
      

  3.   

    $_SESSION['num']居然无值!!!
    如何把这个RAND值给代出来,给验证的脚本用呢?
    如何判断呢?
    =================================
    怎么会无值呢?有的.
      

  4.   

    验证的脚本也要打开session
    session_start()
    才能接受到session值
      

  5.   

    <input type="text" readonly='readonly' name='numchk' id='numchk' size='5' value='49717' dataType='Repeat' to='p_num' msg='楠岃瘉鐮佷笉鍖归厤' style='background:#D3D3D3;text-align:center;font-family:Courier;color:#4169E1;font-weight:bold;'/>拜托,这样的验证码根本不起作用,最起码要作成图片的,你现在的验证方式只要读取numchk的值就可以用机器人灌水了