MySqL wil niet connecten.

Status
Niet open voor verdere reacties.

Ruben2812

Gebruiker
Lid geworden
4 feb 2011
Berichten
15
Hallo,

Ik ben een login systeem aan het maken in visual studio 2010. Ik heb een MySql database aangemaakt bij mijn hostingbedrijf en heb ingesteld dat remote connection is toegestaan.
Dit is mijn code:

Code:
 public bool tryLogin(string username, string password)
        {
            MySqlConnection con = new MySqlConnection("host=webhostnow.nl;user=GEBRUIKERSNAAM;password=WACHTWOORD;database=DATABASE;");
            MySqlCommand cmd = new MySqlCommand("SELECT * FROM login WHERE user_name = '" + username + "' AND user_pass = '" + password + "';");
            cmd.Connection = con;

            con.Open();

            MySqlDataReader reader = cmd.ExecuteReader();
            if (reader.Read() != false)
            {

                if (reader.IsDBNull(0) == true)
                {
                    cmd.Connection.Close();
                    reader.Dispose();
                    cmd.Dispose();
                    return false;
                }
                else
                {
                    cmd.Connection.Close();
                    reader.Dispose();
                    cmd.Dispose();
                    return true;
                }
            }
            else
            {
                return false;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (tryLogin(textBox1.Text, textBox2.Text) == true)
            {
                MessageBox.Show("U bent succesvol ingelogd");
                this.Hide();
                Form2 form2 = new Form2();
                form2.Show();
            }
            else
            {
                MessageBox.Show("Uw inloggegevens kloppen niet! Probeer het nog eens.");
            }
        }

Ik heb hier niet de echte gegevens gedaan. Maar als ik debug kan hij niet connecten. Toen heb ik een localhost mysql gehost en toen deed hij het wel. Ik denk zelf dat hij uitgaand niet ondersteund.

Wie weet?
 
Standaard is de poort 3306, misschien is hij anders ingesteld?

eigen firewall of router die iets blocked?
 
@Bloodshed Nee en nee,

Ik wil een login systeam maken. Ik wil kunnen beheren wie mijn applicatie gebruiken. MySql leek mij de enigste optie. andere sugesties?
 
Een andere opmerking, het systeem dat je in het programma zelf inlogt is erg gevaarlijk. Iedereen de code van het programma lezen en zo dus kijken wat de username en het wachtwoord is van je SQL tabel.

Hiernaast is ook de manier de je gebruikt erg makkelijk met SQL injection the hacken.

Hierom denk ik beter dat je met een php script in een website dit kan aanroepen. Waarna je met dit programma de username en wachtwoord post naar de website (met dat php script).
 
Misschien moet je ook specifiek een IP adres toevoegen die vanaf buitenaf toegang heeft. Zo heb ik het ooit moeten doen.
 
@wicherh Dus dan moeten ze inloggen via een PHP script op mij webserver waardoor ze dan pas mijn tool kunnen gaan gebruiken?
 
http://msdn.microsoft.com/en-us/magazine/cc163917.aspx

Hier staat een goede uitleg van hoe een goede veilige SQL acces moet in C#. Dit is echter wel ingewikkeld.
Dit is echter wel ingewikkeld.

Het bevat ook de 4 basis principles:
Never trust user input
Never use dynamic SQL
Never connect to a database using an admin-level account
Don't store secrets in plain text
Exceptions should divulge minimal information
 
Kan er niet uit opmaken wat fout gaat.
Het probleem is waarschijnlijk dat je in je MySQL database wel het als MD5 hash staat opgeslagen, maar dat je niet een MD5 hash verstuurt om te checken of het klopt.
 
probeer dit eens.
Bemij lukt dit 100%


In form:
Code:
        public Database Login;
        public Form1()
        {
            InitializeComponent();
            Login = new Database("127.0.0.1", "Login", "root", "");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            String lezenDatabase = "SELECT ID,password,accesslevel FROM accounts WHERE username=@username"; // Cheets for MySql
            MySqlCommand command = new MySqlCommand(lezenDatabase, Login.mysqlconnect); // Make connection
            command.Parameters.AddWithValue("@username", textBox1.Text);
            Login.mysqlconnect.Open(); // Open the connection to mysql database

            MySqlDataReader lezenGegevens = command.ExecuteReader();
            if (lezenGegevens.HasRows)   // read the rows of username
            {
                lezenGegevens.Read();
                if (textBox2.Text == lezenGegevens["password"].ToString())  // Check password of username
                {
                    int accesslvl = (int)lezenGegevens["accesslevel"];
                    if (accesslvl == 300)    //  if your accesslevel is 300
                    {
                        label3.ForeColor = Color.Green;
                        label3.Text = "User is logged in.";
                    }
                    else  // if you've another accesslevel
                    {
                        label3.ForeColor = Color.Red;
                        label3.Text = "You're Banned";
                    }
                }
                else  // if you type a wrong password in username. 
                {
                    label3.Text = "";
                    MessageBox.Show("Wrong password, please try again\nif you forgot your password contact admin.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            Login.mysqlconnect.Close();
        }

Database.cs
Code:
    public class Database
    {
        public MySqlConnection mysqlconnect;
        public Database(string MySql_Host, string MySql_Database, string MySql_ID, string MySql_Pw)
        {
            try
            {
                string connect = "Server=" + MySql_Host + ";Database=" + MySql_Database +
                                   ";Uid=" + MySql_ID + ";Pwd=" + MySql_Pw + ";";
                mysqlconnect = new MySqlConnection(connect);
            }
            catch (Exception e)
            {
                throw new Exception("Cannot connect to database");
            }
        }
    }



Mvg, Jim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan