Laden...

C# Sicheres verbinden zur Plesk MySQL Datenbank

Erstellt von blizzard vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.432 Views
B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 4 Jahren
C# Sicheres verbinden zur Plesk MySQL Datenbank

Hallo Forum 😃

Ich überlege mir einen Community-Client für unsere Roleplay Community zu entwickeln.
Da dieser C# Client also im Internet zum download angeboten wird möchte ich natürlich, dass die
mysql Verbindungsdaten sicher hinterlegt sind.

Funktionen

  • Login
  • Registrierung
  • Password Vergessen
  • Banned & VIP System
  • Shop System
  • News & Information
  • Spieler Daten ausgeben (die durch das spiel in die mysql Datenbank geschrieben wurden)

ich dachte mir das ich das villeicht mit php löse aber leider habe ich noch nicht so ganz verstanden
wie ich zb. (www.domain.tdl/clientzu.php?login das entsprechende echo auslesen kann.
beispiel: OK = Login | Error:1 = Banned | Error2: = Password falsch usw.

Ich habe gerade die Grund Ausbildung mit Video Kursen abgeschlossen und würde mich über Tipps und Ratschläge freuen. ich bin also noch ein anfänger seit bitte nicht so hart zu mir 😃

16.833 Beiträge seit 2008
vor 4 Jahren

Also prinzipiell ist das hier ein C# Forum; daher werden wir Dir mit PHP nicht wirklich helfen können.

Ansonsten ist es immer prinzipiell ne relativ ungeschickte Idee, wenn man ein einfaches Loginsystem sicher selbst implementieren will.
Dafür gibts für fast alle Sprachen passende Frameworks, die i.d.R. auch entsprechend sicher und flexibel sind.

Ansonsten hat Dein Beitrag keine Frage, auf die man antworten könnte.
Daher verweise ich Dich auf [Hinweis] Wie poste ich richtig?

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 4 Jahren

Hallo Abt

Danke erst mal für deine antwort.

also ich möchte über c# auf ein php script zugreifen in ca. so


public int clientzuphp (string action, string args)
{
WebClient request = new WebClient();
string url = "https://www.domain.tdl/clientzu.php";
string urlaction = "?action=" + action;
string urlargs = "&" + args;
string buildurl = url + urlaction + urlargs;
}

ich habe im php verschiedene rückgabe werte die auf der php seite ausgegeben werden.

Errors
falscher_paramter
username_zu_kurz = label1.text ="Dein benutzername hat zu wenig buchstaben"
password_zu_kurz = label1.text ="Dein Password ist zu kurz"
usergebannd = msgbox " du wurdest von der com ausgeschlossen"
usw.

aufgrund dieser werte soll das programm dann entsprechend reagieren

16.833 Beiträge seit 2008
vor 4 Jahren

Naja, also die Grundlagen von C# musst Dir schon selbst beibringen
[FAQ] Wie finde ich den Einstieg in C#?

Aber eine URL ruft man in C# mit dem HttpClient auf.
Beispiele dazu sind in der Doku des HttpClients; inkl. der Typisierung und Behandlung der Rückgabe.

WebClient ist seit vielen Jahren obsolete; sollte man nicht mehr verwenden.

B
blizzard Themenstarter:in
33 Beiträge seit 2020
vor 4 Jahren

Danke Abt

Mir ist die Lösung im Blitzgedanke gekommen. 😉
Die Verbindung zur mysql Datenbank wird in diesem Script über PHP gelöst.
Dank der Rückgabewerte aus PHP kann C# erkennen um was es sich handelt und wie das Programm zu reagieren hat.

Der login Funktioniert 😃


{
    public partial class Form1 : Form
    {

        public static string Username;
        public static string Password;

        public Form1()
        {
            InitializeComponent();
        }


        
        public int unbekannt(string action, string args)
        {
            WebClient requests = new WebClient();
            string url = "https://domain.de/unbekannt.php";
            string urlaction = "?action=" +action;
            string urlargs = "&" + args;
            string buildurl = url + urlaction + urlargs;

            string response = requests.DownloadString(buildurl);
            if(response == null)
            { return 0; }


            if(!response.StartsWith("OK"))
            {
                CheckError(response);
                return 0;
            }



            return 1;
        }

        public void RaiseError(string error)
        {
            MessageBox.Show(error, "Es wurde ein Fehler Festgestellt", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        public int CheckError(string error)
        {
            Dictionary<string, string> Errors = new Dictionary<string, string>();
            Errors.Add("Rückgabe1", "Rückgabe1");
            Errors.Add("Rückgabe2", "Falscher Aktivierungs Key");
            Errors.Add("Rückgabe3", "Der Benutzername ist zu kurz");
            Errors.Add("Rückgabe4", "Das Password ist zu kurz");
            Errors.Add("Rückgabe5", "Der Benutzername ist Vergeben");
            Errors.Add("Rückgabe6", "Falsches Password");
            Errors.Add("Rückgabe7", "Dein Benutzeraccount wurde Gebannd");
            Errors.Add("Rückgabe8", "Rückgabe8");
            Errors.Add("Rückgabe9", "Rückgabe9");

            if (!error.StartsWith("ERROR"))
            {
                RaiseError(error);
                return 0;
            }


            string message = " Ein Unbekannter Fehler";
            string[] array = error.Split(':');
            if(array.Length == 2 && Errors.ContainsKey(array[1]))
            {
                string key = array[1];
                message = Errors[key];
            }

            RaiseError(message);
            return 1;
        }

        private void tb_username_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                btn_login_Click(null, null);
        }

        private void btn_login_Click(object sender, EventArgs e)
        {
            if(unbekannt("accessAccount", "userName=" + tb_username.Text + "&password=" + tb_password.Text) == 1)
            {
                MessageBox.Show("Login Erfolgreich");
            }
        }

        private void tb_password_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                btn_login_Click(null, null);
        }
    }
}