PHP验证码制作的问题
我按照PHP100视频教程的方法做了一个验证码的简单程序
就这些:
<?php
session_start();
for($i=0;$i<=3;$i++)
{
@$con.=dechex(rand(0,15));
}
$_SESSION[pic]=$con;
$im=imagecreatetruecolor(100,20);
$fir=imagecolorallocate($im,0,0,0);
$sec=imagecolorallocate($im,255,255,255);
imagestring($im,rand(3,5),rand(4,57),0,$con,$sec);
header("Content-type: image/jpeg");
imagejpeg($im);
?>
启动SESSION是为了另一个页面用 我和教程上做的一模一样 可是为什么运行时图片是红叉 去掉$_SESSION[pic]却又能正常显示了?
答案:很简单,你用[pic]时PHP会检查是否有一个名为pic的常量。这肯定找不到,于是它就在文件开头输出一个警告信息。此信息在图片数据前输出,导致图片无法被浏览器识别。解决方法是给pic加引号,$_SESSION['pic']
其他:可以在验证码图片的程序里加上代码,不要缓存。如果不会的话。你就用 JS onclick= $_SESSION[pic]=$con; 应该加引号 $_SESSION["pic"]=$con; 不然程序错误 当然显示不了 我吧代码拿过来用好好的啊,能显示出来。
可能是你其他东西出错了吧。 $_SESSION[pic]=$con; 应该写成 $_SESSION[‘pic’]=$con; 刚有人提到 $_SESSION["pic"]=$con; 这样写正确 但是php会在" "之间寻找常量 不利于程序的执行速度
上一个:php中的foreach 一段设计思路求教
下一个:php Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'db_user'@'localhost'