Я создаю сайт с помощью 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?

-3
Kris Pillay 3 Дек 2014 в 18:49
Покажите свои усилия, в чем проблема? Опубликуйте код!
 – 
mybirthname
3 Дек 2014 в 18:58
2
Вы бы запросили базу данных... или Введение к членству
 – 
Alex K.
3 Дек 2014 в 18:58
Это дубликат, пожалуйста, проверьте ссылку stackoverflow.com/questions/17871307/…
 – 
prasy
3 Дек 2014 в 18:58
1
Примечание: вам следует обернуть SqlConnection в оператор using.
 – 
mason
3 Дек 2014 в 19:05
2
Вы не указали причину воссоздания чего-то, что Microsoft уже создала (по крайней мере, 3 раза). Вместо этого я бы рекомендовал прочитать руководства для выбранной вами платформы: WebForms, MVC или Веб-страницы. Кроме того, вы буквально никогда не должны хранить пароль в виде обычного текста.
 – 
Erik Philips
3 Дек 2014 в 19:07

2 ответа

Крис,

Вы получаете отрицательные голоса по этому вопросу, потому что вы спрашиваете что-то, что вы могли бы ОЧЕНЬ легко понять самостоятельно с помощью Google.

При этом да, вы правы в том, что вам нужно будет использовать оператор SELECT. Я не собираюсь давать вам точный синтаксис .NET или SQL, так как это лишит вас опыта обучения. Но выясните, как выполнить запрос SELECT COUNT. В основном вы хотите подсчитать количество уже существующих строк с указанным именем пользователя и паролем. Вместо ExecuteNonQuery вы должны использовать ExecuteScalar, который возвращает одно значение.

Затем в вашем коде .NET вы посмотрите на возвращаемое значение счетчика. Если это 0, продолжайте. Если больше 0, сделайте что-нибудь другое.

При всем при этом в .NET есть несколько встроенных инструментов, которые делают ВСЕ эту работу за вас. Найдите их и используйте!

В будущем постарайтесь проводить больше времени за собственными исследованиями, прежде чем приходить сюда и просить о помощи.

Удачи!

0
Casey Crookston 3 Дек 2014 в 19:19
:-) Ну, я вижу, кто-то уже дал вам точный синтаксис вместе с названием встроенных инструментов .NET (Членство ASP). Очень жаль. Самостоятельное обучение было бы для вас большим подспорьем.
 – 
Casey Crookston
3 Дек 2014 в 19:21

Если вы используете текстовые поля на странице входа для имени пользователя и пароля.

      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"/>
0
YourSolutionPartner 7 Дек 2014 в 01:40
Что ж, я согласен с Кейси. Очевидно, вы не хотите заставлять себя учиться, но хотите видеть результат. Но я люблю давать прямые решения, потому что я еще маленький и ленивый :p
 – 
YourSolutionPartner
7 Дек 2014 в 02:13