[code] Passwörter mit md5 verschlüsselt speichern und abfragenSie befinden sich: Home > Webmaster News
Dies ist eine Ergänzung zum Passwort-Tutorial
Unsere Usertabelle hat folgenden Aufbau:
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL auto_increment,
`username` varchar(12) NOT NULL default '',
`passwort` varchar(32) NOT NULL default '',
`name` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Wenn ein neuer User sich anmeldet, so soll er selbst einen Usernamen und ein Passwort vorgeben. Wir müssen dann zuerst prüfen, ob der Username schon vorhanden ist und die Eingabe ggf. abweisen:
<?php
$sql = "SELECT
count(*) AS COUNT
FROM
user
WHERE
username = '" . mysql_real_escape_string(trim($_POST['username'])) . "'";
$erg = mysql_query($erg) or die (mysql_error());
$row = mysql_fetch_assoc($erg);
if($row['count'] > 0) {
echo 'Username schon gespeichert';
} else {
$sql = "INSERT INTO
user
SET
username ='". mysql_real_escape_string(trim($_POST['username'])) . "'
passwort = '" . md5($_POST['passwort']) . "'
name = '" . mysql_real_escape_string(trim($_POST['name'])) . "'";
mysql_query($erg) or die (mysql_error());
echo 'Ihre Daten sind gespeichert. Sie können sich nun einloggen.';
?>
Beim Einloggen gibt der Anmelder nun seinen usernamen und sein passwort in ein Formular ein. Wir müssen nun nach 'username' und md5 ('passwort') suchen:
<?php
$sql = "SELECT
name
FROM
user
WHERE
username = '" . mysql_real_escape_string(trim($_POST['username'])) . "'
AND
passwort = '" . md5($_POST['passwort']) . "'";
?>
Achten Sie darauf, dass das Passwortfeld in der Datenbank 32 Zeichen lang ist. Falls es kürzer definiert wurde, wird ein Teil beim Speichern abgeschnitten und der Vergleich bei der Anmeldung scheitert.
Ihre Anwendung sollte eine Funktion haben, mit der ein User sich helfen kann, wenn er sein passwort vergessen hat. Da das vergessene Passwort aber verschlüsselt gespeichert ist, muss das Script ein neues Passwort erzeugen, dies im Klartext an den User mailen, und den zugehörigen md5-hash speichern.
Ein neues 6-stelliges Passwort können Sie z.B. so erzeugen lassen:
<?php
$passwort = md5 (uniqid (rand()));
$passwort = substr($passwort,0,6);
?>
(Autor: Wolfgang), Eingetragen am 27.08.2008
Schreib ein Kommentar
|