自从上次有了一次破解验证码的经验后,就一直想自己写个像样点的验证码。今天无聊所以就写了,总体上来说还算很满意。就是有时复杂得肉眼都看不出是啥(这也跟图片太小有关系)。
这个验证码支持随机字体、字体大小、字体样式(普通、粗体、斜体)、字体颜色、自定义字符等。
代码中的libFont是字体库,libChar是字符库,libColor是颜色库,可以自己扩充。
两个while循环,第一个是画干扰线的,第二个是画字符的,线和字符的多和少可以自己控制。
最后是Session["SAFECODE"],自己也可以修改,默认是把所有字符都转成大写的。
其它的就没什么好说的了,看代码吧。
<%@ Page Language="C#" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Web" %>
<%@ import Namespace="System.Drawing" %>
<mce:script runat="server"><!--
// 样式库 格式: Name|Size(em)|Style
private static string[] libFont = new string[]
{
"宋体|12|Bold", "宋体|12|Italic", "宋体|12|Regular",
"Arial|12|Bold", "Arial|12|Italic", "Arial|12|Regular",
"Tahoma|12|Bold", "Tahoma|12|Italic", "Tahoma|12|Regular",
"Verdana|12|Bold", "Verdana|12|Italic", "Verdana|12|Regular"
};
// 字符库
private static string[] libChar = new string[]
{
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
};
// 颜色库
private static string[] libColor = new string[]
{
"Blue", "Red", "Green", "DarkGreen", "DarkBlue", "Tomato"
};
private void Page_Load(object sender, System.EventArgs e)
{
GetSafeCode();
}
private void GetSafeCode()
{
Random r = null;
Bitmap bmp = null;
Graphics g = null;
MemoryStream stream = null;
string[]
在Web编程过程中,存在着很多安全隐患。比如在以前的ASP版本中,Cookie为访问者和编程者都提供了方便,并没有提供加密的功能。打开IE浏览器,选择“工具”菜单里的“Internet选项”,然后在弹出的对话框里单击“设置”按钮,选择“查看文件”按钮,在弹出的窗口中,就会显示硬盘里 ......
这两天熟悉公司的网站前台和后台的数据结构和业务逻辑,看到许多工程下都有一个叫“Base”的文件夹,里面有一系列带“***.Generated.cs”的文件(比如Bulletin.Generated.cs)。懂点编程知识和英语的人都应该会想到这是用什么工具自动生成的吧?以前我也知道C#有根据模板自动 ......
在页面基类中增加以下方法,能够获得比override void OnError(EventArgs e)更高的错误处理优先级和控制权,override void OnError(EventArgs e)方式中OnError被执行完毕后基类(Page)的OnError在后续被调用,当前页面随即丧失控制权.
protected void Page_Error(object sender, EventArgs e)
{
&nb ......
概念:其实思路非常简单,就像画画一样,你脑中的饼图想啥样子的,就把它在网页里画出来而已。相信大家小时候都画过画,不同的是,小时候,在纸上画,现在在网页上画。
这是我脑子里饼图的样子:<激光传真机>
C#后台示例代码:<激光一体机>
using System;
using System.Data;
using System.Configur ......