2013-11-21 3 views
2

Mysql 쿼리를 사용하여 인증을 시도했지만 수동으로 예외를 추가하지 않으면 서버의 제한으로 인해 외부 연결이 허용되지 않지만 많은 경우 사용자.mysql 쿼리를 사용하지 않고 mysql 데이터베이스에서 얻은 순위로 사용자 인증

public partial class Login : Form 
{ 
    MySqlConnection connect = new MySqlConnection("Server=SERVER;Database=DB;Uid=USER;Pwd=PWD"); 
    public Login() 
    { 
     InitializeComponent(); 
    } 
    public string LabelText 
    { 
     get 
     { 
      return this.status.Text; 
     } 
     set 
     { 
      this.status.Text = value; 
     } 
    } 

    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
    { 
     ProcessStartInfo sInfo = new ProcessStartInfo("http://beatpadpc.com/member.php?action=register"); 
     Process.Start(sInfo); 
    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void textBox2_TextChanged(object sender, EventArgs e) 
    { 

    } 

    public static string MD5Hash(string text) 
    { 
     MD5 md5 = new MD5CryptoServiceProvider(); 

     //compute hash from the bytes of text 
     md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text)); 

     //get hash result after compute it 
     byte[] result = md5.Hash; 

     StringBuilder strBuilder = new StringBuilder(); 
     for (int i = 0; i < result.Length; i++) 
     { 
      //change it into 2 hexadecimal digits 
      //for each byte 
      strBuilder.Append(result[i].ToString("x2")); 
     } 

     return strBuilder.ToString(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     connect.Open(); 
     MySqlCommand cmd = new MySqlCommand("SELECT * FROM mybb_users WHERE username = " + textBox1.Text + " AND (password = " + MD5Hash(textBox2.Text) + " AND usergroup = \"3\" OR usergroup = \"4\" OR usergroup = \"6\" OR usergroup = \"8\")"); 
     MySqlDataReader read = cmd.ExecuteReader(); 
     if (read.Read()) 
     { 
      status.Text = "Connected"; 
      MessageBox.Show("Success!"); 
     } 
     else 
     { 
      status.Text = "Not Connected"; 
      MessageBox.Show("Error!"); 
     } 
    } 

} 

그래서이 : 여기

는 인증라는 라벨을 확인해야합니다 (사용자 이름 및 암호가 존재)에 성공했을 때 내가 "상태"텍스트가 연결 연결 여부를하거나 말, 처음 사용하는 것입니다 사용자를 인증하는 방법과 자격 증명이 정확하고 사용자가 사용자 그룹 3,4,6 또는 8에있는 경우 status.Text "Connected"또는 "Not Connected"를 만들지 만 카운트 서버의 제한 사항을 외부 MySQL 연결로 가져 가면?

미리 감사드립니다.

+2

, 오히려 서버 : 서버가 자신의 연결하고 전용 서버가 MySQL을 자체에 연결 그래서, 이것 좀 봐. 예를 들어, 로그인 세부 사항을 서버로 전송하면 서버는 로그인이 올바른지 여부를 리턴합니다. 이렇게하면 사람들이 프로그램을 리버스 엔지니어링하고 MySQL 데이터베이스 자격증 명에 액세스 할 수있을뿐만 아니라 모든 연결을 localhost에 보관할 수 없게됩니다. – Qwerty01

+0

질문은 다소 모호합니다. 어떤 시점에서 언급하는 그룹 3,4,6,8은 무엇입니까? MySQL 데이터베이스에 연결할 수도 있고 그렇지 않을 수도 있습니다. 어떤 종류의 제한 사항을 언급하고 있습니까? –

답변

4

서버에 웹 서비스를 만들고 사용자 이름과 인코딩 된 비밀번호로 기능을 호출하는 이유는 무엇입니까? 당신은 아마 응용 프로그램에서 쿼리를하고 싶지 않을 것이다

Web Service built in C# to retrieve data from mySQL database

+0

이전 코드를 계산하는 예제를 제공해 주시겠습니까? 고맙습니다. – Joscplan

+0

다음과 같이 할 수 있습니다. http://www.csharphelp.com/2006/02/create-and-deploy-a-webservice-using-c/ 웹 서비스가 완료되면 서버 컴퓨터에서 실행되고, 매개 변수를 받고 결과의 xml을 제공하면 클라이언트에서 쿼리를 다시 실행할 필요가 없습니다. –

관련 문제