首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

验证码是叉叉,要刷新才能显示,如何搞

2012-05-02 
验证码是叉叉,要刷新才能显示,怎么搞?刷新验证码才会显示,一开始验证码是叉叉。Login.ascxHTML code%@ Con

验证码是叉叉,要刷新才能显示,怎么搞?
刷新验证码才会显示,一开始验证码是叉叉。

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">            &nbsp;</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>            &nbsp;</td>    </tr>    <tr>        <td>            &nbsp;</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>            &nbsp;</td>    </tr>    <tr>        <td>            &nbsp;</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>            &nbsp;</td>    </tr>    <tr>        <td>            &nbsp;</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>            &nbsp;</td>    </tr>    <tr>        <td>            &nbsp;</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>            &nbsp;</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

差很多哦 低级错误

热点排行