最大的網站源碼資源下載站,
using system.drawing;
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();
}
http://community.csdn.net/expert/topic/3342/3342222.xml?temp=.5347406
//生成隨機數函數中從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在在調用提交按鈕的響應事件中
public void doit(object sender, system.eventargs e)
{
if(page.isvalid)
{
string vnum;
vnum=session["vnum"].tostring();
session.abandon();
viewstate["vnum"]=vnum;
if(this.vcode.text==viewstate["vnum"].tostring())
{
hover.manage.checklogin obj=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("<script>alert(/"請輸入正確的附加碼!/");</script>");
}
}
}
如果提交過來的驗證字符串正確就驗證是否是合法用戶!
否則彈出提示返回登陸頁!你也可以簡化此頁!
if(this.vcode.text==viewstate["vnum"].tostring())
{
response.write("驗證碼正確");
}
else
{
response.write("驗證碼錯誤!");
}
新聞熱點
疑難解答
圖片精選