PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C# - Login (PHP, MySQL)


TrackerPolizei
15.03.2009, 20:56
Hallo und Herzlich Willkommen zur Hobbythek,

heute zeige ich euch, wie ihr mit C#
Ein Loginsystem + eine registration mit einer MySQL-Datenbank
zaubert.

Was benötigen wir?:
- Einen Webspace + MySQL-Datenbank
Ich empfehle funpic (http://funpic.de/), ohost (http://ohost.de/).
- Erfahrungen mit dem phpMyAdmin, und wie man
in funpic oder ohost oder auf eurem Hoster
auf ihn gelangt.

Schritt^1:
- MySQL-Datenbank erstellen, namen merken in unserem Fall
"testdatenbank".
- MySQL-Nutzer erstellen, namen merken in userem Fall
"testnutzer".
- MySQL-Password erstellen, pw merken in unserem Fall
"testpasswort".

Schritt^2:
Nun legt ihr in eurer Datenbank eine neue Tabelle an.
Dazu klicken wir im phpMyadmin links in der Liste auf unsere blaue Datenbank auf den Datenbanknamen, der ist blau hinterlegt.

Diese Tabelle nennt ihr "users" oder wie ihr wollt,
und gebt die Felderanzahl 5 ein.
Felder für "id", "username", "password", "email", "ip".
Natürlich könnt ihr noch weitere Felder ergänzen.

Schritt^3:
Ihr seid auf der nächsten Seite,
nun habe ich ein Bild für euch, wie ihr es einstellen müsst.

2740

Falls das Bild nicht angezeigt wird,
gibt es hier eine Beschreibung was ich eingegeben habe.

Feld "id": Typ[INT], Länge/Set[8], Attribute[UNSIGNED], Extra[auto_increment].
Feld "username": Typ[TEXT], Länge/Set[20].
Feld "password": Typ[TEXT], Länge/Set[20].
Feld "email": Typ[TEXT], Länge/Set[20].
Feld "ip": TYP[VARCHAR], Länge/Set[30].

Tabellenformat: MYISAM.

Schritt^5:
Nun erstellen wir eine php-Datei wir nennen sie, sodass es sich professioneller anhört

"config.inc.php" oder "config.php" ich habe mich jedoch für
"config.inc.php" entschieden.

Inhalt der config.inc.php

<?php

// Database-Script by TP

$database_host = "localhost"; // Host der Datenbank
$database_name = "testdatenbank"; // Name deiner Datenbank
$database_user = "testnutzer"; // Name des Nutzers der Datenbank
$database_password = "testpasswort"; // Passwort des nutzers

// Wir haben nun eine Konfigurationsdatei erstellt, die alle Daten die wir für unseren MySQL-Login brauchen.

?>Schritt^6:
Wir erstellen nun die register.html und die register_success.php.
register.html ist das Formular mit dem man sich registrieren kann,
register_success.php wird aufgerufen, wenn die Registration abgeschlossen ist.

Inhalt der register.html:

<!-- Register.html by TP -->
<!-- Hochgradig invalide, kein doctype usw, aber wayne -->

<html>
<head>
<title>Registrierung - Testprogramm</title>
</head>
<body>
<form action="register_success.php" method="post" name="register_form">
Nutzername:&nbsp;<input type="text" name="username" value="Dein Benutzername.." /><br />
Passwort:&nbsp;<input type="password" name="password" /><br />
E-Mail:&nbsp;<input type="text" name="email" /><br />
<input type="submit" name="submit" value="Registrieren" />
</form>
<!-- Eindeutige Namen der Felder sind das A und O -->
</body>
</html>Inhalt der register_success.php:

<?php
include_once("config.inc.php"); // includet die config.inc.php

mysql_connect($database_host, $database_user, $database_password); // connectet zur mysql-db
mysql_select_db($database_name); // wählt die datenbank aus.

$username = $_POST['username']; // Holt unseren geposteten username
$password = md5($_POST['password']); // Holt das password und jagt es in einen md5.
$email = $_POST['email']; // holt die email
$ip = $_SERVER['REMOTE_ADDR']; // erstellt variable ip und weist ihr den wert der ip von dir zu.

$insert_query = "INSERT INTO users (username, password, email, ip) VALUES ('$username', '$password', '$email', '$ip')"; // erstellt eine neue variable inder unsere mysql-query gespeichert ist ( die mysql-query füllt die datenbank mit den relevanten daten. Die id generiert sich automatisch, erinnerst du dich? auto_increment. )
mysql_query($insert_query) or die(mysql_error()); // führt die query auf den mysql-server aus.

echo "Herzlichen Glückwunsch du bist registriert!";

?>
Schritt^7:
Wir brauchen eine login.html und eine login.php
die login.html wieder das Formular wo die Daten gesendet werden
die .php-Datei prüft natürlich wieder alles.

Inhalt der login.html:

<!-- loginscript by TP -->
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login.php" method="post" name="login_form">
Username: <input type="text" name="username" /><br />
Passwort: <input type="password" name="password" /><br />
</form>
</body>
</html>Inhalt der login.php:

<?php
include_once("config.inc.php"); // includet konfigurationsdatei
mysql_connect($database_host, $database_user, $database_password); // verbindet sich zur datenbank
mysql_select_db($database_name); // wählt datenbank aus
$username = $_POST['username']; // postet nutzernamen
$password = md5($_POST['password']); // postet passwort und md5t dann.

$get_password = "SELECT password FROM users WHERE username = '$username'"; // unser query
$q = mysql_query($get_password);
$rw = mysql_fetch_object($q);
$pw_from_db = $rw->password; // unser passwort aus der datenbank

if($password == $pw_from_db) // if.
{
echo "gut, erfolgreich eingeloggt";
}
else
{
echo "verweigert du nap k0rb";
}

?>Schritt^8:
Wir verwenden auf keinen Fall GET für den Login, sondern POST, damit nicht jedes Berufskiddie einen bruteforce schreibt der einfach nur WebClient.DownloadString verwendet, wir wollen's dann schon etwas komplizierter machen (NameValueCollection), jetzt kommt der Teil, wo C# im Spiel ist.

Natürlich ebenfalls kommentiert.

private void _login(string accstr, string pwdstr) // erstellt private methode
{
System.Collections.Specialized NameValueCollection _nv = new System.Collections.Specialized NameValueCollection(); // erstellt neue namevaluecollection

_nv.Add("username", accstr); // fügt ihr mit methode add daten hinzu.
_nv.Add("password", pwdstr);

byte[] b_arr = new System.Net.WebClient().UploadValues("deinserver.tld/login.php", "POST", _nv); // lädt daten auf die login.pgp mit method post hoch.
string encstr = Encoding.ASCII.GetString(b_arr); // enkodiert die daten aus dem byte-array.

if(encstr.Contains("erfolgreich")) // prüft ob erfolgreich.
{
MessageBox.Show("Zugriff gewährt!");
}
else
{
MessageBox.Show("Zugriff verweigert!");
}
}Fertig!

Ihr könnt euch nun in der register.html registrieren und mit login.html einloggen.

Dieses Tutorial wurde von mir eigenhändig geschrieben kein Source wurde geklaut und verändert, ich bitte meine Arbeit zu berücksichtigen und konstruktive Kritik zu äußern

TrackerPolizei

Solstice
15.03.2009, 21:53
verzeih mir meine hochgradige kurzsichtigkeit...
aber ich seh hier kein fitzelchen C++

Cerberus
15.03.2009, 23:19
Schau mal Schritt 8

Solstice
15.03.2009, 23:54
Hmm... sieht für mich wie n unorthodoxes C++/PHP gemisch aus??
:unsure:

TrackerPolizei
16.03.2009, 06:20
also wenn du das nicht siehst was hier C++ ist dann schau mal genauer hin ...
ohne dieses C++ würde alles unnütz hier sein ... und wer C++ kennt und versteht weiss was ich damit meine nicht war Cerb :biglaugh:

Dark-Destroyer
16.03.2009, 07:55
wo füge ich denn den c++ code ein??



--======================================--
--== Beitrag erstellt: 08:55 ==--
--== automatische Beitragszusammenführung ==--
--======================================--


Dark-Destroyer schrieb nach 6 Minuten und 7 Sekunden:

PS wenn ich es für meine zwecke verwenden würde kann ich sowas entfernen ??


// Database-Script by TP
Denn ich mag sowas nicht gerne in meinen code (also von wenn das ist usw.) aber wenn du drauf bestehst das man das behält mache ich es natürlich auch

Cerberus
16.03.2009, 07:56
ich denke mal, das dies keine größere Hürde darstellt ...
aber entscheiden muß er das selber

Dark-Destroyer
16.03.2009, 08:25
das denke ich auch mal, denn man sieht ja davon nichts udn das selber kann man das auch schnell machen, aber ich habe wenig lust/zeit dafür, denn habe noch immer den scheiß umzug :-(

TrackerPolizei
16.03.2009, 08:34
na klar kannst es raus machen .... ist ein support board hier und da hat copyright nichts zu melden ^^

den C++ code musst halt in deine datei rein machen die du sichern willst das kein bruteforce kommt

MPL
16.03.2009, 10:39
son gemisch isn müll sry :D ich würde das ganze doch lieber per mono machen... dafür is ja eig mod_mono und c# is mist :D man kann den code "zurück compilieren" ich hatte dammals was ähnliches und vor allem größeres für meinen ex tracker ein komplettes user frontend für user in c# für torrent download/torrent suche/torrent browse/pm system und andere kleinigkeiten aber joa... aufgegeben :D kamm net so gut an und war nur arbeit ^^

goterneme
16.03.2009, 19:33
umständlich und nicht notwendig php bietet die ganze platte an funktionen (siehe php.net)

bzw. echtes c# ist dat nicht wirklich...