关于用户注册用户名是否重复的验证?


 

如何连接数据库去验证呢??

求高手解答,小弟感激不尽。

22 个解决方案

#1


用ado.net

#2



把用户名传进去,作为where条件查一下,存在则重复

#3


ajax异步获取数据,查询用户数据  
<script type="text/javascript">  
  var xmlHttp;  
  function createXMLHttpRequest()  
  {  
  if(window.ActiveXObject)  
  {  
  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
  }  
  else if(window.XMLHttpRequest)  
  {  
  xmlHttp = new XMLHttpRequest();  
  }  
  }  
  function CheckUserName()  
  {  
  var us=document.getElementById("txtname").value;  
  if(us!="")  
  {  
  createXMLHttpRequest();  
  var url= "RegistValidate.ashx?username="+escape(document.getElementById("txtname").value);  
  xmlHttp.open("GET",url,true);  
  xmlHttp.onreadystatechange=ShowResult;  
  xmlHttp.send(null);  
  }  
  }  
  function ShowResult()  
  {  
  if(xmlHttp.readyState==4)  
  {  
  if(xmlHttp.status==200)  
  {  
  var s;  
  s=xmlHttp.responseText;  
  alert(s);  
  }  
  }  
  }  
</script>

#4


sql语句是:
select count(0) from [users] where [username]='要验证的用户名'

如果结果大于0, 说明数据库里有此记录.

#5


ajax试试

#6


用ajax去异步验证啊,如果查询到用户名,就证明存在,提示用户名已经存在。
或者不用ajax,提交的时候验证。但是后台都得连接数据库,查询用户名啊。

#7


customvalidator验证控件,设置SERVERVALIDATORFUNCTION在后台验证,if(page.valid)执行插入数据库操作,否则给出提示信息

#8


使用Ado.net,对数据库查询,判断是否存在
如果考虑用户体验,可以使用ajax方式,

#9


SqlConnection con = new SqlConnection("sql语句");
SqlCommand cmd = new SqlCommand("select count(*) from item where itemid='" + TextBox2.Text.ToString() + "'", con);
con.Open();
        int i = (int)cmd.ExecuteScalar();
        if (i > 0)      //存在记录
        {
        }
        else
        {
        }

#10



以下是Linq:
 /// <summary>
    /// 获取用户
    /// </summary>
    /// <param name="name"></param>
    /// <returns></returns>
 public Users GetUserByName(string name)
    {
        using (CompaneyDataDataContext mb = new CompaneyDataDataContext())
        {
            var q = from c in mb.Users
                    where c.User_Name == name
                    select c;
            if (q.Count() > 0)
                return q.First();
            else
                return null;
        }
    }

以下是调用判断:
 if (bu.GetUserByName(txtName.Text) == null)
        {
            if (bu.addUser (oneuser))
            {
                fuImage.SaveAs(Server.MapPath("./") + "/images/" + imageurl);

                Response.Write("<script>alert('注册成功');window.location.href='Default.aspx'</script>");
            }
            else
            {
                Response.Write("<script>alert('注册失败')</script>");
            }
        }
        else
        {
            Response.Write("<script>alert('该用户已经存在,请更换用户名,再次添加')</script>");
        }
    }

#11


谢谢了。有些太深奥,我看不懂啊,我是个菜鸟。

为了期末实训来的。= =

最好能用一般的进入数据库的方法给我说下,谢谢了、

#12


    private void checkName()

    {
        SqlConnection conn = new SqlConnection("server=.;database=northwind;uid=sa;pwd=111");
        SqlCommand cmd = new SqlCommand("select count(name) from user where name='abc'",conn);
        try
        {
            conn.Open();
            if (cmd.ExecuteScalar())
            {
                //发现有用户使用该昵称
            }
            else
            { 
                //没有用户使用,插入数据
            }
        }
        catch
        {

        }
        finally
        {
            conn.Close();
            conn.Dispose();
            conn = null;
        }
    }

#13


    private void checkName()
    {
        SqlConnection conn = new SqlConnection("server=.;database=northwind;uid=sa;pwd=111");
        SqlCommand cmd = new SqlCommand("select count(name) from user where name='abc'",conn);
        try
        {
            conn.Open();
            if (cmd.ExecuteScalar())
            {
                //发现有用户使用该昵称
            }
            else
            { 
                //没有用户使用,插入数据
            }
        }
        catch
        {

        }
        finally
        {
            conn.Close();
            conn.Dispose();
            conn = null;
        }
    }

#14


那个AJAX异步传输不错。 试试吧。 一般都用的是AJAX。

#15


Validate.aspx用户注册页面   只有前台代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>文本框失去焦点就验证数据是否合法</title>
    <script type="text/javascript">
            
        function Validate() 
        {
            var user=document.getElementById("UserName").value;
            
            xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
            xmlRequest.onreadystatechange = function() {
                if (4 == xmlRequest.readystate) {
                    if (200 == xmlRequest.status) {

                        var ps_Msg = xmlRequest.responseText;
                        
                        alert(ps_Msg);
                    }
                }
            }

            xmlRequest.open("get", "../Ajax/ValidateServer.aspx?UserName=" + user + "&v=" + Math.random(), true);
            xmlRequest.send(null); 
            //自己拷贝的时候注意  我这里是项目下建了个Ajax文件夹,下面有两个页面Validate.aspx和ValidateServer.aspx
            //如果没有文件夹的话  要去掉,直接是"../ValidateServer.aspx?UserName=" + user + "&v=" + Math.random()
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        用户:
        <input id="UserName" type="text"  onblur="Validate()"/>
    </div>
    <div>
        密码:
        <input id="PassWord" type="text" />
        
    </div>
    </form>
</body>
</html>




//ValidateServer.aspx只有后台代码  处理页面  可以用Web服务
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class Ajax_ValidateServer : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string UserName = string.Empty;

        if (Request.QueryString["UserName"] != null)
        {
            UserName = Request.QueryString["UserName"].ToString();
        }

        try
        {
            string strSql = "Select Count(*) from Users where UserName = '" + UserName + "'";
            //执行Sql语句  如果>0  则此用户已存在;否则用户可注册
            using (SqlConnection cn = new SqlConnection("server=localhost;Initial Catalog=Test;uid=sa;pwd=sa"))
            {
                try
                {


                    //执行Sql语句   这里只是测试一下
                    if (UserName == "zhang")
                    {
                        this.Response.Write("此用户已存在");
                    }
                    else
                    {
                        this.Response.Write("此账户可用");
                    }

                }
                catch
                {
                    this.Response.Write("SQL执行出错");
                }
            }

        }
        catch
        {
            this.Response.Write("错误");
        }
        finally
        {
            this.Response.End();
        }

    }
}

#16


两种方法,一种就是直接在你注册提交的时候交后台判断,用sql或者linq都可,select count(*)from table where id == ''或者from table where id == '' select *等;另一种就是ajax异步调用,直接传参去后台查询,返回个用户是否存在的结果,具体的楼上的都有

#17


楼上有牛人,都能解决了,帮你顶顶吧!

#18


用jquery中的ajax

#19


普通的select带where语句的查询时不够准确的。一位他是大小写不匹配的,我曾经遇到一种情况,比如我注册个帐号叫tianmao888sdo,然后我登陆时,输入TIanmao888SDO,这样,他依然可以判断通过,可是,当我再做其他功能的时候,比如页面间传值,这个时候,又是区分大小写的了,这样,名名是我自己的空间,我点了TIanmao888SDO连接却进不去,所以我一般都是把帐号GetScalar读出来,用string.compare("","",false)的方式再判断一下。

#20


楼上的牛人已经用AJAX帮你解决了哦。双钻那个。

#21


我还想弱弱的问句,= =

那个代码怎么用。

#22


AJAX 
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告