我有一个身份验证界面,用户必须在其中输入登录名和密码才能进行连接。 将显示的界面取决于所连接的登录配置文件(用户或管理员)
用户表包含(用户,密码,个人资料,邮件)
这是我的代码
在authentification.cs中:
public Boolean profile_user (string log)
{
string value = "";
SqlCommand cmd = conn.CreateCommand ();
cmd.CommandText = "select profile from user where user = '" + log + "';";
SqlDataReader s = cmd.ExecuteReader ();
if (s.Read ())
{value = s ["profile"]. ToString (); }
if (value == "admin")
{return true; }
else {return false; }
}
在authentification.aspx.cs中
login = new profile_user (name.Text)
if (login == true)
{Response.Redirect ("admin.aspx"); }
else
{Response.Redirect ("user_c.aspx"); }
错误始终存在,它执行其他部分,即无论输入什么登录名,始终出现user_c窗口
完整的类(authentification.cs)是:
using System.Data.SqlClient;
using System;
using System.Data;
using System.Windows.Forms;
namespace my_pfe
{
SqlConnection conn = new database().connect_utilisateur();
// database is another class
public void class new_user(string nom,string pass, string mail , string profile)
{insert into instruction}
public Boolean search_user(string login)
{ select requete }
public Boolean profile_user (string log)
{
string value = "";
SqlCommand cmd = conn.CreateCommand ();
cmd.CommandText = "select profile from user where user = '" + log + "';";
SqlDataReader s = cmd.ExecuteReader ();
if (s.Read ())
{value = s ["profile"]. ToString (); }
if (value == "admin")
{return true; }
else {return false; }
}
我在值= s [“ profile”]。ToString();中设置了一个断点。 ,则value的值为“ admin”,但admin的空间很大(value和valeur的名称相同)
答案 0 :(得分:1)
编辑:您必须检查数据库中的值以确保它们不包含空格,如果不包含空格,则可以使用String.Trim()
方法删除字符串的所有空格。
尝试:
在authentification.cs中:
using System.Data.SqlClient;
using System;
using System.Data;
using System.Windows.Forms;
namespace MyPfe
{
public class NewUser
{
private SqlConnection conn = null;
public NewUser()
{
this.conn = new database().connect_utilisateur();
}
public void AddUser(string nom,string pass, string mail , string profile)
{
//Insert into
}
public bool SearchUser(string login)
{
//Select requete
}
public bool ProfileUser(string log)
{
string value = string.Empty;
var cmd = this.conn.CreateCommand();
cmd.CommandText = string.Format("select profile from user where user = '{0}'", log);
var s = cmd.ExecuteReader();
if (s.Read()) value = s["profile"].ToString().Trim();
return value == "admin";
}
}
}
在authentification.aspx.cs中:
var NewUser = new MyPfe.NewUser();
if(NewUser.ProfileUser(name.Text)) Response.Redirect ("admin.aspx");
else Response.Redirect ("user_c.aspx");
答案 1 :(得分:0)
我认为您不应该保留';'在查询中,当您从asp.net执行数据库调用时。因此,请尝试将其删除并检查是否正常。另外,为什么不放置断点并检查
会产生什么值s ["profile"]. ToString ()