為了便于大家學習,修改vb.net code成為c#
gif.aspx文件修改的內容
private void page_load(object sender, system.eventargs e)
{
// 在此處放置用戶代碼以初始化頁面
//rndnum是一個自定義函數
string vnum = rndnum(5);
session["vnum"] = vnum;
validatecode(vnum);
}
private void validatecode(string vnum)
{
//生成驗證code
system.drawing.bitmap img;
system.drawing.graphics g;
system.io.memorystream ms;
int gheight = convert.toint32(vnum.length*11.5);
//gheight為圖片寬度,根據字符長度自動更改圖片寬度
img = new bitmap(gheight,20);
g = graphics.fromimage(img);
//在矩形內繪制字串(字串,字體,畫筆顏色,左上x.左上y)
g.drawstring(vnum,new font("arial",10),new solidbrush(system.drawing.color.blue),3,3);
ms = new memorystream();
img.save(ms,imageformat.png);
response.clearcontent(); //需要輸出圖象信息 要修改http頭
response.contenttype = "image/gif";
response.binarywrite(ms.toarray());
g.dispose();
img.dispose();
response.end();
}
//'函數名稱:rndnum
//'函數參數:vcodenum--設定返回隨機字符串的位數
//'函數功能:產生數字和字符混合的隨機字符串
private 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(",".tochararray()); //將字符串生成數組
string vnum = "";
int i;
for(i=1;i<vcodenum;i++)
{
system.random ro = new random();
double deca = ro.nextdouble();
vnum = vnum + vcarray[convert.toint32(35*deca)];
}
// for i=1 to vcodenum
//randomize
//vnum=vnum & vcarray(int(35*rnd)) '數組一般從0開始讀取,所以這里為35*rnd
//next
return vnum;
}
validatecode.aspx修改內容
private void page_load(object sender, system.eventargs e)
{
// 在此處放置用戶代碼以初始化頁面
string vnum;
if(session["vnum"]!= null)
{
vnum = session["vnum"].tostring();
session.abandon();
viewstate["vnum"]=vnum;
}
}
private void button1_click(object sender, system.eventargs e)
{
if(txtvalidatecode.text == viewstate["vnum"].tostring() )
{
lblshow.text="提示:驗證通過" ;
}
else
{
lblshow.text="所填寫的驗證碼與所給的不符";
}
}