【Hover】ASP.Net實現驗證碼!
using System.Drawing.Imaging;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置使用者程式碼以初始化頁面
//RndNum是一個自定義函式
string VNum=RndNum(4); //這裡的數字4代表顯示的是4位的驗證字串!
Session["VNum"]=VNum;
ValidateCode(VNum);
}
//生成影像函式
private void ValidateCode(string VNum)
{
int Gheight=(int)(VNum.Length * 11.5);
//gheight為圖片寬度,根據字元長度自動更改圖片寬度
System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20);
Graphics g = Graphics.FromImage(Img);
g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
//在矩形內繪製字串(字串,字型,畫筆顏色,左上x.左上y)
System.IO.MemoryStream ms=new System.IO.MemoryStream();
Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
Response.ClearContent(); //需要輸出圖象資訊 要修改HTTP頭
Response.ContentType="image/Png";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
Img.Dispose();
Response.End();
}
//生成隨機數函式中從Vchar陣列中隨機抽取
//字母區分大小寫
public string RndNum(int VcodeNum)
{
string Vchar = "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" ;
string[] VcArray = Vchar.Split(',') ;
string VNum = "" ;//由於字串很短,就不用StringBuilder了
int temp = -1 ;//記錄上次隨機數值,儘量避免生產幾個一樣的隨機數
//採用一個簡單的演算法以保證生成隨機數的不同
Random rand =new Random();
for ( int i = 1 ; i < VcodeNum+1 ; i++ )
{
if ( temp != -1)
{
rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
}
//int t = rand.Next(35) ;
int t=rand.Next(35);
if (temp != -1 && temp == t)
{
return RndNum( VcodeNum );
}
temp = t ;
VNum += VcArray[t];
}
return VNum ;
}
-----------------------------------end--------------------------------------------
下面是Login.Aspx在在呼叫提交按鈕的響應事件中
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack )
{
Session.Clear();
}
}
public void doit(object sender, System.EventArgs e)
{
if(Page.IsValid)
{
string VNum;
VNum=Session["VNum"].ToString();
ViewState["VNum"]=VNum;
if(this.Vcode.Text==ViewState["VNum"].ToString())
{
Hover.Manage.CheckLogin bj=new Hover.Manage.CheckLogin();
string name=username.Text;
string password=FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Text.ToString(),"md5");
if(!obj.checklogin(name,password))
{
Response.Redirect("../Error.aspx?action=Errorlogin");
Response.End();
return;
}
else
{
Session.Add("adminname",name);
Session.Add("adminpass",password);
Response.Redirect("Default.aspx");
Response.End();
return;
}
}
else
{
Response.Write("
}
}
}
如果提交過來的驗證字串正確就驗證是否是合法使用者!
否則彈出提示返回登陸頁!你也可以簡化此頁!
if(this.Vcode.Text==ViewState["VNum"].ToString())
{
Response.Write("驗證碼正確");
}
else
{
Response.Write("驗證碼錯誤!");
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-349329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Asp.net(C#)實現驗證碼功能ASP.NETC#
- Django實現驗證碼Django
- java實現驗證碼Java
- rails實現驗證碼AI
- [Hei.Captcha] Asp.Net Core 跨平臺驗證碼實現APTASP.NET
- js實現身份證號碼驗證JS
- ASP.NET Core - 實現自定義WebApi模型驗證ASP.NETWebAPI模型
- PHP算式驗證碼和漢字驗證碼的實現方法PHP
- javascript實現的身份證號碼驗證程式碼JavaScript
- asp.net驗證碼應用ASP.NET
- ASP.NET MVC驗證碼演示ASP.NETMVC
- java圖形驗證碼實現Java
- KgCaptcha驗證碼實現筆記GCAPT筆記
- 在ASP.NET下實現數字和字元相混合的驗證碼ASP.NET字元
- Ext實現的身份證格式驗證程式碼
- java實現動態驗證碼原始碼——繪製驗證碼的jspJava原始碼JS
- 在ASP.NET下實現數字和字元相混合的驗證碼 (轉)ASP.NET字元
- Java實現郵箱驗證碼功能Java
- web動態驗證碼的實現Web
- 圖形驗證碼設計實現
- 驗證碼的原理、作用及實現
- 實現動態驗證碼的思路
- 簡單幾步實現滑動驗證碼(後端驗證)後端
- javascript實現的驗證碼程式碼例項JavaScript
- javascript實現的身份證號碼合法性驗證程式碼JavaScript
- vue實現簡訊驗證碼登入Vue
- 為網站實現一個驗證碼網站
- 【總結】Java實現簡訊驗證碼Java
- Vue.js實現圖形驗證碼Vue.js
- node實現登入圖片驗證碼
- js實現驗證碼倒數計時JS
- spring mvc實現登入驗證碼SpringMVC
- 總結-SpringMVC實現驗證碼介面SpringMVC
- js實現的身份證合法性驗證程式碼JS
- canvas實現的驗證碼效果程式碼例項Canvas
- SpringSceurity(4)---簡訊驗證碼功能實現Spring
- js實現的郵箱格式驗證程式碼JS
- C#實現驗證碼識別例項C#