Registrierungsformular - überprüfen, ob der Benutzername bereits existiert

Okay, danke für die Erklärung. :) Bedeutet das also, dass man zwar nen Passwort verschlüsseln kann, aber bei der Anmeldung nicht mehr aufrufbar ist, oder wie?

Oder ruft er dann bei der Anmeldung das verschlüsselte Passwort auf?

mfg harry
 
Zuletzt bearbeitet:
...Ein Passwort kann man nicht aufrufen, und da ist nichts verschlüsselt.

Angenommen, du verschlüsselst/hasht gar nichts.
Registrierung: Benutzer gibt PW ein, wird in DB gespeichert.
Login: Benutzer gibt PW ein, wird mit dem in der DB verglichen.

Mit Hash:
Registrierung: Benutzer gibt PW ein, der Hash davon wird in DB gespeichert.
Login: Benutzer gibt PW ein, Hash wird berechnet, dann mit dem in der DB verglichen.
 
Okay habs nun verstanden. Dankeschön. :)

Wie könnte denn so eine einfache Verschlüsselung aussehen? (von der salt- & round-Funktion abgesehen)

mfg harry
 
Wie ich schon oben geschrieben habe sieht ein konkrete Umsetzunge eines einfach sicheren Passwortvergleichs genau so aus wie ich sie für dich geschrieben habe.

Aber wie sheel schon geschrieben hat geht das auch als Einzeiler
PHP:
$password = hash('SHA512',$password);
hash()
 
Okay habs nun verstanden.
...
Wie könnte denn so eine einfache Verschlüsselung aussehen?
Das ist keine Verschlüsselung :rolleyes:

Skydevment hat ja gerade den Code für den eigentlichen Hash gezeigt.
Wenn du die Klasse mit wiederholtem Hashen und Salten nimmst musst du
a) eine Instanz von passwordAPI anlegen
b) davon die Methode crypt mit Passwort und Salt aufrufen
Einen Salt kannst du mit der Methode createASalt bekommen.
 
Wie ich schon oben geschrieben habe sieht ein konkrete Umsetzunge eines einfach sicheren Passwortvergleichs genau so aus wie ich sie für dich geschrieben habe.

Aber wie sheel schon geschrieben hat geht das auch als Einzeiler
PHP-Code:
Code:
$password = hash('SHA512',$password);
hash()

Okay dankeschön. Ich werds direkt mal ausprobieren. ;)

EDIT: Das verschlüsseln funkt. einwandfrei. Nur wie krieg ich das nun hin, dass er beim Einloggen das Passwort miteinander vergleicht?

Ich hab das ohne Verschlüsserung immer so gemacht:
PHP:
  $benutzer = $_COOKIE['Benutzer'];
  
  $abfrage = "SELECT * FROM city";
  //$abfrageban = "SELECT * FROM ban WHERE Benutzer = ".$benutzer;
  $data = mysql_query($abfrage);
  //$databan = mysql_query($abfrageban);

  $eingabeUSER = $_POST['user'];
  $eingabeKENN = $_POST['kenn'];
  //$banUSER = $_COOKIE['Benutzer'];
  //$banGRUND = $_COOKIE['Grund'];

  $korrekt = "0";
  //$ban = "0";
  $zahl = 1;
  //$grund = "";
  
  while($row = mysql_fetch_object($data)) {
    $user = $row->Benutzer;
    $kenn = $row->Kennwort;
    $geld = $row->Geld;
	
	if (strcmp($user,$eingabeUSER) == 0) {
		if (strcmp($kenn,$eingabeKENN) == 0) {
			$korrekt = "1";
			echo "<b>Benutzername und Kennwort okay!</b><br>";
			setcookie("loginname",$eingabeUSER,time()+2592000,"/city");
			setcookie("loginpass",$eingabeKENN,time()+2592000,"/city");
			setcookie("ID",$zahl,time()+2592000,"/city");
			echo "Du bist nun erfolgreich angemeldet!<br>";
			echo "<a href=\"http://pspcity.comlu.com/\"><= zurück</a>";
		}
	}
  $zahl = $zahl + 1;
  }

  if ($korrekt == "0") {
    echo "<b>Benutzername oder Passwort nicht korrekt!</b><br>";
    echo "Bitte überprüfe deine Anmeldedaten und versuche es erneut!<br>";
  }

Nur wie krieg ich es nun hin, dass mit dem hash hin?

EDIT 2:
Hab das jetzt mal so gemacht, aber funkt. nicht. Hab auch in der DB Kennwort auf unique gestellt. Aber funkt. nicht. :(

Hier ist der Code:
PHP:
//$benutzer = $_COOKIE['Benutzer'];
  $kennwort = $_COOKIE['Kennwort'];
  
  $abfrage = "SELECT * FROM city";
  $data = mysql_query($abfrage);
  $abfragekenn = "SELECT * FROM city WHERE Kennwort = ".$kennwort;
  //$abfrageban = "SELECT * FROM ban WHERE Benutzer = ".$benutzer;
  $datakenn = mysql_query($abfragekenn);
  //$databan = mysql_query($abfrageban);

  $eingabeUSER = $_POST['user'];
  $eingabeKENN = $_POST['kenn'];
  $password = hash('SHA512',$_POST['kenn']);
  //$banUSER = $_COOKIE['Benutzer'];
  //$banGRUND = $_COOKIE['Grund'];

  $korrekt = "0";
  //$ban = "0";
  $zahl = 1;
  //$grund = "";
  
  while($row = mysql_fetch_object($data)) {
	$user = $row->Benutzer;
    $kenn = $row->Kennwort;
    $geld = $row->Geld;
	
	if (strcmp($user,$eingabeUSER) == 0) {
		
		if ($password == $datakenn) {
			$korrekt = "1";
			echo "<b>Benutzername und Kennwort okay!</b><br>";
			setcookie("loginname",$eingabeUSER,time()+2592000,"/city");
			setcookie("loginpass",$eingabeKENN,time()+2592000,"/city");
			setcookie("ID",$zahl,time()+2592000,"/city");
			echo "Du bist nun erfolgreich angemeldet!<br>";
			echo "<a href=\"http://pspcity.comlu.com/\"><= zurück</a>";
		}
	}
  $zahl = $zahl + 1;
  }

  if ($korrekt == "0") {
    echo "<b>Benutzername oder Passwort nicht korrekt!</b><br>";
    echo "Bitte überprüfe deine Anmeldedaten und versuche es erneut!<br>";
  }

mfg harry
 
Zuletzt bearbeitet:
1) Das Passwort auf UNIQUE zustellen ist sehr ungünstig
2) Die Leserlichkeit deines Quellcodes ist grausam
3) musst nicht die Funcktion [phpf]strcmp[/phpf] verwenden um zwei Strings zu vergleichen dafür reicht ein einfaches ==
4) Eigenlich kann man einen Passwortvergleich in 5 Zeilen schreiben
PHP:
$user['name']        = $_POST['Name'];
$user['password']  = hash('SHA512',$_POST['Passwort']);
$dbPass    = mysql_fetch_object(mysql_query("Select Passwort From User Where Username = ''$user['name']"));
if($dbPass->Passwort == $user['password'])
{
 // Passwort korrekt
}        
else
{
 // Passwort nicht korrekt
}
 
1) Okay, danke wußte ich nicht.^^
2) Der Code stammt noch damals von nen Freund von mir. Habs übernommen, da er es nicht mehr haben wollte.
3) Hab ich beim zweiten Code auch gemacht (if ($password == $datakenn) {). Aber wußte nicht wie ich das umstrukturieren sollte. Denn wie gesagt, der Code stammt noch von nen guten Freund von mir. :)
4) Okay, ich werds mal ausprobieren. Kann das strcmp weg, also brauch ich das noch?

mfg harry
 
Das strcmp brauchst du nicht, ich würde dringen raten noch mal ein paar Tutorials dir anzuschaun.

P.S. Ich hoffe das wir dir weiter helfen konnten

Mit freundlichen Grüßen
Leon Bergmann
 
Zurück