# altes/neus Passwort ändern via PHP/MySql



## keiplan (28. Dezember 2004)

```
<html>

<head>
 <title>Passwort ändern || pass.php</title>
</head>

<body>
<?
include ("../config/db.php");

$old_pw=md5($old_pass);
$new_pw=md5($new_pass);

if ($button==" OK ") {
 if ($old_pw==$line['pass']) {
 mysql_query("UPDATE zugriff SET pass='$new_pw' WHERE name='$username'");
 mysql_close();
?>
Das Passwort wurde geändert!<br>
<a href="daten.php">&gt; zur Übersicht</a>
<?
 }
 else
 {
    echo "Falsches PW!";
 }
}
else {
$query = "SELECT * FROM zugriff WHERE name='$username'";
$result = mysql_query($query);
$line = mysql_fetch_array($result)
?>
<form method="post" action="pass.php">
<table>
	<tr>
         	<td>altes PW:</td>
                 <td><input type="text" name="old_pass"></td>
         </tr>
         <tr>
         	<td>neues PW:</td>
                 <td><input type="text" name="new_pass"></td>
         </tr>
         <tr>
         	<td colspan="2"><input type="submit" name="button" value=" OK "></td>
         </tr>
</table>
</form>
<?
}
?>
</body>
</html>
```

Dieses PHP-script soll eigentlich das alte PW abfragen, und wenn das stimmt das neue eintragen (md5-verschlüsselt). Doch irgendwie tut sich da gar nichts 
Kann mir jmd sagen, ob ich irgend einen grundlegenden Fehler gemacht habe, oder meine Logik nur falsch ist?!

Vielen Dank im vorraus
MfG, plan0r


----------



## Timbonet (28. Dezember 2004)

```
<html>

<head>
 <title>Passwort ändern || pass.php</title>
</head>

<body>
<?
include ("../config/db.php");

$old_pw=md5($_POST['old_pass']);
$new_pw=md5($_POST['new_pass']);

if ($_POST['button']==" OK ") {
$query = "SELECT * FROM zugriff WHERE name='$username'";
$result = mysql_query($query);
$line = mysql_fetch_array($result);
 if ($old_pw==$line['pass']) {
 mysql_query("UPDATE zugriff SET pass='$new_pw' WHERE name='$username'");
 mysql_close();
?>
Das Passwort wurde geändert!<br>
<a href="daten.php">&gt; zur Übersicht</a>
<?
 }
 else
 {
    echo "Falsches PW!";
 }
}
else {
?>
<form method="post" action="pass.php">
<table>
	<tr>
         	<td>altes PW:</td>
                 <td><input type="text" name="old_pass"></td>
         </tr>
         <tr>
         	<td>neues PW:</td>
                 <td><input type="text" name="new_pass"></td>
         </tr>
         <tr>
         	<td colspan="2"><input type="submit" name="button" value=" OK "></td>
         </tr>
</table>
</form>
<?
}
?>
</body>
</html>
```


----------



## keiplan (28. Dezember 2004)

1. 


> $query = "SELECT * FROM zugriff WHERE name='$username'";
> $result = mysql_query($query);
> $line = mysql_fetch_array($result)


das ist mein $line...

2. 
muss dass dann nicht $_GET heißen? $_POST ist doch, wenn ich was erstelle?


----------



## Timbonet (28. Dezember 2004)

Ich habe es dir oben mal angepaßt. Du solltest natürlich die Datenbankabfrage nach dem aktuellen Passwort machen, bevor du es überprüfst, ob es richtig ist. Sonst wird das per Formular übergebene PW mit einem leeren String verglichen..
$_POST bzw. $_GET sind der richtige Weg, um auf die per Formular bzw. URL übergebenen Variablen zuzugreifen.


----------



## keiplan (28. Dezember 2004)

jetzt kommt " Parse error: parse error, unexpected T_IF in .../database/login/member/pass2.php on line 18 "


> if ($old_pw==$line['pass']) {


----------



## keiplan (28. Dezember 2004)

ok, du hast nur ein " ; " vergessen. jetzt kommt kein fehler mehr, aber das script funktioniert immer noch nicht


----------



## Timbonet (28. Dezember 2004)

Wenn du es direkt so wie geschrieben einsetzt: Wie wird $username mit Werten gefüllt?


----------



## keiplan (28. Dezember 2004)

$username ist fest in der Session integriert (hier im Script habe ich die Session der Einfachheit halber weggelassen) und wird, wenn ich's mit echo überprüfe, ausgefüllt.


----------



## keiplan (28. Dezember 2004)

oh, habe vergessen die session in "deinem" script wieder einzusetzen. jetzt geht es!
vielen dank


----------

