喜悦国际村 专业PHP开发者社区's Archiver

akyahoo 发表于 2009-11-12 09:26 AM

JavaScript如何生成图片验证码?

[i=s] 本帖最后由 akyahoo 于 2009-11-12 09:29 AM 编辑 [/i]

[b][size=4][color=#808000]就像这个PHPX的登录页面一样。它的验证码是直接通过[/color][/size][/b][b][size=4][color=#808000] JavaScript直接生成的,而不是通过PHP的GD库生成,然后通过服务器发送过来的。[/color][/size][/b]
[b][size=4][color=#808000]
[/color][/size][/b]
[b][size=4][color=#808000]点击“[/color][/size][/b][b][size=4][color=#0000ff]换一个[/color][/size][/b][b][size=4][color=#808000]”后,[/color][/size][/b][b][size=4][color=#808000] JavaScript就直接在浏览器里重新生成一个新的[/color][/size][/b][b][size=4][color=#808000]验证码。不需要发送回服务器。[/color][/size][/b]
[b][size=4][color=#808000]
[/color][/size][/b]
[b][size=4][color=#808000]
[/color][/size][/b]
[b][size=4][color=#808000]
[/color][/size][/b]
[color=#ff8c00][b][size=4] 请问,JavaScript如何[/size][/b][b][size=4]生成图片和随机字母和数字的?[/size][/b][/color]:o

sanders_yao 发表于 2009-11-12 10:16 AM

谁说它没有走服务器?你使用firebug抓一下包就能看到,你操作的过程中正在向服务器发送请求。

akyahoo 发表于 2009-11-12 01:45 PM

没想到呀。算了。我不用图片验证了。我的服务器在美国,用Ajax效果也不好。



[b][color=#0000ff]那么,请问,如何用JavaScript生成四个随机的数字,并且验证输入是否正确?[/color][/b]:funk:

sanders_yao 发表于 2009-11-12 02:54 PM

验证码的随机数字在给用户看之前必须要让服务器知道 否则当用户再次访问的时候怎么知道它输入的正确与否
而向服务器端传递随机数往往会暴露给抓包的程序 所以不能向服务器传递相同随机数
结果就是验证码只能在服务器端生成

奶瓶 发表于 2009-11-12 04:13 PM

思想家

akyahoo 发表于 2009-11-12 08:26 PM

[quote]思想家
[size=2][color=#999999]奶瓶 发表于 2009-11-12 04:13 PM[/color] [url=http://www.phpx.com/happy/redirect.php?goto=findpost&pid=1140657&ptid=258294][img]http://www.phpx.com/happy/images/common/back.gif[/img][/url][/size][/quote]

感觉你整天在灌水,从没正经回答人的技术问题。

akyahoo 发表于 2009-11-12 08:29 PM

[quote]验证码的随机数字在给用户看之前必须要让服务器知道 否则当用户再次访问的时候怎么知道它输入的正确与否
而向服务器端传递随机数往往会暴露给抓包的程序 所以不能向服务器传递相同随机数
结果就是验证码只能在服务 ...
[size=2][color=#999999]sanders_yao 发表于 2009-11-12 02:54 PM[/color] [url=http://www.phpx.com/happy/redirect.php?goto=findpost&pid=1140649&ptid=258294][img]http://www.phpx.com/happy/images/common/back.gif[/img][/url][/size][/quote]

没明白。我只是想防止机器人自动登录或暴力破解密码。用户为什么要再次访问?

奶瓶 发表于 2009-11-12 08:39 PM

[quote]

没明白。我只是想防止机器人自动登录或暴力破解密码。用户为什么要再次访问?
[size=2][color=#999999]akyahoo 发表于 2009-11-12 08:29 PM[/color] [url=http://www.phpx.com/happy/redirect.php?goto=findpost&pid=1140678&ptid=258294][img]http://www.phpx.com/happy/images/common/back.gif[/img][/url][/size][/quote]
这样做其实为了降低服务器压力,有很多人根本就没打算登录,还有更多的是机器人,不用每次打开页面都生成一个验证码,那个操作很浪费资源。

奶瓶 发表于 2009-11-12 08:39 PM

[quote]

感觉你整天在灌水,从没正经回答人的技术问题。
[size=2][color=#999999]akyahoo 发表于 2009-11-12 08:26 PM[/color] [url=http://www.phpx.com/happy/redirect.php?goto=findpost&pid=1140677&ptid=258294][img]http://www.phpx.com/happy/images/common/back.gif[/img][/url][/size][/quote]
做人不用太正经

csqspc 发表于 2009-11-13 10:36 PM

对,有技术的地方就有人,有人的地方就有奶,有奶的地方就会有奶瓶!

游戏人间 发表于 2009-11-14 12:38 AM

如果要省服务器资源,倒是有一个不是太好的办法.

把一堆事先准备好的图片按一定的顺序排序好,生成随机数图片名称,然后直接去下载图片.

只是要是图片少了也不太好,图片多了吧查询也是要花费一定资源的.

akyahoo 发表于 2009-11-14 08:56 AM

[quote]如果要省服务器资源,倒是有一个不是太好的办法.

把一堆事先准备好的图片按一定的顺序排序好,生成随机数图片名称,然后直接去下载图片.

只是要是图片少了也不太好,图片多了吧查询也是要花费一定资源的.
[size=2][color=#999999]游戏人间 发表于 2009-11-14 12:38 AM[/color] [url=http://www.phpx.com/happy/redirect.php?goto=findpost&pid=1140774&ptid=258294][img]http://www.phpx.com/happy/images/common/back.gif[/img][/url][/size][/quote]

呵呵。这是好方法呀。只要机器人不能识别,两三张图片就够了。

迎风 发表于 2009-11-14 10:56 AM

固定图片随机化没用的
两三张图片直接人工识别好之后比较md5好了
就算图片多也是一个学习的过程,维护一个md5表,抓到验证码之后md5数据从表里面取,有的继续,没有的把图片保存下来,人工识别后md5入库,越积累识别率越高...等到高到一个几率就可以发难了..........
还是动态生成好

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.