2017-02-19 5 views
0

Я создал форму, которая имеет аутентификацию по паролю через базу данных. Однако мне не нужна функция входа в систему, я просто хочу проверить доступ к другим формам с помощью нажатия кнопки в основной форме. Итак, как я могу вызвать форму пароля для аутентификации доступа к другим формам при нажатии кнопки?Как использовать форму пароля для других форм при нажатии кнопки в основной форме?

форма

Пароль:

public partial class GetPass : Form 
{ 
    SqlConnection con = new SqlConnection(@"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=BooyaaBrowser;Integrated Security=True"); 

    private TextBox PasstextBox; 
    private Button btn_confirm; 
    private Label EnterPass; 

    public GetPass() 
    { 
     InitializeComponent(); 
    } 

    private void btn_confirm_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      SqlDataAdapter sdf = new SqlDataAdapter ("select count (*)from password where password = '" + PasstextBox.Text + "'",con); 
      DataTable dt = new DataTable(); 
      sdf.Fill(dt); 
      if (dt.Rows[0][0].ToString() == "1") 
      { 
       MessageBox.Show("Password correct"); 
       this.Hide(); 
      } 
      else 
      { 
       MessageBox.Show("Booyaa Says Wrong Password", "Wrong Password", MessageBoxButtons.OK, MessageBoxIcon.Hand); 
      } 
     } 
     catch (Exception ex) 
     { 
MessageBox.Show(ex.Message, "Error Messaage "); 
      } 
     } 

Один вид кнопки мыши:

private void Blocklist_Click(object sender, EventArgs e) 
{ 
    Blocklist frm1 = new Blocklist(); 
    frm1.Show(); 
} 
+1

никогда не хранить пароли в виде обычного текста. и вы запрашиваете атаки на sql-инъекции! –

+0

@ DanielA.White пароль должен просто остановить детей максимум 10/11-летних, так как это детский браузер, поэтому пароли останавливают доступ к родительским инструментам. Поэтому никаких конфиденциальных данных или каких-либо угроз от таких вещей. –

+1

Никогда не слишком устал, чтобы увидеть эти удивительные эмпирические уловки. –

ответ

2

Для избежания путаницы я использовать MainForm и PopupForm и в файле Program.cs сделать MainForm нагрузки во-первых.

private void MainForm_Load(object sender, EventArgs e) 
    { 
     PopupForm popup = new PopupForm(); 
     popup.FormClosing += (o, i) => { 
      if (!popup.passwordFound) 
       this.Close(); 
     }; 
     popup.ShowDialog(); 
    } 

и в всплывающей форме, которая имеет PasstextBox и btnCheckPassword

public bool passwordFound = false; 
public void btnCheckPassword_Click(object sender, EventArgs e) 
{ 

    // your sql actions: 
    try 
    { 
     SqlDataAdapter sdf = new SqlDataAdapter ("select count (*)from password where password = '" + PasstextBox.Text + "'",con); 
     DataTable dt = new DataTable(); 
     sdf.Fill(dt); 
     if (dt.Rows[0][0].ToString() == "1") 
     { 
      MessageBox.Show("Password correct"); 
      this.Hide(); 
      passwordFound = true; 
      // this.Close() you can also. 
     } 
     else 
     { 
      MessageBox.Show("Booyaa Says Wrong Password", "Wrong Password", MessageBoxButtons.OK, MessageBoxIcon.Hand); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message, "Error Messaage "); 
    } 
} 
+0

Я получаю сообщение об ошибке в разделе «.Text», поскольку объект не содержит определения. –

+0

Вы имеете в виду 'PasstextBox.Text'? –

+0

да, хотя я использовал публичный объект PasstextBox {get; частный набор; } –

Смежные вопросы