<?php
    session_start();
    
for($i=0;$i<4;$i++){
@$rand.=dechex(rand(1,15));//前面的这个@符号要是不加,图片就显示不出来。
}
@$_SESSION[check_pic]=$rand; //前面的@符号要是去掉的话这个就会报错 而且全是乱码。 
$im=imagecreatetruecolor(100,30); 

$bg=imagecolorallocate($im,0,0,0);
$te=imagecolorallocate($im,255,255,255);
    imagestring($im,5,0,0,$rand,$te);      header("content-type:image/jpeg");
  imagejpeg($im);
?>
<?php
session_start();
if($_POST[code]){
if($_POST[code]==$_SESSION[check_pic]){
echo "验证码正确:".$_SESSION[check_pic];
}
else 
{
echo "验证码错误";

}

}
?>
<form action="" method="post">
<img src="code.php"><br>
验证码:<input type="text" name="code">
<input type="submit" value="提交">
</form>
我现在前面要是不加@符号的话就是报错。下面是错误的提示
Notice: Use of undefined constant code - assumed 'code' in F:\wamp\apps\project\code_sub.php on line 3Notice: Use of undefined constant code - assumed 'code' in F:\wamp\apps\project\code_sub.php on line 4Notice: Use of undefined constant check_pic - assumed 'check_pic' in F:\wamp\apps\project\code_sub.php on line 4加上@符号之后就一切正常了 这是什么错误

解决方案 »

  1.   

    加引号 $_SESSION["check_pic"]undefined constant是未定义常量的意思,不加引号字串按常量看待
      

  2.   

    for($i=0;$i<4;$i++){
            $rand = '';
            $rand.=dechex(rand(1,15));//前面的这个@符号要是不加,图片就显示不出来。
        }
        $_SESSION['check_pic']=$rand; //前面的@符号要是去掉的话这个就会报错 而且全是乱码。
        if($_POST['code']){
            if($_POST['code']==$_SESSION['check_pic']){
                    echo "验证码正确:".$_SESSION['check_pic'];
            }
      

  3.   

    可能原因:两个页面的编码不一致;2个好像有关php画图的函数时要先声明头部信息吧
      

  4.   

    $rand.=这个变量无赋值的情况使用,所以导致notice错误,图像是二进制,notice是文本,二者混合自然导致图片无法显示。解决办法:
    先给$rand赋值$rand='';
      

  5.   

        session_start();
        $rand = '';
        for($i=0;$i<4;$i++){
            $rand.=dechex(rand(1,15));//前面的这个@符号要是不加,图片就显示不出来。
        }    
        $_SESSION['check_pic']=$rand; //前面的@符号要是去掉的话这个就会报错 而且全是乱码。 
        $im=imagecreatetruecolor(100,30); 
        
        $bg=imagecolorallocate($im,0,0,0);
        $te=imagecolorallocate($im,255,255,255);
        imagestring($im,5,0,0,$rand,$te);      header("content-type:image/jpeg");
      imagejpeg($im);
      

  6.   


    错误一:$rand.=处,原型既:$rand = $rand + ,未先定义变量$rand,所以报notice错误;
    错误二:@$_SESSION[check_pic]=$rand,check_pic是数组$_SESSION的键名,但是你这里没有使用引号引住键名,就把check_pic当成了一个常量,而你又没有定义常量”check_pic“,在使用未定的常量时,常量的值==常量名
      

  7.   


    <?php
    session_start();
    if($_POST['code']){
    if($_POST['code']==$_SESSION['check_pic']){
    echo "验证码正确:".$_SESSION['check_pic'];
    }
    else 
    {
    echo "验证码错误";

    }

    }
    ?>
    <form action="" method="post">
    <img src="code.php"><br>
    验证码:<input type="text" name="code">
    <input type="submit" value="提交">
    </form>改完之后 Notice: Undefined index: code in F:\wamp\apps\project\code_sub.php on line 3
    提示错误if($_POST['code']) 有错么。
      

  8.   

    //这个Notice级别的警告不去理它也没事,第一次打开会报,等你点提高按钮后就不会。。或者改成这样:
    if ($_POST && $_POST['code']) {
    ...
    }
      

  9.   

    是不是编码的问题,用notepad++看看是啥编码,转换一下。
    http://www.okbase.net/doc/details/69
      

  10.   

    error_reporting(0);//加上这一句试试