Я создаю сайт с помощью asp.net. На данный момент у меня есть страница регистрации, которая сохраняет данные в таблицу базы данных.
Как мне проверить, есть ли имя пользователя и пароль в этой таблице, а затем разрешить им перейти на следующую страницу?
Вот мой код для регистрации;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["userinfo.ConnectionString"].ConnectionString);
conn.Open();
string insertQuery = "INSERT INTO [user] (UserName, FirstName, LastName, Email, Password, Country) VALUES (@uname, @fname, @lname, @email, @password, @country)";
SqlCommand comm = new SqlCommand(insertQuery, conn);
comm.Parameters.AddWithValue("@uname", usernametextbox.Text);
comm.Parameters.AddWithValue("@fname", fnametextbox.Text);
comm.Parameters.AddWithValue("@lname", lnametextbox.Text);
comm.Parameters.AddWithValue("@email", emailtextbox.Text);
comm.Parameters.AddWithValue("@country", DropDownListcountry.Text);
comm.Parameters.AddWithValue("@password", passwordtextbox.Text);
comm.ExecuteNonQuery();
conn.Close();
Я предполагаю, что мне нужно создать запрос SELECT, возможно, с оператором if?
2 ответа
Крис,
Вы получаете отрицательные голоса по этому вопросу, потому что вы спрашиваете что-то, что вы могли бы ОЧЕНЬ легко понять самостоятельно с помощью Google.
При этом да, вы правы в том, что вам нужно будет использовать оператор SELECT. Я не собираюсь давать вам точный синтаксис .NET или SQL, так как это лишит вас опыта обучения. Но выясните, как выполнить запрос SELECT COUNT. В основном вы хотите подсчитать количество уже существующих строк с указанным именем пользователя и паролем. Вместо ExecuteNonQuery вы должны использовать ExecuteScalar, который возвращает одно значение.
Затем в вашем коде .NET вы посмотрите на возвращаемое значение счетчика. Если это 0, продолжайте. Если больше 0, сделайте что-нибудь другое.
При всем при этом в .NET есть несколько встроенных инструментов, которые делают ВСЕ эту работу за вас. Найдите их и используйте!
В будущем постарайтесь проводить больше времени за собственными исследованиями, прежде чем приходить сюда и просить о помощи.
Удачи!
Если вы используете текстовые поля на странице входа для имени пользователя и пароля.
string connectionstring = WebConfigurationManager.ConnectionStrings["userinfo.ConnectionString"].ConnectionString;
string sqlstring;
sqlstring = "Select UserName,Password from user where UserName='" +
Texboxusername.Text + "' and Password ='" + Textboxpassword.Text + "'";
SqlConnection con = new SqlConnection(connectionstring);
SqlCommand command = new SqlCommand(sqlstring, con);
System.Data.SqlClient.SqlDataReader reader;
// open a connection with sqldatabase
con.Open();
reader = command.ExecuteReader();
if (reader.Read())//Reader.read() true if found in database
{
Response.Redirect("userHome.aspx");
}
con.close();
Второе решение использует аутентификацию с помощью формы. Добавьте логин из панели инструментов на страницу дизайна входа. Дважды щелкните по нему. Внутри него тот же код, но вместо Texboxusername.Text и Textboxpassword.Text используйте Login.Username и Login.Password.
if (reader.Read())
{ e.Authenticated = true;}
else{e.Authenticated=false;}
Наконец, в Web.config добавьте это где-нибудь <system.web> .. </system.web>;
<forms loginUrl="login.aspx" defaultUrl="userHome.aspx" timeout="60"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
После того, как аутентифицированный пользователь будет автоматически перенаправлен на defaultUrl, и люди смогут получить доступ только с loginUrl благодаря . И если у вас когда-нибудь возникнет ошибка о UnobtrusiveValidationMode. Добавьте это внутрь <configuration>... </configuration>;
<add key="ValidationSettings:UnobtrusiveValidationMode" value="none"/>
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.