可以利用ajax来检测是否存在的相同的用户名!

解决方案 »

  1.   

    你可以给按钮加一个弹出事件,窗口URL为
    checkuser.aspx?username=XXXXX
    然后在这个页面中作手脚,来判断这个用户是否存在
      

  2.   

    SqlCommand cmd = new SqlCommand("select * from oaUser where oaUser_Name='" + AdminName + "'", con);
                SqlDataReader sdr = cmd.ExecuteReader();
                if (sdr.Read())
                {
                    Response.Write("<script>alert('用户名已存在);history.back();</script>");
                    Response.End();
                }
                else
                {
                    Response.Write("<script>alert('用户名可以正常使用);history.back();</script>");
                    Response.End();
                }
      

  3.   

    代码自己写,给你个思路,select username from User where username=@username查询数据库中是否有你当前要注册这个用户的名字,如果有则不能注册,没有就可以,很容易的,LZ多想想!
      

  4.   

    现在流行用AJAX做无刷新效果的
    不过楼主还是先把基础的搞好吧
      

  5.   

    用ajax实现,效果会好点,最起码在检测用户名的时候页面不会刷新,感觉楼主是新手!
      

  6.   


    经过楼上的楼主,我仿他们写了下,可出了点问题
    protected void LinkButton1_Click(object sender, EventArgs e)
        {
            if (UserName.Text == "")
            {
                Response.Write("<script>alert('用户名不能为空!');history.back();</script>");        }
            SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);
            SqlCommand cmd = new SqlCommand("select * from Users where UserName = '" + UserName + "'", myConnection);        ///打开链接
            myConnection.Open();
            SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);        if (sdr.Read())
            {
                Response.Write("<script>alert('用户名已存在,请重生选择用户名!');history.back();</script>");
                Response.End();
                sdr.Close();        }        else
            {
                sdr.Close();
                Response.Write("<script>alert('此用户名可以正常使用');history.back();</script>");
                Response.End();        }
        }测试的时候什么不管是否注册过的用户名都可以使用!请大哥们指点下!
      

  7.   

    监测下UserName传递的值又没有问题
      

  8.   

    将 SqlCommand cmd = new SqlCommand("select * from Users where UserName = '" + UserName + "'", myConnection);改为
     SqlCommand cmd = new SqlCommand("select * from Users where UserName = '" + UserName.Text + "'", myConnection);
      

  9.   

    监测下UserName传递的值又没有问题是没有问题的!我再试试我楼上的这个楼主!谢谢各位楼主了!
      

  10.   

    存储过程判断
    if not exists(select * from table where name=@name)
    begin
          insert注册
    end
    else
    begin
           返回一个值提示已存在用户
    end
      

  11.   

    SqlCommand cmd = new SqlCommand("select * from Users where UserName = '" + UserName + "'", myConnection);有问题,最后一个UserName是什么?
      

  12.   

    给个例子你看一下
    这是前台的
    <%@ Page language="c#" Inherits="ch32.Verify" CodeFile="Verify.aspx.cs" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>Verify</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script type="text/javascript" src="CallBackObject.js"></script>
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <script type="text/javascript">
    var Cbo = new CallBackObject();
    Cbo.OnComplete = Cbo_Complete;
    Cbo.OnError = Cbo_Error; function CheckUsername(Username)
    {
    var msg = document.getElementById('lblMessage');
    if( Username.length > 0 )
    {
    Cbo.DoCallBack('tbUsername', '');
    }
    else
    {
    Cbo.AbortCallBack();
    msg.innerHTML = '';
    }
    } function Cbo_Complete(responseText, responseXML)
    {
    var msg = document.getElementById('lblMessage');
    if (responseText == '0')
    {
    msg.innerHTML = '用户名存在!';
    msg.style.color = 'green';
    }
    else if (responseText == '1')
    {
    msg.innerHTML = '用户名长度必须在3到15之间,且不包含字母、数字和下划线以外的字符!';
    msg.style.color = 'red';
    }
    else
    {
    msg.innerHTML = '用户名不存在!';
    msg.style.color = 'red';
    }
    } function Cbo_Error(status, statusText, responseText)
    {
    alert(responseText);
    }
    </script>
    <asp:Label id="Label2" runat="server" Font-Names="黑体,Arial Black" Font-Bold="True" Font-Size="X-Large">基于AJAX的数据验证</asp:Label>
    <hr>
    <asp:Label id="Label1" runat="server">用户名:</asp:Label>
    <asp:TextBox id="tbUsername" runat="server" onkeyup="CheckUsername(this.value)" ontextchanged="tbUsername_TextChanged"></asp:TextBox>
    <br>
    <asp:Label id="lblMessage" runat="server"></asp:Label>
    </form>
    </body>
    </HTML>
      

  13.   

    这是后台代码,你看一下
    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.Text.RegularExpressions;namespace ch32
    {
    /// <summary>
    /// Verify 的摘要说明。
    /// </summary>
    public partial class Verify : System.Web.UI.Page
    {

    protected void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {     }
    #endregion protected void tbUsername_TextChanged(object sender, System.EventArgs e)
    {
    if( !CallBackHelper.IsCallBack )
    return; string strName = tbUsername.Text; try
    {
    string strReturnCode;
    if (!IsValidUsername(strName))
    {
    strReturnCode = "1";
    }
    else if (!IsUsernameExist(strName))
    {
    strReturnCode = "2";
    }
    else
    {
    strReturnCode = "0";
    }
    CallBackHelper.Write(strReturnCode);
    }
    catch( Exception ex )
    {
    CallBackHelper.HandleError( ex );
    }
    } private bool IsUsernameExist(string strUsername)
    {
    bool bRet = false; switch (strUsername.ToLower())
    {
    case "test":
    case "tom":
    case "jack":
    case "ajax":
    case "aspnet":
    bRet = true;
    break;
    } return bRet;
    } private bool IsValidUsername(string strUsername)
    {
    return (Regex.IsMatch(strUsername, @"^(\w{3,15})$"));
    }
    }
    }
      

  14.   

    楼主上面的那个CallBackObject.js文件呢!可以贴出来吗?
      

  15.   

    楼上的AJAX根本实现不了,我试过了!不是贪心,而是我是新手!
      

  16.   

    楼上的这是我新改的一个下例子你看一下吧
    先在wen.config中加上
    <system.web>
    <httpHandlers>
    <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
    </httpHandlers>
    </system.web>下面是前台的脚本
    <%@ Page language="c#" Inherits="ch33.Verify" CodeFile="Verify.aspx.cs" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>Verify</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script language="jscript">
    function VerifyUsername(name)
    {
    ch33.Verify.GetReturnCode(name, IsUsernameExist_callback);
    }
    function IsUsernameExist_callback(res)
    {
    var msg = document.getElementById('lblMessage');
    var bRet = res.value;
    if (bRet == "0")
    {
    msg.innerHTML = '用户名存在!';
    msg.style.color = 'green';
    }
    else if (bRet == "1")
    {
    msg.innerHTML = '用户名长度必须在3到15之间,且不包含字母、数字和下划线以外的字符!';
    msg.style.color = 'red';
    }
    else
    {
    msg.innerHTML = '用户名不存在!';
    msg.style.color = 'red';
    }
    }
    </script>
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <asp:Label id="Label2" runat="server" Font-Names="黑体,Arial Black" Font-Bold="True" Font-Size="X-Large">基于AJAX的数据验证</asp:Label>
    <hr>
    <asp:Label id="Label1" runat="server">用户名:</asp:Label>
    <asp:TextBox id="tbUsername" runat="server" onkeyup="VerifyUsername(this.value)"></asp:TextBox>
    <br>
    <asp:Label id="lblMessage" runat="server"></asp:Label>
    </form>
    </body>
    </HTML>下面是后台的代码
    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.Text.RegularExpressions;
    using System.Data.SqlClient;namespace ch33
    {
    /// <summary>
    /// Verify 的摘要说明。
    /// </summary>
    public partial class Verify : System.Web.UI.Page
    {        public DataSet ds;
    protected void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    AjaxPro.Utility.RegisterTypeForAjax(typeof(Verify));
                //GridView1.DataSource = dbds();
                //GridView1.DataBind(); 
    } [AjaxPro.AjaxMethod]
    public string GetReturnCode(string strUsername)
    {
    if (!IsValidUsername(strUsername))
    {
    return "1";
    }
    else if (!IsUsernameExist(strUsername))
    {
    return "2";
    }
    else
    {
    return "0";
    }
    }
    private bool IsUsernameExist(string strUsername)
    {
    bool bRet = false;
                ds = dbds();
                //switch (strUsername.ToLower())
                //{
                //    case "test":
                //    case "tom":
                //    case "jack":
                //    case "ajax":
                //    case "aspnet":
                //    case "shen":
                //        bRet = true;
                //        break;
                //}            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    if (strUsername.ToLower() == ds.Tables[0].Rows[i]["UserName"].ToString().ToLower())
                    {
                        bRet = true;
                        return bRet;
                    }
                } return bRet;
    } private bool IsValidUsername(string strUsername)
    {
    return (Regex.IsMatch(strUsername, @"^(\w{3,15})$"));
    }
    public DataSet dbds()
    {
    SqlConnection con=new SqlConnection();
    //这个地方你可以随便连接到一个数据库 con.ConnectionString="server=.;uid=sa;pwd=000000;database=HDAuto";
    SqlDataAdapter da=new SqlDataAdapter("select UserName from UserInfo",con);
    DataSet ds=new DataSet();
    da.Fill(ds);
    return ds;
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {     }
    #endregion
    }
    }
      

  17.   

    ch33.Verify.GetReturnCode(name, IsUsernameExist_callback);
    这句脚本在VS2005下会出错,说ch33没有被定义,这个是怎么回事?在VS2005下应该怎么用才对?
      

  18.   

    <%@ Page language="c#" Codebehind="Check_Username.aspx.cs" AutoEventWireup="false" Inherits="WellyeQuery.Check_Username" %>
    其中的ch33.Verify为Inherits的值,
    如:WellyeQuery.Check_Username.GetReturnCode(name, IsUsernameExist_callback);