php + javascript 验证验证码

majia_2009 2009-08-08 03:20:24
请教一个问题:
我用php做一个验证码,保存在number.php种,调用number.php后,验证码的值就保存到了$_Session['checkcode']中
我想用javascript在当前页面验证输入的验证码是否正确,该怎么做了?
我在网上搜了很久也没有找到javascript如何访问session哦

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<form name="form1">
<table width="300" border="1">
<tr>
<td width="100">验证码</td>
<td width="100"><input type="text" name="checkcode" id="checkcode" width="50" onblur="javascript:checknumber(this.value)"/></td>
<td width="100"><img src="number.php" name="number" id="number" onclick="javascript:renumber()" alt="看不清,换一张" /></td>
</tr>
<tr>
<td colspan="3"> <input type="text" id="showcode"></td>
</tr>
</table>

</form>
</body>
</html>
<script language="javascript" type="text/javascript">
function checknumber(msg)
{
//怎么判断验证码是否正确?
document.getElementById('showcode').value=msg;

}

function renumber()
{
document.getElementById('number').src="number.php?"+ Math.random();
}
</script>

...全文
90 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
majia_2009 2009-08-09
我刚学一个星期php哦,还要学javascript
现在你又让我学ajax, prototype.js, jquery.js等。。。。。
我也想周末两天把这些都学会了,可惜我还没那么强悍
关键是下个星期一就要出来效果,呵呵

不过我用cookie实现了那个效果

谢谢你这么热心!
回复
fenyao 2009-08-08
[Quote=引用 10 楼 majia_2009 的回复:]
PHP codefunction renumber()
{
document.getElementById('number').src="number.php?"+ Math.random();
}
[/Quote]
这样就比较麻烦
采用ajax来做吧,很方便的
查一下prototype.js或者jquery.js等框架的用法,选择其中一个框架来实现ajax,比较容易些,网上有很多使用教程的。
回复
majia_2009 2009-08-08


function renumber()
{
document.getElementById('number').src="number.php?"+ Math.random();
}
回复
majia_2009 2009-08-08

<?php
session_start();
srand((double)microtime()*1000000);
$im=imagecreate(45,20);
$bk=imagecolorallocate($im,200,200,200);
imagefill($im,0,0,$bk);
$_SESSION["codenumber"]="";
for($i=0;$i<4;$i++){
$x=mt_rand(1,5);
$y=mt_rand(1,3);
$font=mt_rand(3,5);
$tmp=dechex(mt_rand(0,15));
$_SESSION['codenumber'].=$tmp;
imagestring($im,$font,($x+$i*10),$y,$tmp,imagecolorallocate($im,rand(0,130),rand(0,130),rand(0,130)));
}
imagepng($im);
imagedestroy($im);
?>
回复
fenyao 2009-08-08
图片是生成在指定目录的吗?renumber怎么拿到图片路径的?
能不能贴上来看看,或者讲一下具体的执行过程
回复
majia_2009 2009-08-08
点验证码的图片就可以刷新了

<img src="number.php" name="number" id="number" onclick="javascript:renumber()" alt="看不清,换一张" />
回复
fenyao 2009-08-08
你怎么刷新验证码呢
回复
majia_2009 2009-08-08
是这样吗?

<input type="hidden" id="test" value=<?php echo $_SESSION['codenumber']?>>

但是这样之后,我如果点验证码的图片,刷新验证码之后,这个值就没有刷新哦

但是如果在javascript:renumber里面重新个这个赋值的话,就又要调用session了

要是在number.php那个文件里面刷新的话,也只能存在session里面,不知道怎么才能在更新验证码的同时,更新hidden的值了?
回复
fenyao 2009-08-08
那就客户端和服务器端都验证吧

先将验证码的值赋给一个hidden
js验证时拿这个值与用户输入的验证码对比

如果正确,数据将会提交到服务器端,这个时候再用PHP验证一遍
回复
blueforyou 2009-08-08
只能用Ajax来操作了
回复
majia_2009 2009-08-08
还不会哦,刚刚学习php不到一个星期
回复
fenyao 2009-08-08

如果只在客户端验证会不安全的,
你可以采用ajax的方式来验证
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告