【【【400分 求类似于yahoo的验证码生成程序 】】】
我 google了许多验证码生成代码,都不符合 。
要求类似于
https://member.cn.yahoo.com/cnreg/reginfo.html?id=78036
要点:
1、每个字符都扭曲(我已经实现了)
2、字符中间有随机曲线,而且曲线有规律:H,A之类的,曲线会穿过字母中间的横线。这个比较困难。
符合要求,另开200分贴相送
yangj@asiait.net
ps:
为了防止有人说是倒分贴,请您发送时务必抓个图。我接收邮件也抓图为证。没办法,这年头干啥都要有证据。。。。
[解决办法]
你可以到一些字体网站下载类似的字体,至于线条,自己计算就能画出
[解决办法]
看了别人的注册页面就想重写自己的..
[解决办法]
jf up
[解决办法]
找一下相关的系统字体
[解决办法]
验证码生成程序还有很多其它的功能可用来提高能力,例如对于同一个会话在5秒钟内最多只能生成一次(否则就sleep10秒钟才输出),或者干脆给个四则算术题(例如“30-5+81”)。
[解决办法]
看看www.yinuof.com
里面的验证码
是不是符合你的要求:
可以自定义弯曲的幅度
[解决办法]
何必搞那么复杂的图形,看得偶眼睛多花了,不好,用户有好性不好 .........
以为这样就能提供安全性?太片面了吧?还是为了“炫”,呵呵
[解决办法]
技术角度,偶实现不了,所以有点 ...
总之呢,我喜欢交互性好的系统
[解决办法]
记得在哪里找到过的类似模仿YAHOO的验证码
晚上回去找找发给你
[解决办法]
mark
[解决办法]
学习...
[解决办法]
关注....
[解决办法]
2、字符中间有随机曲线,而且曲线有规律:H,A之类的,曲线会穿过字母中间的横线。这个比较困难。
这个也可以精确算出吧,不过随机出现更好
[解决办法]
关注。。
[解决办法]
在图片上画几个横线,没问题吧?
[解决办法]
系统是省级别的一个保密系统,所以要求这么严格。我也头疼啊。
保密系统???晕,为什么不采取CA机制和数字证书呢?
验证码只能避免密码被暴力破解,避免不了其它安全问题!
[解决办法]
up
[解决办法]
不会,帮顶一下!
[解决办法]
顶 顶 顶
[解决办法]
孟子都来了
好久没有看到钻石了 呵呵
[解决办法]
你的验证码是不是要搞得人家看不出来最好呀!!
[解决办法]
mark
[解决办法]
有难度,学习
[解决办法]
现在流行运算题!
[解决办法]
帮顶,没做过。
[解决办法]
孔子来。。。。。。
[解决办法]
mark
------解决方案--------------------
路过,只能帮你顶了
[解决办法]
我有自动生成随即码的代码,就在这里给你代码,记得给分啊.
<%@ import namespace= "System "%>
<%@ import namespace= "System.io "%>
<%@ import namespace= "System.Drawing "%>
<%@ import namespace= "System.Drawing.Imaging "%>
<script language= "vbscript " runat= "server ">
Sub Page_Load(Sender as object,e as eventargs)
'RndNum是一个自定义函数
dim VNum as string= " "
Session( "VRandomData ")=VNum
VNUM=RndNum(4)
while Session( "VRandomData ")= " " '防止产生空SESSION
VNUM=RndNum(4)
Session( "VRandomData ")=VNum
ValidateCode(VNum)
end while
End Sub
'生成图象验证码函数
Sub ValidateCode(VNum)
Dim Img as System.Drawing.Bitmap
Dim g as Graphics
Dim ms as MemoryStream
dim gheight as integer=Int(Len(VNum)*11.5)
'gheight为图片宽度,根据字符长度自动更改图片宽度
img=new BitMap(Gheight,20)
g=Graphics.FromImage(img)
g.DrawString(VNum,(New Font( "Arial ",10)),(New SolidBrush(color.blue)),3,3) '在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
ms=New MemoryStream()
img.Save(ms,ImageFormat.Png)
Response.ClearContent() '需要输出图象信息 要修改HTTP头
Response.ContentType= "image/Png "
Response.BinaryWrite(ms.ToArray())
g.Dispose()
img.Dispose()
Response.End()
End Sub
'--------------------------------------------
'函数名称:RndNum
'函数参数:VcodeNum--设定返回随机字符串的位数
'函数功能:产生数字和字符混合的随机字符串
Function RndNum(VcodeNum)
dim Vchar as string= "0,1,2,3,4,5,6,7,8,9 " ',A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z "
dim VcArray() as string=split(Vchar, ", ") '将字符串生成数组
dim VNum as string= " "
dim i as byte
For i=1 to VcodeNum
Randomize
VNum=VNum & VcArray(Int((ubound(VcArray)+1)*Rnd))
Next
Return VNum
End Function
</script>
[解决办法]
/*******************************************************/
// 用于产生验证码图片 //
/*******************************************************/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.Drawing;
using System.Text;
using System.IO;
public partial class RandomValidateImage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//输出带有随机验证码的图片
CreateCheckCodeImage(GenerateCheckCode());
}
/// <summary>
/// 生成随机验证码字符串
/// </summary>
/// <returns> 生成随机验证码字符串 </returns>
private string GenerateCheckCode()
{
int number;
string strCode = string.Empty;
//随机数种子
Random random = new Random();
for (int i = 0; i < 4; i++) //雅正码长度为4
{
//随机的整数
number = random.Next();
//字符从0-9,A-Z中随机产生,对应的ASCII码分别为 48-57,65-90
number = number % 36;
if (number < 10)
{
number += 48;
}
else
{
number += 55;
}
strCode+=((char)number).ToString();
}
//在 Cookie 中保存验证码
Response.Cookies.Add(new HttpCookie( "CheckCode ",strCode));
return strCode;
}
/// <summary>
/// 根据验证码输出图片
/// </summary>
/// <param name= "checkCode "> 产生的随机验证码 </param>
private void CreateCheckCodeImage(string checkCode)
{
//若验证码为空,则直接返回
if (checkCode == null || checkCode == String.Empty)
return;
//根据验证码长度确定输出图片的长度
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((double)(checkCode.Length * 15))-4, 20);
//创建 Graphics 对象
Graphics g = Graphics.FromImage(image);
try
{
//产生随机数种子
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线 5条
for (int i = 0; i < 5; i++)
{
//噪音线的起点坐标(x1,y1)和终点坐标(x2,y2)
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
//用灰色画噪音线
g.DrawLine(new Pen(Color.Gray), x1, y1, x2, y2);
}
//输出图片中验证码的字体:13号Arial,粗斜体
Font font = new Font( "Arial ", 13, (FontStyle.Bold | FontStyle.Italic));
//线性渐变画刷
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
Color.Black, Color.DarkBlue, 1.2f, true);
//画验证码字符串
g.DrawString(checkCode, font, brush, 2,1);
//画图片前景噪音点30个
for (int i = 0; i < 30; i++)
{
//随机产生点的坐标(x,y)
int x = random.Next(image.Width);
int y = random.Next(image.Height);
//画噪音点,颜色随机
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片边框线
g.DrawRectangle(new Pen(Color.SaddleBrown), 0, 0, image.Width - 1, image.Height - 1);
//创建内存流用于输出图片
using (MemoryStream ms = new MemoryStream())
{
//图片格式为 Jpeg
image.Save(ms, ImageFormat.Jpeg);
//清除缓冲区中的所有输出
Response.ClearContent();
//输出流的 HTTP MIME 类型为“image/Jpeg”
Response.ContentType = "image/Jpeg ";
//输出图片的二进制流
Response.BinaryWrite(ms.ToArray());
}
}
finally
{
//释放Bitmap对象和Graphics对象
g.Dispose();
image.Dispose();
}
}
}
另外写个空的aspx文件:
<%@ Page Language= "C# " AutoEventWireup= "true " CodeFile= "RandomValidateImage.aspx.cs " Inherits= "RandomValidateImage " %>
<!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>
</head>
<body>
<form id= "form1 " runat= "server ">
<div>
</div>
</form>
</body>
</html>
[解决办法]
生成汉字的验证码啊
[解决办法]
mark 帮顶
[解决办法]
只有帮顶了~
[解决办法]
mark
[解决办法]
既然是保密系统,弄个验证码都弄不出?
[解决办法]
偶也来接分了,我也想知道,关注~~
祝福楼主能够找到合适的解决方案~
[解决办法]
楼主找到答案了没?
找到了的话把源码分享一下哦!
帮顶!!!!!!!!