| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 679 人关注过本帖
标题:javascript 图片验证的问题
只看楼主 加入收藏
mmfeel
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-12-9
收藏
 问题点数:0 回复次数:4 
javascript 图片验证的问题
用js和php做的。主要想用js做验证,不用到后台再验证。
现在问题是这样,输入正确的验证码后,点提交,到wow.php页面后,再点返回,这时候要输入回刚才输入的验证码才能再次成功跳转,但是图片验证码已经更新了,不是原来的验证码数字。我应该怎么解决呢?

php生成图片代码:yzm.php
<?php
srand((double)microtime()*1000000);
$im=imagecreate(50,20); // 新建一个基于调色板的图像
$gray=imagecolorallocate($im,200,200,200);//imagecolorallocate -- 为一幅图像分配颜色
imagefill($im,0,0,$gray);  //imagefill -- 区域填充
for($i=0;$i<4;$i++){
 $str=mt_rand(1,3);
 $size=mt_rand(3,6);
 $authnum=substr($_GET['num'],$i,1);
 imagestring($im,$size,(2+$i*10),$str,$authnum,imagecolorallocate($im,rand(0,130),rand(0,130),rand(0,130)));
} //imagestring -- 水平地画一行字符串
imagepng($im);
imagedestroy($im);
?>

html页面输入: login.html
<html>
<head>
<title>js---判断验证码码是否正确</title>
<script >
function yzm(form){
    var num1=Math.round(Math.random()*10000000);
    var num=num1.toString().substr(0,4);
    form.check2.value=num;
    document.write("<img name=codeimg width=50 heigh=20 src='yzm.php?num="+num+"'>");
   
}
function code(form){
    var num1=Math.round(Math.random()*10000000);
    var num=num1.toString().substr(0,4);
    form.check2.value=num;
    document.codeimg.src="yzm.php?num="+num;//这里面的num就是验证码的值
}
function checkYzm(form){
    if(form.check.value == ""){
        document.getElementById('result').innerHTML = "验证码不能为空";
    }else if(form.check.value != form.check2.value){
        document.getElementById('result').innerHTML = "验证码错误,请重新输入";
    }else{
        document.getElementById('result').innerHTML = "验证码输入正确";
    }
}
function postForm(form) {
    if(form.check.value == "" || form.check.value != form.check2.value)
     {
        document.getElementById('check').value = '';
         document.getElementById('check').focus();
     }
    else
     {
        form.submit();
     }
}
</script>
 <style type="text/css">
 #result {height:240px;width:150px;background-color:red;}
  </style>
</head>
<body>
<form id="login" name="login" method="post" action="wow.php">
<table>
    <tr>
        <td  width="46" height="18">
            <input id="check" name="check" type="text" width="46" onBlur="return checkYzm(login)"  >
            <input id="check2" name="check2" type="hidden" />
        </td>   
        <td width="52" height="18" onClick="javascript:code(login)">
           <script>yzm(login);</script>
        </td>
    </tr>
    <tr>
       <td colspan=2>
           <input type="button" id="btnSubmit" name="btnSubmit" value="提交" onclick="postForm(login)"/>
        </td>
    </tr>
</table>   
<div id="result"></div>
</form>
</body>
</html>

wow.php 验证码匹配正确后跳转过来的页面
<?php
echo "wow!you done it!";
?>
搜索更多相关主题的帖子: javascript 验证码 double 调色板 图片 
2013-08-15 21:34
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
没搞过php啊

梅尚程荀
马谭杨奚







                                                       
2013-08-16 22:07
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
不用把着重点放在点击返回后还要输入原先的验证码才能再次进入php那个页面吧?这样的页面实现对于面向注册用户没有任何意义啊。还不如设置成返回后可以使用刷新后的验证码进入php页面。

思考赐予新生,时间在于定义
2013-08-16 23:14
月暗
Rank: 2
来 自:湖北黄冈
等 级:论坛游民
帖 子:17
专家分:81
注 册:2012-11-3
收藏
得分:0 
"到wow.php页面后,再点返回,这时候要输入回刚才输入的验证码才能再次成功跳转,但是图片验证码已经更新了",这话说的太奇怪了。
你可以使用PHP,生成性的HTML页面啊。后台分支控制吧。而且,为什么要“再点”才能“返回”呢?后台重定向吧。

听说有个大婶叫舔罩,那些求大神的人,求的是她么?
\u6f
2013-09-04 21:31
hugeannex
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:483
专家分:911
注 册:2005-3-20
收藏
得分:0 
首先,你的理念是错的,验证码的作用是啥?就是为了仿机器人扫描。你这用js验证,和没验证码是一个道理。所以,验证码只能后台验证,如果验证不正确,那返回后刷新那也是正常的。
如果你非得不刷新,那只能用ajax申请验证接口,如果成功那后台生成一个session值,提交表单后,再验证这session值,那表单就产生了二次提交,加重服务器负担,很少人会傻到这要做。

世事如潮我如水,只叹江湖几人回。
2013-10-23 10:51
快速回复:javascript 图片验证的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020248 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved