authorizationnum.php为验证码生成文件,随机生成一批数字,并把其放到session变量中//a.php
<form action='b.php'>
  <img src="authorizationnum.php" border=0 align="bottom">
  <input name="verifycode" type="text" size="5" maxlength="4"/>
  <input name="OrderNow"   type="submit" />
</form>b.php
echo session变量//这里显示的总是上一次的验证码,不知怎么回事!请大侠们指导一下

解决方案 »

  1.   

    这个也是个验证码,看看是否能帮助你
    <?php
    /* AkoBook AutoScript-Protection
     *
     * @author: Dominik Paulus, [email protected]
     * 25.03.2005
     */session_start('akobookcode');
    session_register('code');mt_srand((double)microtime()*1000000);
    // Numerical code
    $seccode = mt_rand(10000, 99999);
    /* // Code with chars. But difficult to read.
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $seccode = "";
    for($i = 0; $i < 5; $i++)
    $seccode .= $chars[mt_rand(0, 35)];
    */
    $_SESSION['code'] = $seccode;
    echo $seccode;
    exit();
    // create image
    header("Content-Type: image/png");
    $im = imagecreate(60, 18) or die('Image create error!');// Image colors
    // imagecolorallocate($im, R, G, B) Only change R,G,B!
    $bgcolor = imagecolorallocate($im,  255, 255, 255);
    $fontcolor = imagecolorallocate($im, 150, 150, 150);
    $linecolor = imagecolorallocate($im,  255, 255, 255);
    $bordercolor = imagecolorallocate($im, 150, 150, 150);
    // Grid
    for($x=10; $x <= 100; $x+=10)
        imageline($im, $x, 0, $x, 50, $linecolor);
    // Middleline
    imageline($im, 0, 9, 100, 9, $linecolor);
    // Border
    imageline($im, 0, 0, 0, 50, $bordercolor);
    imageline($im, 0, 0, 100, 0, $bordercolor);
    imageline($im, 0, 17, 100, 17, $bordercolor);
    imageline($im, 59, 0, 59, 17, $bordercolor);imagestring($im, 5, 8, 1, $seccode, $fontcolor);
    imagepng($im);
    imagedestroy($im);
    ?>
      

  2.   

    给url加个随机参数
    //a.php
    <form action='b.php'>
      <img src="authorizationnum.php?<?php echo rand(); ?>" border=0 align="bottom">
      <input name="verifycode" type="text" size="5" maxlength="4"/>
      <input name="OrderNow"   type="submit" />
    </form>
      

  3.   

    是不是还没生成图片就将sesseion输出了。
      

  4.   

    authorizationnum.php最上面加上这么几行。header("Expires: Mon, 26 Mar 1997 06 26 05:00:00 GMT");
    header("Last-Modified: ".gmdate("D,d M Y H:i:s")." GMT");
    header("Cache-control: no-cache, must-revalidate");
    header("Pragma: no-cache");
      

  5.   

    唠叨大哥,您的方法不行!
    我有一个验证码生成类,在生成相应数字后,我就将其赋给session进行保存,而后在用户添写完验证码时使其与session值做比较,通过我的跟踪发现,验证码总是上次生成的!
     
      

  6.   

      header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
      header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
      header("Cache-Control: no-store, no-cache, must-revalidate");
      header("Cache-Control: post-check=0, pre-check=0", false);
      header("Pragma: no-cache");
    authorizationnum.php