php生成验证码,总在for($i=0;$str='';$i<4;$i++)出现错误???刚开始学习,求指导!

<?php
$image=imagecreate(200,100);
$black=imagecolorallocate($image,0,0,0);
$white=imagecolorallocate($image,255,255,255);
for($i=0;$i<9;$i++)
{
imageline($image,rand(0,200),rand(0,100),rand(0,200),rand(0,100),$white);
}
for($i=0;$i<150;$i++)
{
imagesetpixel($image,rand(0,200),rand(0,100),$white);
}

{

switch(rand(1,3))
{
case'1':
$ch=rand(0,9);
break;
case'2':
$ch=sprintf('%c',rand(97,122));
break;
$ch=sprintf('%c',rand(65,90));
break;
}
$str.=$ch;
}
imagettftext($image,32,rand(0,15),20,70,$white,'C:\windows\fonts\mingliu.ttc',$str);
imagejpeg($image);
imagedestory();
?>

首先你的程序中没有
for($i=0;$str='';$i<4;$i++)
这条语句

另外,
for($i=0;$str='';$i<4;$i++)
语句中出现了3个分号,这是不符合PHP中for语句用法的。

for语句使用方式如下:

第一种,全语句模式:
for($i=0; $i<10; $i++){
}

第二种,省略初始赋值语句:
$i=0;
for(;$i<10; $i++){
}

第三种,省略回调语句:
for($i=0; $i<10; ){
$i++;
}

第四种, 省略初始赋值语句以及回调语句:
$i=0;
for(;$i<10;){
$i++;
}

for语句的用法只有以上四种情况,但是绝对不可以省略或者多出for后面括号中的分号。

你再检查下你的程序。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-21
for()括号中只能有两个分号,
for($i=0;$str='';$i<4;$i++)
里面有3个了,要改成
for($i=0,$str='';$i<4;$i++)追问

改了就没有错误了,但是为什么是一堆乱码?

追答

哪里是一堆乱码?生成的验证码吗

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网