Vergleich von 2 Variablen

matze1983

Erfahrenes Mitglied
Ich versuche, dass man das neue Passwort nur abspeichern darf, wenn das alte vorher korrekt eingegeben wurde. Mein Script sieht wie folgt aus
PHP:
$passwort_db="$userpass=' ".md5($pass)." ' "; 

if (isset($_POST['gesendet']) )
{
if ($alt_passwort==$userpass)
{
..// Datenbankabfrage
}
}
 
Wo genau liegt das Problem ? Sehe keine Frage in deinem Text ;)
PHP:
if(isset($_POST['gesendet'])){
  // altes PW aus DB holen
  $passwort_aus_db = $row['passwort']; // o.Ä., wie es halt heisst bei dir
  if(md5($_POST['altes_passwort']) === $passwort_aus_db){
    $neues_passwort = md5($_POST['neues_passwort']);
    // neues PW in DB schreiben
  }
  else{
    echo 'PWs stimmen nicht überein!';
  }
}
 
Du kannst es auch in einer Abfrage regeln:
PHP:
'UPDATE `…` SET `userpass`="'.md5($_POST['neues_passwort']).'" WHERE `userid`='.(int)$_POST['userid'].' AND `userpass`="'.md5($_POST['altes_passwort']).'"'
Mit der mysql_affected_rows()-Funktion prüfst du anschließend, ob der Datensatz geändert wurde (Rückgabewert 1).
 
:-) ja war schon spät, da hab ich wohl glatt die Frage vergessen
Danke euch beiden.
Ich werde beide ausprobieren, jedoch stecke ich noch in drucko's Lösung fest.


@Drucko:Wie hast du dein $row ausgelesen?
mit
PHP:
mysql_fetch_array, oder mysql_fetch_result
etc.?
Bei mir ist
PHP:
$result= mysql_query($query);
müsste ja deinem row entsprechen. Nur leider sagt er mir, dass mein altes PW nicht übereinstimmt.ICh vermute das er nicht ausliest.
 
Zuletzt bearbeitet:
Hallo,
hatte das nur so spontan hingeklatscht - ging von mysql_fetch_array() aus.
Gumbos Variante ist aber besser, rate dir es so zu machen!
MfG
 
Nun ich ich dabei den Vorschlag von Gumbo zu realisieren jedoch wird mir ein Syntax fehler vorgeworfen, jedoch find ich ihn nicht.

PHP:
 $query="UPDATE `users` SET `userpass`= '".md5($_POST['neues_passwort'])."' WHERE usersession`='".mysql_real_escape_string(session_id())."' AND `userpass`='".md5($_POST['altes_passwort'])."'";

Fehler:
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`=4a7d521bf92f63d458fa9a49db60be8f AND `userpass`='fc03f90dbfbc1

und der Wert von mysql_affected_rows() beträgt -1, also kein Update.
Weis jemand wo der Fehler in der Syntax liegt?
 
Wenn die Abfrage so wie von dir genannt zusammensetzt wird, kann es gar nicht so solch einem Fehler kommen, da alle Zeichenkettenwerte in Anführungszeichen gesetzt sind.
 
peinlich peinlich peinlich :-(
wo du es nochmal gesagt hast, bin ich alles noch par mal durchgegangen...
es lag an einem " ` " jetzt funktioniert es auch.
MfG
 
Zurück