User Datensatz löschen

Turtle78

Mitglied
Hallo zusammen,

ich will mit einem Formular einen User-Datensatz aus einer mySQL Tabelle löschen.
Dazu soll der User seinen Nickname und sein Paßwort eingeben. Wenn ich Ihn nur den Nickname eingeben lasse funktiniert das auch schon, aber wenn zusätzlich das Paßwort dazu kommt hakt es. Ich habe schon rausbekommen, daß es an der md5 Verschlüsselung liegt. Nehme ich diese raus klappt nämlich auch das löschen.
Ich hoffe das mit dem Code klappt jetzt, daß mache ich zum ersten Mal.

Danke im Voraus

PHP:
  <?php
  
     error_reporting(E_ALL);
  
  	include 'include/config.php';
  	// Konfigurationsdatei laden
  
  	@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
  		die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
  	// Verbindung zum SQL Server
  	mysql_select_db(MYSQL_DATABASE) OR
  		die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
  	// Verbindung zur Datenbank
  
    
  $sql = "SELECT
  			Nickname,
  			Kennwort
  		   FROM
  			benutzerdaten
  		WHERE
  		   Nickname='$_POST[Nickname]' AND Kennwort='md5(.$_POST[Kennwort].)'
  		LIMIT 1";
  
  $res = mysql_query($sql) or die(mysql_error());
  if (mysql_num_rows($res)==1)
  {
     mysql_query("
  DELETE FROM
  	benutzerdaten
  WHERE
     Nickname='$_POST[Nickname]' AND Kennwort='md5(.$_POST[Kennwort].)'
  ")
  ;
 echo "<table class=tgtabelle cellspacing=10 align=center><tr><td>Ihr Account $_POST[Nickname] wurde erfolgreich aus der Datenbank gelöscht.</td></tr></table><br><br><br>";
  }
  else
  {
 echo "<table class=tgtabelle cellspacing=10 align=center><tr><td>Beim löschen des Accounts $_POST[Nickname] ist ein Fehler aufgetreten.</td></tr></table><br><br><br>";
  }
  ?>
 
warum machst du den ersten Select befehl?

den bracusht du eigentlich net.

mach den mal raus und mach nur den unteren.

versuch des mal.
 
Hi

schau einfach mal nach, ob das Feld (Spalte in mySQL) für die md5-Verschlüsselung auch groß genug ist. Wenn nicht, dann passiert es beim Einfügen des Datensatzes (Userdaten), dass die letzten Zeichen fehlen. Dann kommt es natürlich auch zu keiner Übereinstimmung.
 
Ohne auf Sicherheitslücken etc. einzugehen: Hast du das Passwort in der Tabelle auch mit Punkten am Anfang und Ende gespeichert? Falls nicht, solltest du das entsprechend abändern.
 
Hallo,

eine Erklärung über Sicherheitslücken fände ich auch gut. Ich will es nämlich so sicher wie möglich haben.
Generell ist es das Script aus dem Tutorial Bereich dieses Forums. Da wird es so mit dem md5 erklärt.
Das Feld sollte lang genug sein, da das einloggen mit Nickname und Paßwort prima klappt. Wie viel Platz brauche ich denn?
Das mit den Punkten habe ich geändert bringt aber auch nix.

Gruß und Danke für die Geduld
 
Das mit den Punkten hast du wohl falsch geändert.

PHP:
error_reporting(E_ALL);
include 'include/config.php'; // Konfigurationsdatei laden

mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error()); // Verbindung zum SQL Server
mysql_select_db(MYSQL_DATABASE) or die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error()); // Verbindung zur Datenbank

$Query = mysql_query("
  DELETE FROM
      `benutzerdaten` 
  WHERE
     `Nickname` = ".$_POST['Nickname']." AND `Kennwort` = ".md5($_POST['Kennwort'])) or die (mysql_error ());

if (mysql_num_rows ($Query)) {
echo '<table class="tgtabelle" cellspacing="10" align="center"><tr><td>Ihr Account '.$_POST['Nickname'].' wurde erfolgreich aus der Datenbank gelöscht.</td></tr></table><br><br><br>';
}
else
{
  echo '<table class="tgtabelle" cellspacing="10" align="center"><tr><td>Beim löschen des Accounts '.$_POST['Nickname'].' ist ein Fehler aufgetreten.</td></tr></table><br><br><br>';
}
 
Zuletzt bearbeitet:
Hi

ich glaube, da stimmt was nicht nicht, der Übergabe des Wertes Kennwort.
Setzt die Werte doch mal in Variablen

PHP:
$nickname = $_POST['Nickname'];
$kennwort = md5($_POST['Kennwort']);

$sql = "SELECT
              Nickname,
              Kennwort
             FROM
              benutzerdaten
          WHERE
             Nickname='$nickname' AND Kennwort='$kennwort'
          LIMIT 1";
          
   $res = mysql_query($sql) or die(mysql_error());
	    if (mysql_num_rows($res)==1)
	    {
	       mysql_query("
	    DELETE FROM
	        benutzerdaten
	    WHERE
	       Nickname='$nickname' AND Kennwort='$kennwort'
  ")
 
Stop muß moch korrigieren,

der Tip von Luzie mit den Variablen hat geklappt. Keine Ahnung warum, aber jetzt klappts.

Lieben Dank an alle Helfer
 
Zurück