<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script language="javascript">
//验证码:读取cookie中的值
function readCookie()
{
//判断是否存在cookie
var isExist = document.cookie.indexOf("imgRandom=");
//alert(isExist);
if(isExist!=-1)
{
//“imgRandom=”后面的等号的位置
var c= document.cookie.indexOf("=",isExist)+1;
//获取等号后面的字符串,也就是所需要的验证码!
var str = document.cookie.substring(c)
//alert(document.cookie.substring(c));
if(document.getElementById("Image").value!=str)
{
document.getElementById("Image").select();
alert("验证码输入错误!")
return false;
}else
{
return true;
}
}
}
//onload = readCookie;
//获取图片的src
function imgSrc()
{
// 通过链接让图片中的src发生变化
document.getElementById("imgRandom").src = document.getElementById("imgRandom").src + "?abc=" + Math.random();
}
</script>
</head>
<body>
<form name="vcode" action="Default.aspx" method="post" onsubmit=" readCookie()">
验证码 : <input id="Image" type="text" name="checkImage" style="width: 72px; height:20px" /><span style="vertical-align:bottom"><img id="imgRandom" src="Randomimage.aspx" alt="" /></span><a href="javascript:imgSrc()">看不清换一张</a><br />
<input type="submit" value="确定" style="border:solid 1px black" />
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Randomimage.aspx.cs" Inherits="Randomimage" %>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Drawing;
using System.IO;
public partial class Randomimage :System.Web.UI.Page
{
public void Page_Load(object sender, EventArgs e)
{
string random = this.random();
/*
* 将随机数字添加到cookie中
*/
//添加cookie
//imgCookie.Value = random;
//this.Response.Cookies.Add(imgCookie);
//this.Response.Write(imgCookie.Value);
/*
* 图片加载的时候,在图片上写随机数
*/
int width = Convert.ToInt32(random.Length * 25);
using (Bitmap image = new Bitmap(width, 40))
{
//应用画板,在画板上书写数字
using (Graphics gp = Graphics.FromImage(image))
{
//用字符串的形式书写数字
//gp.DrawString(random, new Font("宋体", 24), Brushes.Red, new PointF(20.0F, 10.0F));
gp.Clear(Color.White);
Font font = new Font("隶书", 24, FontStyle.Bold);
System.Drawing.Drawing2D.LinearGradientBrush brush =
new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.DarkOrchid, Color.Blue, 3.5f, true);
gp.DrawString(random, font, brush, 3, 2);
this.drawLine(gp, image);
}
//显示图片
//image.Save(this.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
//输出图片
Response.ClearContent();
Response.ContentType = "text/html";
Response.BinaryWrite(ms.ToArray());
}
HttpCookie imgCookie = null;
if (this.Request.Cookies["imgRandom"] == null)
{
imgCookie = new HttpCookie("imgRandom");
imgCookie.Value = random;
this.Response.Cookies.Add(imgCookie);
//this.Response.Redirect("image.aspx");
}
else
{
imgCookie = new HttpCookie("imgRandom");
imgCookie.Value = random;
this.Response.Cookies.Add(imgCookie);
}
}
/*
* 随机数字的获取
*/
public string random()
{
//string number = "";
//Random random = new Random();
//for (int i = 0; i < 4; i++)
//{
// number += (random.Next(0, 10)).ToString();
//}
string guid = Guid.NewGuid().ToString();
string rtuStr = Guid.NewGuid().ToString().Substring(1, 4);
return rtuStr;
}
private void drawPoint(Bitmap img)
{
Random ran = new Random();
int col = ran.Next();//在一次的图片中杂店颜色相同
for (int i = 0; i < 100; i++)
{
int x = ran.Next(img.Width);
int y = ran.Next(img.Height);
img.SetPixel(x, y, Color.FromArgb(col));
}
}
private void drawLine(Graphics gfc, Bitmap img)
{
Random ran = new Random();
//选择画10条线,也可以增加,也可以不要线,只要随机杂点即可
for (int i = 0; i < 10; i++)
{
int x1 = ran.Next(img.Width);
int y1 = ran.Next(img.Height);
int x2 = ran.Next(img.Width);
int y2 = ran.Next(img.Height);
gfc.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); //注意画笔一定要浅颜色,否则验证码看不清楚
}
}
}
分享到:
相关推荐
本教程将详细介绍如何在.NET中实现一个具有背景随机、字体随机和中英文数字随机的复杂验证码,并且支持用户无刷新更换验证码。 首先,我们需要了解验证码的基本构成。验证码通常由一串随机生成的字符组成,这些字符...
使用改进的形状上下文方法对复杂验证码进行识别,采用整体识别方法,不对图片进行...设计并实现复杂验证码识别算法,并与简单验证码进行比较。实验结果证明,复杂验证 码识别算法能对字符粘连的复杂验证码进行识别。
Kaptcha是Java的一个开源验证码生成库,它能够生成各种类型的复杂验证码,防止机器人或恶意软件自动填写表单。在Spring Boot项目中,我们可以通过配置Kaptcha Bean来定制验证码的样式,包括字体、颜色、背景等。当...
在实际应用中,开发者可以根据具体需求进一步增强滑动验证码的安全性和交互性,比如调整滑块的样式、增加动态元素以及对拖拽轨迹进行更复杂的分析等。通过前后端的共同努力,才能构建一个既安全又用户友好的验证码...
本篇文章将深入探讨如何在Android平台上实现验证码功能,包括自定义控件的创建和验证码的生成与验证。 首先,验证码的主要目的是防止恶意机器人或自动化脚本进行非法操作,如批量注册、刷票等。在Android应用中,...
验证码系统需要能够有效区分人类用户和自动化脚本,因此,验证码的生成和验证过程需要设计得足够复杂和不可预测。此外,前端代码应当进行加密和混淆,以防止被恶意用户分析和绕过。 以上内容基于文件中提供的信息,...
在本案例中,我们讨论的是使用C#编程语言实现的验证码功能,它涉及到图像处理和随机数生成等技术。 在C#中,生成验证码主要涉及以下几个步骤: 1. **随机数生成**:首先,我们需要一个随机数生成器来创建验证码中...
3. **颜色与背景**:为了进一步增加复杂性,可以添加随机颜色和不规则背景,这可以通过Canvas API中的fillStyle和strokeStyle属性来实现。 4. **扭曲路径**:除了扭曲文本,还可以扭曲文本的路径,例如通过贝塞尔...
Java使用Servlet实现登录验证码涉及到的是Web开发中的安全性与用户...通过这个小例子,开发者可以深入理解验证码的工作原理,并能自定义实现更复杂的验证码逻辑,如滑动验证码、拼图验证码等,以适应更高的安全需求。
【beego框架图形验证码实现】是使用Go语言开发的一个高效且功能丰富的图形验证码库,它为Web应用提供了安全的验证码生成服务。这个库的核心目的是为了防止自动化程序(如机器人)进行非法操作,如批量注册、恶意登录...
在这个项目中,我们将重点讨论图像验证码的实现,因为它是最常见的形式。图像验证码通常包含一串随机字符,用户需要正确输入这些字符才能继续注册或登录过程。 首先,我们需要理解验证码的生成过程。这涉及到以下几...
Kaptcha 是一个 Java 实现的验证码生成器,它可以生成包含字母和数字的复杂图片,并具有可配置的样式和扭曲程度,从而增加破解的难度。 首先,我们需要在项目中引入 Kaptcha 的依赖。在 Maven 或 Gradle 的配置文件...
本文将详细讲解如何使用Qt框架来实现一个随机验证码的功能。 Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的库和工具,使得开发人员可以方便地创建桌面、移动和嵌入式应用。在Qt中实现随机...
Java 实现动态验证码效果是一种常见的安全机制,用于防止自动化脚本或机器人在网站上进行恶意操作,如批量注册、登录等。在这个过程中,我们将探讨如何使用Java语言来创建一个简单的动态验证码系统,主要包括以下几...
标题提到的"ASPNET的验证码第三方控件dll"是指一种使用C#编写的、专为ASP.NET平台设计的验证码组件,以动态链接库(DLL)的形式提供,通常包含了实现复杂验证码生成和验证功能的类库。这种控件可以帮助开发者快速...