日期:2014-05-17 浏览次数:20820 次
<?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>
for($i=0;$i<4;$i++){
$rand = '';
$rand.=dechex(rand(1,15));//前面的这个@符号要是不加,图片就显示不出来。
}
$_SESSION['check_pic']=$rand; //前面的@符号要是去掉的话这个就会报错 而且全是乱码。
------解决方案--------------------
$rand.=
这个变量无赋值的情况使用,所以导致notice错误,图像是二进制,notice是文本,二者混合自然导致图片无法显示。
解决办法:
先给$rand赋值
$rand='';
------解决方案--------------------
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);
------解决方案--------------------