验证码是叉叉,要刷新才能显示,怎么搞?
刷新验证码才会显示,一开始验证码是叉叉。
Login.ascx
- HTML code
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Login.ascx.cs" Inherits="blog.User.Login" %><table align="center" cellpadding="0" cellspacing="0" class="style2"> <tr> <td align="center"> </td> <td align="right"> <asp:Label ID="Label8" runat="server" SkinID="20" Text="用户名:" Width="68px" style="font-size: small"></asp:Label> </td> <td colspan="2"> <span style="font-size: 9pt"><asp:TextBox ID="txtUid" runat="server" Width="105px" Font-Size="9pt"></asp:TextBox></span> </td> <td> </td> </tr> <tr> <td> </td> <td align="right"> <asp:Label ID="Label3" runat="server" style="font-size: small" Text="密 码:"></asp:Label> </td> <td colspan="2"> <span style="font-size: 9pt"> <asp:TextBox ID="txtPwd" runat="server" Width="105px" TextMode="Password" Font-Size="9pt"></asp:TextBox></span> </td> <td> </td> </tr> <tr> <td> </td> <td align="right"> <asp:Label ID="Label9" runat="server" Height="20px" Text="验证码:" Width="67px"></asp:Label> </td> <td colspan="2"> <asp:TextBox ID="txtVali" runat="server" Width="105px" Height="16px" ></asp:TextBox> </td> <td> </td> </tr> <tr> <td> </td> <td colspan="3" align="right"> <img src="Vcode.aspx" id="valiCode" alt="验证码" /><a title="刷新验证码" href="" onclick="javascript:document.getElementById('valiCode').src='User/Vcode.aspx?id='+Math.random();return false;">看不清,请换张图?</a> </td> <td> </td> </tr> <tr> <td> </td> <td align="right"> <asp:ImageButton ID="btnLoad" runat="server" CausesValidation="False" Height="21px" ImageUrl="~/Images/Skin/登录_06.jpg" OnClick="btnLoad_Click" Width="55px" /> </td> </tr> <tr> <td> </td> <td align="right"> <asp:ImageButton ID="btnRegister" runat="server" CausesValidation="False" Height="21px" ImageUrl="~/Images/Skin/注册_08.jpg" OnClick="btnRegister_Click" Width="53px" /> </td> </tr></table>Login.ascx.cs
- C# code
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;namespace blog.User{ public partial class Login : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { } protected void btnLoad_Click(object sender, ImageClickEventArgs e) { HttpCookie cookie = Request.Cookies["Vcode"]; if (String.Compare(cookie.Value, txtVali.Text, true) != 0) { Response.Write("<script lanuage=javascript>alert('验证码错误');location='javascript:history.go(-1)'</script>"); } else { int i = this.checkLogin(txtUid.Text, txtPwd.Text); if (i > 0) { Session["UserName"] = this.txtUid.Text; Session["PassWord"] = this.txtPwd.Text; Page.Response.Redirect("~/User_Response/Login_OK.aspx"); } else { Response.Write("<script lanuage=javascript>alert('用户名称或密码错误!');location='javascript:history.go(-1)'</script>"); } } } public int checkLogin(string loginName, string loginPwd) { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["new_conn"].ConnectionString); SqlCommand myCommand = new SqlCommand("select count(*) from tb_Blog where UserName=@loginName and PassWord=@loginPwd", con); myCommand.Parameters.Add(new SqlParameter("@loginName", SqlDbType.NVarChar, 50)); myCommand.Parameters["@loginName"].Value = loginName; myCommand.Parameters.Add(new SqlParameter("@loginPwd", SqlDbType.NVarChar, 50)); myCommand.Parameters["@loginPwd"].Value = loginPwd; myCommand.Connection.Open(); int i = (int)myCommand.ExecuteScalar(); myCommand.Connection.Close(); return i; } }}
Vcode.aspx.cs
- C# code
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Drawing; namespace blog.User{ public partial class Vcode : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { CreateCheckCodeImage(GenerateCheckCode()); } private string GenerateCheckCode() { int number; char code; string checkCode = String.Empty; Random random = new Random(); for (int i = 0; i < 4; i++) { number = random.Next(); code = (char)('0' + (char)(number % 10)); checkCode += code.ToString(); } Response.Cookies.Add(new HttpCookie("Vcode", checkCode)); return checkCode; } private void CreateCheckCodeImage(string checkCode) { if (checkCode == null || checkCode.Trim() == String.Empty) return; System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22); Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); //画图片的背景噪音线 for (int i = 0; i < 2; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2); //画图片的前景噪音点 for (int i = 0; i < 100; i++) { int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next())); } //画图片的边框线 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } }}[解决办法]
Vcode.aspx
User/Vcode.aspx
差很多哦 低级错误