Comu (05.07.2012), Festplatte (12.04.2015)
Thema: [PHP] Registrierungsscript
-
05.07.2012, 00:41 #1
[PHP] Registrierungsscript
Hallo!
Da Comu mir ja derzeit PHP/MySQL beibringt, wollte ich hier mal meine ersten Erfolge posten. Nach einem dreistündigen Lernpart, hab ich es tatsächlich geschafft, ein Registrierungssystem auf die Beine zu stellen.
Das ganze System schickt anschließend an die Email des registrierten Accounts eine Mail, die einen Bestätigungslink enthält, womit der Account quasi verifiziert wird.
Das System ist in drei Datein aufgeteilt:
-index.php
-register.php
-activation.php
index.php
PHP-Code:<html>
<head>
<title>
</title>
</head>
<body>
<form action = 'register.php' method = 'post'>
Name: </br><input type = 'text' name = 'user'></br>
Passwort: </br><input type = 'password' name = 'pass'></br>
Email: </br><input type = 'text' name = 'email'></br>
<input type = 'submit' value = 'Registrieren'>
</body>
</html>
PHP-Code:<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$host = 'host'; // Euren host
$user = 'user'; // Euren Usernamen
$password = 'password'; // Euer Passwort von eurem Account
$db = 'db'; // Die Datenbank, zu der ihr verbinden wollt
mysql_connect($host, $user, $password) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
$random = rand(10000, 99999);
$name = strip_tags($_POST['user']);
$password = md5(strip_tags($_POST['pass']));
$email = strip_tags($_POST['email']);
$query = mysql_query("INSERT INTO `Accounts` SET `name` = '".$name."', `password` = '".$password."', `email` = '".$email."', `randomkey` = '".$random."' ");
if($query)
{
echo "Herzlichen Glückwunsch, deine Registrierung war erfolgreich!";
echo "Zur Bestätigung deines Accounts wurde dir soeben an dich eine E-Mail versand.";
mail($email, "Deine Aktivierung", "Bitte aktiviere deinen Account. Dein Aktivierungslink: http://******.bplaced.net/activation.php?name=".$name."&key=".$random); // URL müsst ihr dementsprechend anpassen, wo ihr hostet und wie euer Pfad ist zur activation.php ist
}
else
{
echo mysql_error();
}
?>
</body>
</html>
PHP-Code:<?php
$name = strip_tags($_GET['name']);
$rkey = strip_tags($_GET['key']);
$host = 'host'; // Euren host
$user = 'user'; // Euren Usernamen
$password = 'password'; // Euer Passwort von eurem Account
$db = 'db'; // Die Datenbank, zu der ihr verbinden wollt
mysql_connect($host, $user, $password) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
$bestaetigung = mysql_query("UPDATE `Accounts` SET `activation` = '1' WHERE `name` = '".$name."' AND `randomkey` = '".$rkey."' ");
if($bestaetigung)
{
echo "Deine Bestaetigung war erfolgreich";
}
else
{
echo mysql_error();
}
?>
Noch zu sagen ist, dass eine Tabelle in eurer Datenbank angelegt werden muss. Mit 'name', 'password', 'email', 'randomkey' und 'activation'.
Hierbei nochmal ein riesen Danke an Comu, der mit so viel Nerv und Fleiß mir das beigebracht hat. Danke an dich, Fabi. <3
Das ganze System ist noch im Anfangslevel und wird wohl noch weiterentwickelt. Verbesserungsvorschläge sind gern gesehen! (:
Falls ihr Fragen zum Code habt, dann fragt nur, hab jetzt nichts auskommentiert und auch keine config.php verwendet, deshalb müssen die Daten in beide Datein eingetragen werden.
Schöne Nacht noch. (:
-
The Following 2 Users Say Thank You to aquastar For This Useful Post:
-
05.07.2012, 01:44 #2
- Registriert seit
- 21.02.2012
- Beiträge
- 44
Thanked 10 Times in 10 PostsAW: [PHP] Registrierungsscript
Darf ich dir einige Tipps geben?
Formular:
Arbeite mit HTML valide. Sprich, arbeite nach dem HTML-Schema.
Tags sind folgendermaßen aufgebaut:
PHP-Code:// richtig
<tag attribut="wert"></tag>
// Talsch
<tag attribut = 'Wert'></tag>
Wenn du eine Connection aufbaust, solltest du diese am besten wieder beenden, wenn du diese nicht benötigst (mysql_close()). Dies geschieht meist am ende des Scripts.
Auch wenn PHP mittlerweile zur endlaufzeit die Verbindung selbst schließt, ist es sinnvoll die Connection zu beenden. Sonst hast du nachher Probleme (Wenn beispielsweise ein Script endlos läuft), dass die verfügbaren MySQL-Connections schnell voll sind.
POST oder GET variablen nicht nur mit strip_tags bearbeiten, sondern auch mit mysql_real_escape_string.
MySQL-Statements
Ist meist von vielen der Fehler. Nutze wirklich nur die Daten, die du wirklich benötigst.
Dies fängt beim SELECT an:
PHP-Code:// Falsch
mysql_query("SELECT * FROM `accounts`");
// Richtig
mysql_query("SELECT `feld1`, `feld2` FROM `accounts`");
PHP-Code:// Falsch
mysql_query("UPDATE `accounts` SET `feld`='Wert' WHERE `id`='1'");
// Richtig
mysql_query("UPDATE `accounts` SET `feld`='Wert' WHERE `id`='1' LIMIT 1");
Geändert von Badboy12 (05.07.2012 um 01:48 Uhr)
-
The Following User Says Thank You to Badboy12 For This Useful Post:
rVs14 (05.07.2012)
-
12.04.2015, 09:45 #3
AW: [PHP] Registrierungsscript
Bin früher per Google auf dieses Thread gestoßen und hab nun ein paar Tipps u.a. für den Tippgeber:
- mysql api ist veraltet man sollte echt mysqli benutzen auch Ende 2012 war das schon so
- Ihr habt da Sql Injections drin, VP hat zwar strip_tags aber das ist nicht ausreichend, man sollte mysql_real_escape_string benutzen! Noch besser Platzhalter ("Prepared Statements", geht aber erst mit mysqli)
- Pws speichert man nie direkt, niemals! Immer einen Hash generieren und den speichern, sonst haben alle angemeldeten die Arschkarte wenn die Db gehackt wird
- Die ` bei den Table-Namen sind unnötig lasst sie weg! Für bessere Lesbarkeit Zeilenumbrüche nehmen
- Überall gebt ihr die Fehlermeldungen aus, das ist zum testen gut aber für eine öffentliche Seite nicht so grade mit den Sql Injections die können dann noch einfacher genutzt werden... lieber so machen:
PHP-Code:define('SHOWERRORS', true);
$mysql_connection = mysqli_connect($host,$user,$pw);
if(!$mysql_connection){
if(SHOWERRORS)
echo mysql_error();
die("Ein Fehler ist aufgetreten");
}
/e Und eigentlich ist das unvollständig, man kann sich registrieren und anmelden aber nicht einloggen? Da wäre eine kleine Einführung in Sessions toll gewesen, ich habs mir mit der Anleitung von Php erarbeitet: http://php.net/manual/de/book.session.phpGeändert von Festplatte (12.04.2015 um 09:58 Uhr)
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.