我有了产生验证码的程序,但不知如何用到页面上?我用了"<asp:Image Runat="server" ID="ImageCheck" ImageUrl="ValidateCode.aspx"></asp:Image>"将它放到另一页面,但只有验证码,而无法产生验证功能,因为,我读不到SESSION里的数据,所以无法和用户输入对比.你们是怎样用的呢?能否给一段代码呢

解决方案 »

  1.   

    请在IE中直接浏览ValidateCode.aspx看是否有产生了验证码了
      

  2.   

    你的 Session 保证可以使用, 检查Web.comfig;
    ValidateCode.aspx 出来的结果就是一张图片!
      

  3.   

    我也是初学不大会 这是别人给我的
    验证码程序  image.aspx.cs
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Drawing.Imaging;
    using System.IO;namespace wsbm2005
    {
    /// <summary>
    /// image 的摘要说明。
    /// </summary>
    public class image : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    {
    //生成4位的驗證碼
    string tmp = RndNum(4);
    Session["CheckCode"] = tmp;
    this.ValidateCode(tmp);
    }
    } 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,v,w,x,y,z";
    string[] VcArray=Vchar.Split(new Char [] {','});
    string VNum="";
    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);
    if(temp!=-1&&temp==t)
    {
    return RndNum(VcodeNum);
    }
    temp=t;
    VNum+=VcArray[t];
    }
    return VNum;
    } private void ValidateCode(string VNum) 
    {
    Bitmap Img=null;
    Graphics g=null;
    MemoryStream ms=null; int gheight=VNum.Length*12;
    Img=new Bitmap(gheight,25);
    g=Graphics.FromImage(Img);
    //背景顏色
    g.Clear(Color.White);
    //文字字體
    Font f=new Font("Arial", 12, System.Drawing.FontStyle.Bold); //文字顏色
    SolidBrush s=new SolidBrush(Color.Black);
    g.DrawString(VNum,f,s,3,3);
    ms=new MemoryStream();
    Img.Save(ms,ImageFormat.Jpeg);
    Response.ClearContent(); 
    Response.ContentType="image/Jpeg";
    Response.BinaryWrite(ms.ToArray());
       
    g.Dispose();
    Img.Dispose();
    Response.End();
    }
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion
    }
    }
    我在login.aspx里用的代码<asp:TextBox id="txtyzm" runat="server" Width="112px"></asp:TextBox>(输入验证码的文本框)

    <asp:Image ID="yzm" runat="server" ImageUrl="image.aspx"></asp:Image>在login.aspx.cs里的代码using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Xml;//开始我没加这句没好使,后来加上了好使了,但一直没知道为什么
    .
    .
    .
    protected System.Web.UI.WebControls.Image yzm;
    protected System.Web.UI.WebControls.TextBox txtyzm;
    .
    .
    .if (Session["CheckCode"].ToString()!=txtyzm.Text.Trim())
    {
    msg1.Text="验证码错误! ";
    }
    else
    {  }
                                   
    希望能对你有所帮助!:)
      

  4.   

    同意楼上的,其实关键就在Session["CheckCode"]=tmp,tmp是随机生成的4位数的验证码,剩下的代码就是负责把这4个数字变成图。你用的时候,在登录页面里,加一个textbox,验证的时候只要验证这个textBox.Text内容是不是和Session["CheckCode"]内容相等。相等就可以继续了,不等就提示验证码出错。
    判断的时候要:
    if(textBox1.Text == Session["CheckCode"].ToString()) //因为Session["CheckCode"]是object型的
    {
       成功
    }
    else
    {
      错误
    }
      

  5.   

    在ValidateCode.aspx文件中,得出验证码后先把它赋值给Session变量