源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-09-07 19:31 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:使用JQuery和s3captche实现一个水果名字的验证
先看个图片: [img]http://files.jb51.net/upload/20090814012832627.png[/img] 1.介绍:  s3captcha是一个非常有用的可以让图片顺序显示的一个JQuery插件。它是通过php实现的。但是我发现很容易把它转化为asp.net和C#的代码。 我做了一个config的配置文件可以在文件中配置图片的源和名字等。  然后介绍一下s3captcha的实现原理, [img]http://files.jb51.net/upload/20090814012832332.jpg[/img] 上图所示是它的实现模式。 1.它随即生成图片的index; 2.把一系列随机数据赋给图片的index. 3.可以从图片列表中选择一个随机的index. 4.让图片随机的显示为一个radio box. 它使用JQuery实现的radio box到图片List的转换。 2.代码: 首先是把图片的index数组顺序打乱,重新输出:
[u]复制代码[/u] 代码如下:
public static List<int> shuffle(List<int> input) { List<int> output = new List<int>(); 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的配置文件:
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="utf-8" ?> <s3capcha> <icons> <name>apple,cherry,lemon,pear,strawberry</name> <title>Apple,Cherry,Lemon,Pear,Strawberry</title> <width>33</width> <height>33</height> <ext>jpg</ext> <folder>fruit</folder> </icons> <message>Verify that you are a human not robot, please choose {0}</message> </s3capcha>
GetHtmlCode的代码:
[u]复制代码[/u] 代码如下:
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); List<int> values = new List<int>(); 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:
[u]复制代码[/u] 代码如下:
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文件·来实现验证功能:
[u]复制代码[/u] 代码如下:
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代码:
[u]复制代码[/u] 代码如下:
//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; }); });
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部