Auto_increment Registrierungsformular

djbergo

Erfahrenes Mitglied
Hallo Zusammen,

Erstmal nen Frohes Neues an euch ;)

Ich habe folgendes Problem mit meinem Loginscript, welches ich aus einem Tutorial auf dieser Seite erstellt habe.

Ich habe mir das Login Script so umgebaut, dass sich jeder User selbst Registrieren kann (könnte)

Leider gibt es ein Problem mit der ID. Ich habe keine Ahnung, wie ich es anstellen soll, die ID automatisch weiterführend zu bauen. Ebenso kann man sich immer wieder mit ein und dem Selben Nicknamen (Pseudonym) registrieren.

Kann mir da vieleicht jemand helfen?

Hier einmal der Code:

PHP:
<?
srand(microtime()*1000000);
  $i = rand(1,100);
$time = time();
$user200 = $_REQUEST['user']; // Hier bitte den Wert aus dem Formular zuweisen.
$sql = "SELECT * FROM benutzerdaten WHERE username LIKE '".$user200."'";
$rs = mysql_query ($sql);

if(isset($_POST['submit'])) {
        if(!eregi("[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})",$_POST['email'])) $error['email'] = "Keine gültige E-Mail Adresse eingegeben!<br>";
		if( $_POST['passwort'] != $_POST['passwort2']){  $error['passwort3'] = 'Die Passwörter stimmen nicht überein!<br>';}  
		if( $_POST['user'] == ""){  $error['user1'] = 'Kein Benutzernamen eingetragen!<br>';} 
		if( $_POST['passwort'] == ""){  $error['passwort'] = 'Kein Passwort eingetragen!<br>';} 
		if( $_POST['passwort2'] == ""){  $error['passwort'] = 'Kein Passwort eingetragen!<br>';} 
		if ($rs and mysql_num_rows ($rs) > 0){$error['benutzer'] = 'Der von Ihnen gewählte Benutzername existiert bereits!<br>';}	
		
} if(!$error && $_POST['submit']) {

// Definition der Benutzer  
$benutzer[$GLOBALS['i']]["Nickname"] = $_POST['user'];  
$benutzer[$GLOBALS['i']]["Kennwort"] = $_POST['passwort'];  
$benutzer[$GLOBALS['i']]["Nachname"] = $_POST['nachname'];  
$benutzer[$GLOBALS['i']]["Vorname"] = $_POST['vorname'];  
$benutzer[$GLOBALS['i']]["Vorname"] = $_POST['vorname'];  
$benutzer[$GLOBALS['i']]["email"] = $_POST['email'];

// Sie können an dieser Stelle beliebig viele Benutzer anlegen.  
// Achten Sie dabei nur auf die Fortführung der Nummer.  

// Aufbau der Datenbankverbindung  
if (!mysql_select_db ($db_name, $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, email) ". 
  "VALUES ('".$value["Nickname"]."', '". 
                       md5 ($value["Kennwort"])."', '". 
                       $value["Nachname"]."', '". 
                       $value["Vorname"]."', '".  
					   $value["email"]."')";  
  mysql_query ($sql);  

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

}
else
{

?> 

<?php echo $error['user1'];?>
<?php echo $error['email'];?>
<?php echo $error['passwort3'];?>
<?php echo $error['passwort'];?>


<form method="post" action="index.php?id=login/registrieren.php">
  <table border="0">
    <tr>
      <td>Registrierung</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Pflichtfelder</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Benutzername:</td>
      <td><input name="user" type="text" id="user" value="<?=$_POST['user']?>" maxlength="40"></td>
    </tr>
    <tr>
      <td>E-Mail Adresse: </td>
      <td><input name="email" type="text" id="email" value="<?=$_POST['email']?>" maxlength="40"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Passwort:</td>
      <td><input name="passwort" type="password" id="passwort" value="" maxlength="40"></td>
    </tr>
    <tr>
      <td>Passwort wiederholen: </td>
      <td><input name="passwort2" type="password" id="passwort2" value="" maxlength="40"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Optional</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Vorname:</td>
      <td><input name="vorname" type="text" id="vorname" value="<?=$_POST['vorname']?>" maxlength="40"></td>
    </tr>
    <tr>
      <td>Nachname:</td>
      <td><input name="nachname" type="text" id="nachname" value="<?=$_POST['nachname']?>" maxlength="40"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td><input name="submit" type="submit" id="submit" value="Senden"></td>
      <td>&nbsp;</td>
    </tr>
  </table>
</form>
<?
}
?>
 
Die Lösung des ersten Problems hast du bereits genannt. Denn Spalten mit der „AUTO_INCREMENT“-Eigenschaft werden bei neuen Datensätzen automatisch erhöht.
Um das zweite Problem zu lösen, reicht es aus zu prüfen, ob bereits ein Benutzer mit dem angegebenen Namen existiert.
 
Ich möchte mich bei den jenigen bedanken, der ein Spambot auf meinem Server angesetzt hat nach meinem Beitrag. Wie kann es denn nur sein, dass man so dumm ist?

Ich verstehs nicht.


Zurück zum Thema:

Ich habe es jetzt geschafft, indem ich das ganze mit einer MySQL Class versehen habe.
Leider hatte ich wie oben schon geschrieben kein allzu großes vergnügen damit.

Schade..
 
Zurück