使用JQuery和s3captche实现一个水果名字的验证

2016-02-19 15:09 10 1 收藏

下面是个使用JQuery和s3captche实现一个水果名字的验证教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

【 tulaoshi.com - Web开发 】

先看个图片:

1.介绍:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

s3captcha是一个非常有用的可以让图片顺序显示的一个JQuery插件。它是通过php实现的。但是我发现很容易把它转化为asp.net和C#的代码。 我做了一个config的配置文件可以在文件中配置图片的源和名字等。

然后介绍一下s3captcha的实现原理,

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

上图所示是它的实现模式。
1.它随即生成图片的index;
2.把一系列随机数据赋给图片的index.
3.可以从图片列表中选择一个随机的index.
4.让图片随机的显示为一个radio box.
它使用JQuery实现的radio box到图片List的转换。
2.代码:
首先是把图片的index数组顺序打乱,重新输出:

代码如下:
public static Listint shuffle(Listint input)
{
Listint output = new Listint();
Random rnd = new Random();

int FIndex;
while (input.Count 0)
{
FIndex = rnd.Next(0, input.Count);
output.Add(input[FIndex]);
input.RemoveAt(FIndex);
}

input.Clear();
input = null;
rnd = null;

return output;
}

使用xml来作为s3captche的配置文件:
代码如下:
?xml version="1.0" encoding="utf-8" ?
s3capcha
icons
nameapple,cherry,lemon,pear,strawberry/name
titleApple,Cherry,Lemon,Pear,Strawberry/title
width33/width
height33/height
extjpg/ext
folderfruit/folder
/icons
messageVerify that you are a human not robot, please choose {0}/message
/s3capcha

GetHtmlCode的代码:
代码如下:
public static string GetHtmlCodes(string PathTo, out int SessionValue)
{
bool HasValue = false;
if (string.IsNullOrEmpty(Message))
HasValue = LoadConfig();
else
HasValue = true;

if (HasValue)
{
Random Rnd = new Random();
int RandomIndex = Rnd.Next(0,IconNames.Length);

Listint values = new Listint();
for(int i = 0; i IconNames.Length;i++)
values.Add(i);
values = shuffle(values);

string WriteThis = "div class="s3capcha"p" +
string.Format(Message, "strong" + IconTitles[values[RandomIndex]] +
"/strong") + "/p";

int[] RandomValues = new int[IconNames.Length];
for (int i = 0; i IconNames.Length; i++)
{
RandomValues[i] = Rnd.Next();
WriteThis += string.Format(RowTemplate,
IconTitles[values[i]], RandomValues[i],
PathTo + "/icons/" + Folder + "/" +
IconNames[values[i]] + "." + Extention,
Width, Height);
}
WriteThis += "div style="" style="""clear:left"/div/div";
SessionValue = RandomValues[RandomIndex];
return WriteThis;
}
else
{
SessionValue = -1;
return "Invalid data, config file not found";
}
}

3.使用ajax方法来实现验证信息的判断弹出框:
s3capcha.ashx 用来实现当向服务器请求时,返回html:
代码如下:
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html";

int USession;
context.Response.Write(s3capcha.GetHtmlCodes("../../s3capcha", out USession));
context.Session[s3capcha.s3name] = USession;

context.Response.End();
}

verify.ashx文件·来实现验证功能:
代码如下:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";

if (s3capcha.Verify(context.Session[s3capcha.s3name],
context.Request.Form[s3capcha.s3name]))
context.Response.Write("Success");
else
context.Response.Write("Fail");

context.Response.End();
}

JQuery实现的ajax代码:
代码如下:
//Javascript codes
$(document).ready(function() {
getCapcha();
$("form").bind('submit', function() {
$.ajax({
url: 'verify.ashx',
type: 'POST',
data: { 's3capcha': $("input[name=s3capcha]:checked").val() },
cache: false,
success: function(data) {
alert(data);
getCapcha();
}
});
return false;
});
});

来源:http://www.tulaoshi.com/n/20160219/1609045.html

延伸阅读
? /****************************************************** file name: login.php3 Login Check 编码: PHP 4 作者: Kevin Lee webwing@21cn.com Database: MySQL。 Host: localhost Database : mydb Table structure for table 'user' -------------------------------------------------------- CREATE TABLE user (...
标签: Web开发
1.在login_do.jsp登录成功的前面 加上 session.setAttribute("user",admin);   我是在我的验证Action里面加上的: Admin admin=dbu.selectAdmin(login.getAdmin_user());   HttpSession session=request.getSession(); admin是你的管理员POJO ; admin里面放的是用户名和密码。 user是供...
标签: Web开发
代码如下: String.prototype.replaceAll = function(s1,s2){ return this.replace(new RegExp(s1,"gm"),s2); }; (function($){ /* * $-layer 0.1 - jquery pulg-in * * Copyright (c) 2008 King Wong * $Date: 2008-09-28 $ */ var ___win___ = window.self; var ___self___ = window.self; var ___id___ = ""; var ___settings...
标签: Web开发
先来看看使用方法。 演示地址 http://demo.jb51.net/js/jCutter_jquery/demo.htm HTML文件中这样写: 代码如下: div img src="1.jpg" alt="" div 这是点开后的页面的内容 /div /div 调用的话需要这样写: 代码如下: $(document).ready(function(){ options={ 'speedIn':600, //图片进入时候的动画速度 'speedOu...
标签: Web开发
Ajax在网上已经叫喊了好几年了, 但是还是有很多像我这样的新手没掌握它, 像这样能改善交互体验的技术不会用真是很遗憾呢. 所以我就把我学到的记录下来,供高手指正,新手共勉. 首先,稍微扫扫盲: AJAX = Asynchronous JavaScript And XML , 这里有三个关键词: Asynchronous, javascript和XML. 用一个图来表示它们的关系(我自己的理解,若有不妥望...

经验教程

807

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部