項目前期完成了,開始著手做後台,壓力小了點,有更多的時間研究新東西了
驗證碼並不是新東西,一直沒弄明白是怎麼回事,前些天用GDI忽然有了思路,就用上了
登陸頁的後台代碼,用Sleep放重新整理延遲
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
System.Threading.Thread.Sleep(1000);
char[] source = ("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890").ToCharArray();
string code = "";
Random rnd = new Random();
for (int i=0 ; i < 4 ; i++)
code += source[rnd.Next(source.Length-1)];
Session["code"]=code;
}
}
登陸驗證 private void BtnLogin_Click(object sender, System.EventArgs e)
{
if (TxtCode.Text.ToLower() != Session["code"].ToString().ToLower())
{
Response.Write("<script>alert(\"驗證碼錯誤\")</script>");
Response.Write("<script>window.navigate(\"index.aspx\")</script>");
return;
}
if (TxtUserName.Text == "username" && TxtPassword.Text == "password")
{
Session["UserName"] = TxtUserName.Text;
Response.Redirect("下一頁面");
}
Response.Write("<script>alert(\"密碼錯誤\")</script>");
Response.Write("<script>window.navigate(\"index.aspx\")</script>");
}
前台還是用一個Img伺服器對象 url為code.aspx
Code.aspx.cs如下
private void Page_Load(object sender, System.EventArgs e)
{
if(Session["code"].ToString()!="")
{
Bitmap bm = new Bitmap(60,30);
Graphics g = Graphics.FromImage(bm);
g.DrawString(Session["code"].ToString(),new System.Drawing.Font("宋體",20),new SolidBrush(Color.WhiteSmoke),0,0);
bm.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Gif);
}
}
OK,完成了