首页 > c#, 程序人生 > ASP.NET(c#)语音验证码制作(附源代码)

ASP.NET(c#)语音验证码制作(附源代码)

2009年11月27日 云飞扬 发表评论 阅读评论

ASP.NET(c#)语音验证码 收听验证码
最近发现语音验证码越来越流行,比如有次在注册gmail邮箱看到过,还有msn页面也有语音验证码,还有国外一些网站等。
花时间研究了下,语音验证码主要跟一般验证码的区别就在于如何让验证码播放。本文语音验证码原理:从服务器生成验证码,
并保存到cookie中(getcode.aspx.cs),当点收听验证码的时候,调用javascirpt操作(这里使用jquery)cookie读取验证码,然后把验证码传到codevoice.aspx页,然后按顺序把验证码合成生成一个mp3文件,最后把这个文件传入flash中播放,
你将收听的声音为:“当前验证码是5678请输入”。这个原理也是大部分网站使用的语音验证码原理类似。
源码下载

  Soudcode.rar (102.3 KiB, 4,060 hits)

(请使用VS2008 SP1或VS2010打开)
页面上放置验证码图片页面代码

<form id="form1" enctype="application/x-www-form-urlencoded">
<div>
<input id="txtCode" maxlength="8" name="txtCode" type="text" />
		<img style="cursor: pointer" title="看不清楚,换一张" onclick="this.src='getcode.aspx';" src="getcode.aspx" alt="看不清楚,换一张" align="absMiddle" /><img id="imgRead" style="cursor: pointer" title="收听验证码" onclick="playvoice('player');" src="image/maintb.gif" alt="收听验证码" align="absMiddle" /></div>
</form>

点收听验证码时调用的js函数如下:

function playvoice(id) {
     var voiceid = document.getElementById(id);
     var voicecode = $.cookie('ValidateCode');
     voiceid.innerHTML = "<object id="sound_play" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0" height="0" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="sound_play" /><param name="flashvars" value="isPlay=1&amp;url=codevoice.aspx&amp;code=&quot; + voicecode + &quot;" /><param name="src" value="sound_play.swf?&quot; + (new Date().getTime()) + &quot;" /><embed id="sound_play" type="application/x-shockwave-flash" width="0" height="0" src="sound_play.swf?&quot; + (new Date().getTime()) + &quot;" flashvars="isPlay=1&amp;url=codevoice.aspx&amp;code=&quot; + voicecode + &quot;" name="sound_play"></embed></object>";
 }

其中$.cookie('ValidateCode')是读取cookie验证码,这里使用了一个jquery操作cookie插件

生成mp3页面代码如下:
//读取验证码生成mp3,这里包括头部begin.mp3和尾部end.mp3

Response.ContentType = "audio/mpeg";
Response.WriteFile("sound/begin.mp3");
string checkCode = HttpContext.Current.Request.QueryString["code"].ToString();// string checkCode ="8888";
if (checkCode.Length &gt; 0)
for (int i = 0; i &lt; checkCode.Length; i++)
{
Response.WriteFile("sound/"+checkCode[i] + ".mp3");
}
Response.WriteFile("sound/end.mp3");

【本文作者分别在cnblogs,csdn,http://www.ajaxcn.net同步发布,转载请保留此说明】
flash播放代码主要在第一帧关键帧右击动作,插入以下代码根据传入的播放数字mp3地址

var mysound = new Sound();
var mysong = url;
var isPlay = 1;
var intnum:Number = setInterval(playSong, 500);
function playSong() {
	if (isPlay == 1) {
		mysound.loadSound(mysong+"?code="+code, true);
		mysound.start();
		clearInterval(intnum);
		isPlay = 0;
	}
}

另外特别说明:此源码参考了开源CMS中的登录页:JumbotCms

原创文章转载请注明出处:云飞扬IT的blog

本文链接: http://www.ajaxcn.net/archives/600

一键分享到:新浪微博分享  分享到网易微博    转贴到开心网  推荐到豆瓣  分享到QQ空间    RSS订阅
  1. 小佳
    2009年11月30日14:47 | #1

    - -.0.顶你

  2. 2009年12月2日22:31 | #2

    大家好!这里博文写的不错,快来看看吧!

  1. 本文目前尚无任何 trackbacks 和 pingbacks.

key office 2010

office 2010 key

corel dvd moviefactory 6

corel dvd moviefactory 6 downloads

serial corel draw 11

serial corel draw 11 serials

windows 7 key

windows 7 key

office 2010 professional key

office 2010 key

windows key

windows key

free winrar download for xp

download winrar for xp for free

winrar password cracker serial

wirar password cracker

cs5 serialz

cs5 serialz free

photoshop key

photoshop key

free corel photoshop download

free corel photoshop download keygen

photo shop key

photo shop key

download photo shop free

photo shop serial

serial winzip 11

serial winzip 11 key

adobe free

adobe free

windows 7 free

windows 7 crack

winrar 3 download

winrar 3 download freedownload

office 2010 free

office 2010 key

free corel downloads

free corel downloads cracked