Passwort ändern über ein Formular

Xarfai

Mitglied
Hi also ich arbeite gerade an einem Usersystem. So hab das mit verscheidenen Rängen usw. hingekriegt. So nun will ich eine Passwort ändern FUnktion bauen wo der User erst sein altes passwort eingibt dann das neue und das neue wiederholen *standart* das Formular kein Problem nur jetzt hängt es halt an dem ändern hier mal der Code:

PHP:
<?

include("connect.php");
 $query= mysql_query("select * from usersystem where username='$u'"); // Die Variable $u is der Username der vorher beim Login übergeben wurde
   while($daten = mysql_fetch_array($query)) {
  $passwort2=$daten[passwort];   // Passwort auslesen
  
 }

 if ($passwort2=$oldpw)  // Wenn das ausgelesene Passwort = dem alten Passwort das eingegeben wurde ist dann...
  {
   if ($newpw=$newpww) // Wenn dass neue Passwort = dem neuen wiederholten Passwort ist dann...
    {
     
     mysql_connect("localhost","root",""); 
     mysql_select_db("xarfai"); 

     $lol="('UPDATE usersystem SET passwort='".$_POST['newpw']."' where username= '$u' ')";
     mysql_query($lol);
     mysql_close();
     Echo"<font color='green'>Passwort geändert!</font><br><a href='einloggen.php'>Bitte neu einloggen!</a>";

    } 
  }

?>

Also er erkennt alles an sagt er hätte das Passwort geändert tut er aber nicht. Irgendeine Idee?

Thankz schonmal im vorraus.

MFG Xarfai

*edit Kommentare eingefügt*
 
Zuletzt bearbeitet:
... außerdem solltest du unbedingt auch konsequent bleiben und immer die $_POST-Variablen nehmen (auch beim Vergleichen....)

Nochmal Mamphil ;)
 
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 ''UPDATE usersystem SET passwort='lool' where username= 'Xarfai'
 
Bitteschön. Da ist ein Fehler im MySQL-Statement... Was hat das mit PHP zu tun? ;)

Probier mal, die selbst vergebenen Namen von der Tabelle und den Spalten in Accent Graphes zu setzen (`). Außerdem würde ich konsequenterweise auch das "where" groß schreiben, das hat den Fehler aber sicherlich nicht ausgelöst...

Also: noch mal von vorne.
Du darfst das Statement nicht in Klammern setzen!
Also:
$lol="('UPDATE usersystem SET passwort='".$_POST['newpw']."' where username= '$u' ')";

Das fett-rote ist falsch und muss weg!

Mamphil
 
THX für die Hilfe ich hab es aber anders gelöst :D

PHP:
<?

include("connect.php");
 $query= mysql_query("select * from usersystem where username='$u'");
   while($daten = mysql_fetch_array($query)) {
  $passwort2=$daten[passwort];
  $id=$daten[id];
  
 }

 if ($passwort2=$oldpw)
  {
   if ($newpw=$newpww)
    {
     
     mysql_connect("localhost","root",""); 
     mysql_select_db("xarfai"); 

     mysql_query("UPDATE usersystem SET passwort='".$_POST['newpw']."' where id='$id'"); 
     
     die (mysql_error()); 
     mysql_close();
     Echo"<font color='green'>Passwort geändert!</font><br><a href='einloggen.php'>Bitte neu einloggen!</a>";

    } 
  }

?>

Mir ist eingefallen das ich die id ja benutzen kann und dann hats gefunzt :D
Trotzdem THX :D
 
Hast du denn deinen Fehler gesehen? Du darfst das Query nicht in Klammern und Anführungszeichen (innerhalb des Strings) setzen!
 
Bei PHP bestehen Vergleichsoperatoren aus zwei Gleichheitszeichen.

Versuch mal folgendes:
PHP:
<?php

	include("connect.php");
	$query = "
		SELECT
		        `passwort`
		  FROM
		        `usersystem`
		  WHERE
		        `username` = '".$u."'
	";
	$result = mysql_query($query);
	list($passwort2) = mysql_fetch_array($query, MYSQL_NUM);

	if( $passwort2 == $oldpw && $newpw == $newpww ) {

		mysql_connect("localhost","root","");
		mysql_select_db("xarfai");
		$query = "
			UPDATE
			        `usersystem`
			  SET
			        `passwort` = '".$_POST['newpw']."'
			  WHERE
			        `username` = '".$u."'
		";
		if( !mysql_query($query) ) {
			echo '<p><strong>MySQL Error <tt>'.mysql_errno().'</tt>:</strong> '.htmlspecialchars(mysql_error()).'<pre>'.$query.'</pre></p>';
			exit;
		}
		mysql_close();
		echo '<font color="green">Passwort geändert!</font><br><a href="einloggen.php">Bitte neu einloggen!</a>';

	}

?>
 
Zurück