如何让ASP.NET登录时区分大小写?
我的用户名不分大小写。大小写都可以成功登录。数据库用的是SQL Server 2000的。里面的内容都是区
分大小写的。直接打开数据库,或是用Gridview和自己写的代码在textbox里显示都是区分大小写。真不
明白为什么登录时却大小不分。
这是MyClass的代码,放在MyClass.cs里面。以后调用。
--------------------------------------
using System;
namespace WebApplication
{
/// <summary>
/// MyClass 的摘要说明。
/// </summary>
public class MyClass
{
public MyClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private static string
connString= "Server=localhost;uid=sa;pwd=;database=webdevelop ";
public static string ConnString
{
get
{
return connString;
}
}
}
}
--------------------------------------
这是登录按钮的代码。
--------------------------------------
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.Data.SqlClient;
namespace WebApplication
{
/// <summary>
/// Main 的摘要说明。
/// </summary>
public class Main : System.Web.UI.Page
{
protected System.Web.UI.WebControls.HyperLink HyperLinkSearch;
protected System.Web.UI.WebControls.HyperLink HyperLinkForum;
protected System.Web.UI.WebControls.HyperLink HyperLinkExplorer;
protected System.Web.UI.WebControls.TextBox TextBoxName;
protected System.Web.UI.WebControls.TextBox TextBoxPassword;
protected System.Web.UI.WebControls.Button ButtonEnter;
protected System.Web.UI.WebControls.Button ButtonLogin;
protected System.Web.UI.WebControls.TextBox TextBoxState;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
if(Session[ "userName "].ToString()!= " ")
{
this.TextBoxState.Text= "用户 "+Session
[ "userName "].ToString()+ "登录成功。 ";
SetEnable(true);
}
else
{
this.TextBoxState.Text= "如果你已经注册过,请登录,如
果尚未注册,请先注册! ";
SetEnable(false);
}
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.ButtonEnter.Click += new System.EventHandler
(this.ButtonEnter_Click);
this.ButtonLogin.Click += new System.EventHandler
(this.ButtonLogin_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void SetEnable(bool enable)
{
this.HyperLinkExplorer.Enabled=enable;
this.HyperLinkForum.Enabled=enable;
this.HyperLinkSearch.Enabled=enable;
}
private void ButtonEnter_Click(object sender, System.EventArgs e)
{
string name=this.TextBoxName.Text;
string pwd=this.TextBoxPassword.Text;
if(name.IndexOf( " ' ")> -1|| name.IndexOf( ' ')> -1|| name.IndexOf
( ' " ')> -1
|| pwd.IndexOf( " ' ")> -1 || pwd.IndexOf( ' ')> -1 ||
pwd.IndexOf( ' " ')> -1)
{
this.TextBoxState.Text= "用户名或密码包含有非法字符! ";
return;
}
SqlConnection conn = new SqlConnection(MyClass.ConnString);
string sqlstr= "select * from loginuser where (username= ' "+name+ " ')
and ( "
+ "userpwd= ' "+pwd+ " ') ";
SqlCommand command = new SqlCommand(sqlstr,conn);
conn.Open();
try
{
SqlDataReader dr=command.ExecuteReader();
if(dr.Read()==true)
{
SetEnable(true);
Session[ "userName "]=name;
this.TextBoxState.Text= "用户 "+name+ "登录成功。 ";
}
else
{
SetEnable(false);
Session[ "userName "]= " ";
this.TextBoxState.Text= "登录失败,无此用户或密码不正
确! ";
}
dr.Close();
}
catch(Exception err)
{
this.TextBoxState.Text= "系统错误: "+err.Message;
}
conn.Close();
}
private void ButtonLogin_Click(object sender, System.EventArgs e)
{
Response.Redirect( "login.aspx ");
}
}
}
--------------------------------------
这是直接使用刘瑞新的C#的书的代码。不知道这里有没有刘瑞新的Fans。电子教案和程序源代码可以在这
里免费下载。
http://www.cmpbook.com/article.asp?id=14502&pubnums=1-3
在读者评论里“下载源码.......”. 里面的习题文件夹有Webapplicatin文件夹。是一个论坛。
把代码改写成
--------------------------------------
string name=this.TextBoxName.Text.ToString();
string pwd=this.TextBoxPassword.Text.ToString();
--------------------------------------
也不行。烦死了。我的网站就差这点了。我一定要区分大小写。
我是第一次来CSDN. 请这里的高手帮忙。
谢谢了。@ _ @
[解决办法]
sql 中 是不区分大小写的.
[解决办法]
所谓sql中区分大小写,从数据库的排序规则就可以看出。
不区分大小写并不是说你输入的大写字母保存到数据库中后就变成小写。
[解决办法]
sql语句的问题...你除非在程序上做判断;
[解决办法]
SQL安装时可以选择大小写规则,默认是不区分大小写的,可以把密码用MD5加密储存,就区分大小写了。
[解决办法]
你可以先不区分大小写,如果数据库里有这个记录,然后把登录名从数据库里取出来与用户填写的比较是否相等,或者将数据库中登录名的字段改为char类型,char类型肯定是区分大小写的
[解决办法]
sql是可以区分大小写的,就是在create table的时候,在列的后面要加一句话,具体怎么写给忘了
但类似SQL_Latin1_General_CP850_CI_AS这么样的一个东西
[解决办法]
应该在入库的时候判断把 还没有用到过区分大小写的情况
[解决办法]
除非楼主先做了大小写更改.否则sql本身是区分大小写的.
[解决办法]
对呀,不用Sql进行判断。
把记录找到,读取到C#的变量中。C#是区分大小写的。
这样在C#里判断 就可以了。
[解决办法]
比如,你用 "select username,password from [tablename] where username= ' "TxtUserName.Text " ' "取得记录放到DataReader里。
string UserName=dr.getString(0);
string Password=dr.getString(1);
然后再比较UserName和TxtUserName.Text是不是一样,这样就可以区分大小写了。
密码一般是加密的,所以不存在大小写问题吧。
呵呵