【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Hei.Captcha] Asp.Net Core 跨平臺驗證碼實現APTASP.NET
- easy-captcha實現驗證碼驗證APT
- Django實現驗證碼Django
- ASP.NET Core - 實現自定義WebApi模型驗證ASP.NETWebAPI模型
- KgCaptcha驗證碼實現筆記GCAPT筆記
- java圖形驗證碼實現Java
- 圖形驗證碼設計實現
- Java實現郵箱驗證碼功能Java
- web動態驗證碼的實現Web
- 簡單幾步實現滑動驗證碼(後端驗證)後端
- vue實現簡訊驗證碼登入Vue
- Vue.js實現圖形驗證碼Vue.js
- SpringSceurity(4)---簡訊驗證碼功能實現Spring
- uniapp 實現簡訊驗證碼登入APP
- node實現登入圖片驗證碼
- 【總結】Java實現簡訊驗證碼Java
- 為網站實現一個驗證碼網站
- C# ASP.NET Core Web API 框架 實現向手機傳送驗證碼簡訊C#ASP.NETWebAPI框架
- ASP.NET MVC中使用FluentValidation驗證實體ASP.NETMVC
- ASP.NET Core - JWT認證實現ASP.NETJWT
- Python實現簡單驗證碼的轉文字Python
- 使用 Chapel 實現滑動驗證碼識別
- 基於YOLO實現滑塊驗證碼破解YOLO
- 自動化驗證碼登入如何實現?
- soket 利用http實現驗證碼的傳送HTTP
- [Python]實現簡訊驗證碼的傳送Python
- 影片直播原始碼,前端canvas動態驗證碼實現原始碼前端Canvas
- ASP.NET登入驗證ASP.NET
- asp.net core3.1 實戰開發(驗證碼的封裝和使用)ASP.NET封裝
- Web 端 實現 app “輸入驗證碼 ”的效果WebAPP
- 基於Node.js實現行為驗證碼Node.js
- 分享一個圖片驗證碼功能的實現
- Laravel 驗證碼類實現 (供學習、參考)Laravel
- 簡訊驗證實現方式
- TP6實現前後端分離的圖片驗證碼,驗證碼以介面形式返回後端
- app直播原始碼,驗證時實現獲取驗證碼並顯示倒數計時的功能APP原始碼
- lumen驗證類 實現控制器場景驗證
- 在Keycloak中實現多租戶並在ASP.NET Core下進行驗證ASP.NET
- 如何實現直播間原始碼重要的簡訊驗證碼功能原始碼