我创建了一个验证码类文件code.php和一个注册文件reg.php。想在reg.php中获取验证码类文件中的4位的随机数。能得到,但却与验证码总是差一步,得到的随机数,总是验证码中显示的上一次的结果。请大家帮忙,这种情况一般是哪里的问题呢?
code.php
<?php
class code
{
    ......
}
$code = new code(40,20,4);//创建一个验证码对象,宽40,高20,共4个随机数。
session_start();//启用session
$_SESSION['num'] = $code->image();//该成员函数能返回已写入图象中的4位随机数。
?>reg.php
<?php
session_start();
echo $_SESSION['num'];//注意,我的问题是:这里显示的验证码,为什么总与下面显示的不一样呢?总是与下面的验证码上次刷新得到的结果相同。这是怎么回事呢?
?>
......这里是html代码。
验证码:<img src="code.php" />

解决方案 »

  1.   

    执行顺序问题啊,你前面代码执行的时候,code.php还没有执行呢,当然不会得到当前的num
      

  2.   

    你页面里的<img src="code.php" />是在echo $_SESSION['num'];之后才执行的!!你获取的session肯定是你上次刷新之前的!
      

  3.   

    echo $_SESSION['num'];//注意,我的问题是:这里显示的验证码,为什么总与下面显示的不一样呢?总是与下面的验证码上次刷新得到的结果相同。这是怎么回事呢?
    ?>
    ......这里是html代码。
    验证码:<img src="code.php" />
    你在echo $_SESSION['num']; 的时候  code.php里面的代码还没有执行 所以取到的是一个
    没问题的 不必纠结
      

  4.   

    我觉得楼上说的好象不太对。我把reg.php中的php脚本换个位置,放到html的下面,也是出现同样的错误。请问这是为什么呢?关键是如何解决呢?请朋友们给指点一下,万分感激。
    reg.php
    ......这里是html代码。
    验证码:<img src="code.php" /><?php
    session_start();
    echo $_SESSION['num'];//注意,我的问题是:这里显示的验证码,为什么总与上面显示的不一样呢?总是与上面的验证码上次刷新得到的结果相同。这是怎么回事呢?
    ?>
      

  5.   

    php的代码会比html代码先执行
    你把
    <?php
    session_start();
    echo $_SESSION['num'];//注意,我的问题是:这里显示的验证码,为什么总与上面显示的不一样呢?总是与上面的验证码上次刷新得到的结果相同。这是怎么回事呢?
    ?>
    这段代码放在另一个文件 不要在reg.php中 然后先执行reg.php 再去访问上面代码的文件  看看还有没有问题
      

  6.   

    code.php:
    $num = $code->image();
    session_register("num");html.php:
    <?
    session_start();
    session_destroy(); 
    ?>
    <img src=code.php>这样试一下