点击验证码进行验证码的刷新,但不刷新当前整个页面:
<tr>
<td>验证码:</td>
<td>
<input type="text" id="yzm" name="yzm" size="10" placeholder="请输入验证码" class="yzm">
<img id="code" class="img_yzm" src="./public/common/yanzhengma.php" οnclick="this.src+='?'"/> </td>
</tr>
方法: οnclick="this.src+='?'" 只刷新验证码图片,二部而不刷新整个页面
提交表单之后,验证码出错时,只弹出提示消息,不刷新页面,不清空已填用户名和密码:
if(!strcasecmp($yzm, $checkstr)==0){ // 判断验证码是否输入正确(不区分大小写)
echo "<script>";?>
var t1 = document.getElementById("name");
t1.value="<?php echo $name;?>";
var t2 = document.getElementById("pwd");
t2.value="<?php echo $pwd;?>";
var txt4 = document.getElementById("yzm");
alert('验证码输入错误!');
txt4.focus();
<?php
echo "</script>";
}
验证码的实现:
<?php
session_start(); //启动session
header('Content-type:image/png'); //输出头信息
$image_w=100; //验证码图形的宽
$image_h=25; //验证码图形的高
$number=range(0,9); //定义一个成员为数字的数组
$character=range("Z","A"); //定义一个成员为大写字母的数组
$bigcharacter=range("z","a"); //定义一个成员为小写字母的数组
$result1=array_merge($number,$character); //合并数组$number,$character
$result=array_merge($result1,$bigcharacter); //合并数组$result1,$bigcharacter
$string=""; //记录验证码字符串并初始化
$len=count($result ); //数组的长度
//随机生成验证码字符串
for($i=0;$i<4;$i++){
$new_number[$i]=$result[rand(0,$len-1)];
$string=$string.$new_number[$i];
}
$_SESSION['string']=$string; //使用$_SESSION变量传值
$check_image=imagecreatetruecolor($image_w, $image_h); //创建图片对象
$white=imagecolorallocate($check_image,255, 255, 255); //定义白色
$black=imagecolorallocate($check_image,0,0,0); //定义黑色
imagefill($check_image,0,0,$white); //填充背景的颜色为白色
//在验证码图片上加入50个干扰的黑点
for($i=0;$i<50;$i++){
imagesetpixel($check_image,rand(0,$image_w),rand(0,$image_h),$black);
}
//在背景图片上循环输出4位验证码
for($i=0;$i<count($new_number);$i++){
$x=mt_rand(1,8)+$image_w*$i/4; //设置字符所在x坐标
$y=mt_rand(1,$image_h/4); //设置字符所在y坐标
//随机设定字符颜色
$color=imagecolorallocate($check_image, mt_rand(0,200),mt_rand(0,200), mt_rand(0,200));
//输入字符到图片中
imagestring($check_image,5,$x,$y,$new_number[$i],$color);
}
imagepng($check_image); //输出图片
imagedestroy($check_image); //清除资源
?>