php 数字验证码怎么老是出现乱码啊?
<form name=form1 action="" method="post">
验证码:<input type="text" name="text">
<?php
srand((double)microtime()*1000000);
$im=imagecreate(45,18);
$black=imagecolorallocate($im,0,0,0);
$white=imagecolorallocate($im,255,255,255);
$gray=imagecolorallocate($im,200,200,200);
imagefill($im,0,0,$gray);
session_register("autonum");
$_SESSION["autonum"]="";
for($i=0;$i<4;$i++){
$str=mt_rand(1,3);
$size=mt_rand(3,6);
$authnum=mt_rand(0,9);
$_SESSION["autonum"].=$authnum;
imagestring($im,$size,(5+$i*10),$str,$authnum,imagecolorallocate($im,rand(0,130),rand(0,130),rand(0,130)));
}
for($i=0;$i<200;$i++){
$randcolor=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im,rand()%70,rand()%30,$randcolor);
}
imagepng($im);
imagedestroy($im);
?>
<input type="submit" name="submit" value="登录"/>
</form>
代码怎么改一下
答案:你这直接就输出了图片数据了,生成验证码的程序要另外保存一个文件。html中通过img标签的src属性值来引用该文件
1.html
<form name=form1 action="" method="post">
验证码:<input type="text" name="text">
<img src="1.php" onclick="this.src='1.php?'+Math.random()">
<input type="submit" name="submit" value="登录"/>
</form>
1.php
<?php
session_start();
srand((double)microtime()*1000000);
$im=imagecreate(45,18);
$black=imagecolorallocate($im,0,0,0);
$white=imagecolorallocate($im,255,255,255);
$gray=imagecolorallocate($im,200,200,200);
imagefill($im,0,0,$gray);
session_register("autonum");
$_SESSION["autonum"]="";
for($i=0;$i<4;$i++){
$str=mt_rand(1,3);
$size=mt_rand(3,6);
$authnum=mt_rand(0,9);
$_SESSION["autonum"].=$authnum;
imagestring($im,$size,(5+$i*10),$str,$authnum,imagecolorallocate($im,rand(0,130),rand(0,130),rand(0,130)));
}
for($i=0;$i<200;$i++){
$randcolor=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im,rand()%70,rand()%30,$randcolor);
}
imagepng($im);
imagedestroy($im);
?>
上一个:如何在php文件中,通过点击按钮,实现数据库的相关操作?
下一个:php 在数据库里导入导出excell表怎么实现?哪位高手能指导一下?