Brauche Hilfe bei einem regestrierungsformular

Eljey

Grünschnabel
Hi Leute,

bin noch unerfahren, deswegen mal ne Frage:
Ich hab ein login system, nach dem tutorial gemacht.
Dazu hab ich ein Regesrierunsformular erstellt:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="reg" method="post" action="anlegen.php">
  <p>Nick:
    <input name="name" type="text" id="name">
</p>
  <p>Pass:
    <input name="pwd" type="password" id="pwd">
</p>
  <p>Vorname:
    <input name="vname" type="text" id="vname">
</p>
  <p>Nachname:
    <input name="nname" type="text" id="nname">
</p>
  <p>
    <input type="submit" name="Submit" value="Senden">
    <input name="Back" type="reset" id="Back" value="Zur&uuml;cksetzen">
</p>
</form>
</body>
</html>

Dieses formular schickt die daten weiter an anlegen.php:

PHP:
<?php 
// Definition der Benutzer
$zahl= "1" 
$benutzer[1]["Nickname"] =$_POST[name];
$benutzer[1]["Kennwort"] =$_POST[pwd];
$benutzer[1]["Nachname"] =$_POST[nname];
$benutzer[1]["Vorname"] = $_POST[vname]; 
// Sie k?nnen an dieser Stelle beliebig viele Benutzer anlegen. 
// Achten Sie dabei nur auf die Fortf?hrung der Nummer. 

// Aufbau der Datenbankverbindung 
$connectionid  = mysql_connect ("localhost", "*****", "*****"); 
if (!mysql_select_db ("******", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

// Zuerst alle Datens?tze l?schen um keine Dopplungen zu bekommen. 
mysql_query ("DELETE FROM benutzerdaten"); 

// Daten eintragen 
while (list ($key, $value) = each ($benutzer)) 
{ 
  // SQL-Anweisung erstellen 
  $sql = "INSERT INTO ".
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ".
  "VALUES ('".$value["Nickname"]."', '".
                       md5 ($value["Kennwort"])."', '".
                       $value["Nachname"]."', '".
                       $value["Vorname"]."')"; 
  mysql_query ($sql); 

  if (mysql_affected_rows ($connectionid) > 0) 
  { 
    echo "Benutzer erfolgreich angelegt.<br>\n"; 
  } 
  else 
  { 
   echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
  } 
} 
?>

Immer wenn sich ein neuer benutzer regestriert über speichert er den vorherigen regestrierten benutzer, dass liegt wahrscheinlich an der 1 bei:
PHP:
$benutzer[1]["Nickname"] =$_POST[name];
$benutzer[1]["Kennwort"] =$_POST[pwd];
$benutzer[1]["Nachname"] =$_POST[nname];
$benutzer[1]["Vorname"] = $_POST[vname];

Hier kommt die Frage:

wie kann man dieses problem beheben, also das der neu regestrierte benutzer den alten überspeichert? Geht das mit Timestamp?

Danke im vorraus
Eljey
 
Zuletzt bearbeitet:
Hi,

gehe zu deiner Datenbanktabelle und lege vor die erste bereits enthaltene Spalte eine neue Spalte (bspw.) mit dem Namen id

Setze die Werte beim anlegen auf

a) auto_increment und
b) Primary Key Index

Dann gibt es kein Überschreiben der bereits eingetragenen Daten mehr.
 
Hab ich schon aber wenn ich bei
PHP:
$benutzer[1]
die 1 weglasse macht er 4 einträge, wenn ich die eins lasse überschreibt er den vorherigen, aber die spalte id wir weiter generiert
 
Eljey hat gesagt.:
Danke für die Antwort
Hab ich schon aber wenn ich bei
PHP:
$benutzer[1]
die 1 weglasse macht er 4 einträge, wenn ich die eins lasse überschreibt er den vorherigen, aber die spalte id wir weiter generiert.
Gibt es eine andere Art die daten durch mein formular in die Datenbank einzufügen?
 
Wenn du eine ID und diese auf Primary Key (id) und auto_increment hast, dann übergibst du einfach die per Post gesendeten Daten in ein query:

PHP:
<?php
if(isset($_POST['username']) AND $_POST['username'] != '') {
	// Hier könntest du noch klären, ob der Username keine Leerzeichen oder minds. 3 Zeichen beinhaltet
	// falls nicht zurück zur Anmeldung
	// ansonsten weise Übergabewert einer Var zu.
	$newuser = $_POST['username'];
}
else { 
	// hier eine Fehlermeldung einbauen
}

if(isset($_POST['passwort']) AND $_POST['passwort'] != '') {
	// hier kannst du zusätzlich prüfen, ob das Passwort eine Mindestanzahl 
	//von Zeichen hat ansonsten zurück zur Anmeldung
	$newpass = md5($_POST['passwort']);
}

if(isset($newpass) AND isset($newuser)) {
	mysql_query("INSERT INTO 
					tabelle (id, 
							username, 
							pass) 
				 VALUES ('', 
				 		'$newuser', 
				 		'$newpass')") or die (mysql_error());
	header("Location: wohin_soll_der_user_jetzt.php");
	exit();
}
?>

Das ganze mit Login nützt dir allerdings nichts, wenn du nach dem Login den User nicht erkennen kannst. Sprich - du musst hier ein Sessionmanagement einbinden. Sonst wird der User nach dem Login gar nicht erkannt und er fliegt wieder raus zur Anmeldung.
 
Zurück