注册 登录
编程论坛 ASP.NET技术论坛

[求助]如何验证用户名

pengson 发布于 2007-09-04 21:26, 1677 次点击
即席在asp.net中,我要设置用户注册的用户名一定要用中文,而且用户名是否与注册数据库中的重名。。。。

代码如何实现

多谢拉!

20 回复
#2
ruihua2007-09-05 09:28

逐个判断输入字符的ascii码,汉字的ascii是在一个确定的范围内的。

#3
bygg2007-09-05 15:14
先用正则表达式 [u4e00-u9fa5] 来限制只能输入中文.
再根据输入的用户名(如:天),支数据库中去查询一下用户名为"天"的数据是否存在....
#4
guoxhvip2007-09-05 17:14

正则表达式就可以实现

#5
bygg2007-09-05 17:48
他还要难是否与注册数据库中的重名..所以必需读一次数据库,,至少得获得数据库中所有用户名的信息
#6
zw3798688722007-09-05 18:02
你自己查资料,用正则表达试最简单
#7
梦灵儿2007-09-05 19:00
呵呵先用正则表达式写然后在数据库里查询一遍看是否有重名当前用户输入的值
#8
pengson2007-09-05 21:18
偶是初学者,不要把我 看得那么高!

我确实要检验用户是否相同,但我还要用户一定要输入中文,不过各位就这样说说,偶是做不出来的!

毕竟我才接触了半个学期的的.net,还不是学了,这个只是小学期的作业,郁闷了!!搞了难题给自己!
#9
刘小芳2007-09-06 16:15

string sql = String.Format("select username from users where username='{0}'", this.txt_dlm.Text.Trim());
SqlCommand cm = new SqlCommand(sql, mycon.myconn);
if (cm.ExecuteScalar() != null)
{
this.Label1.Text = "<script language='javascript'>alert('该登陆名已经被使用,请使用其它登陆名~!');</script>";

}

#10
bygg2007-09-06 17:00
放个RegularExpressionValidator1,将它的 ValidationExpression 属性值设成 [\u4E00-\u9FA5].这样就可以只让它输入中文了(不过好像可以输入空格,在后台控制一下吧)
再根据9楼的代码在数据库中判断一下是否存在
#11
pengson2007-09-07 19:22
this.txt_dlm.Text.Trim中的txt_dlm是那个控件呢?

mycon.myconn是数据库的名字么?
#12
bygg2007-09-08 15:58
txt_dlm 应该是TextBox.
mycon是SqlConnection实例化而来的
#13
jyoseyi2007-09-08 20:09
6楼说的对,百度下就能找到想要的正则表达试
#14
flb2007-09-08 22:14
判断用自定义控件也可以吧
#15
flb2007-09-08 23:03
回复:(刘小芳) string sql = String.Fo...
这个我怎么用着不行呢,请指教
#16
血阳2007-09-09 08:17

if(Page.IsValid )
{
SqlConnection1 = new SqlConnection(ConfigurationSettings.AppSettings["dsn"]);
SqlCommand1=new SqlCommand("sp_addAdminValidate",SqlConnection1);
SqlCommand1.CommandType=CommandType.StoredProcedure;
SqlCommand1.Parameters.Add("@username",SqlDbType.Char,40);
SqlCommand1.Parameters["@username"].Value =Username1.Text.Trim();
try
{
SqlConnection1.Open();
SqlDataReader1=SqlCommand1.ExecuteReader();
if(SqlDataReader1.Read()==true)
{
myLabel.Text="已有此管理员,请重新输入姓名!!" ;
SqlDataReader1.Close();
}
else
{
SqlDataReader1.Close();
SqlCommand1=new SqlCommand("sp_addAdmin",SqlConnection1);
SqlCommand1.CommandType=CommandType.StoredProcedure;
SqlCommand1.Parameters.Add("@username", SqlDbType.Char,40);
SqlCommand1.Parameters["@username"].Value =Username1.Text.Trim();
SqlCommand1.Parameters.Add("@password",SqlDbType.Char,40);
SqlCommand1.Parameters["@password"].Value = Password1.Text.Trim();
SqlCommand1.Parameters.Add("@userclass",SqlDbType.Char,20);
SqlCommand1.Parameters["@userclass"].Value = UserClass1.SelectedItem.Text.Trim();
SqlCommand1.Parameters.Add("@remark",SqlDbType.NChar,200);
SqlCommand1.Parameters["@remark"].Value = Remarks.Text.Trim();
try
{
int i=SqlCommand1.ExecuteNonQuery();
if(i>0)
{
myLabel.Text="添加管理员成功!";
}
}
catch (SqlException e1)
{
myLabel.Text ="数据库操作错误:"+e1.Message;
}
}
}
catch (SqlException e1)
{
myLabel.Text ="数据库操作错误:"+e1.Message;
}
finally
{
SqlDataReader1.Close();
SqlConnection1.Close();
}
}
}

}

其中的【dns】为数据库链接在web.config中
sp_addAdminValidate为存储过程ALTER PROCEDURE sp_addAdminValidate @username char(100)AS select * from db_Admin where username=@username
Username1.Text为输入的用户名

#17
pengson2007-09-09 19:04
回复:(刘小芳) string sql = String.Fo...这个我怎么用着不行呢,请指教
以下是引用flb在2007-9-8 23:03:25的发言:
这个我怎么用着不行呢,请指教
我是先string sql

再引用sql = String.Fo
#18
beblue2007-09-10 11:34
bygg真是热心,功夫又好
#19
pengson2007-09-12 15:34
回复:(pengson)[求助]如何验证用户名

有问题天天问:
在asp.net中我用gridview拉个数据绑定显示内容,但在提交页面不刷新内容,反而要关闭窗口,再次调试才显示,觉得很麻烦,又不适用,想请教下如何解决??

#20
bygg2007-09-12 20:29
你的提交页面做的什么事情??为什么要关闭页面?
如果你的绑定数据的代码不是放在Page_Load()里面的.就在提交时再调用一次.如果是,就不要把它们放在!IsPostBack下面
#21
pengson2007-09-12 22:26

行了。。再加个Respone.redirect("页面")就可以了。。。。呵呵

谢谢!!

发现问题继续问。。

1