当前位置:编程学习 > php >>

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表怎么实现?哪位高手能指导一下?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,