Bei Änderung Passwort überprüfen?

B

Breaky

Hallo,

ich habe mal wieder ein Problem! Ich habe ein Formular in dem der User seine Daten ändern kann. Nun soll aber diese Änderung erst erfolgen wenn das eingegebene Passwort auch mit dem der Datenbank übereinstimmt! Wie kann man dies realisieren...?

poste mal den Script:

PHP:
<?php
// Nötige Variablen laden
include("config.inc.php");


//Verbindung herstellen
$db = mysql_connect("$db_server","$db_username","$db_password");
mysql_select_db("$db_database",$db);

// Daten ändern
$datum = time();
if ($edit) {
if ($submit) {
$sql = "UPDATE models SET anrede='$anrede',vorname='$vorname',nachname='$nachname',strasse='$strasse',plz='$plz',ort='$ort',land='$land',telefon='$telefon',homepage='$homepage',email='$email' WHERE id=$edit";
$result = mysql_query($sql,$db);
echo "Daten für die ID ".$edit." wurden geändert";
}
else {
$sql = "SELECT * FROM models WHERE id=$edit";
$result = mysql_query($sql,$db);
$data = mysql_fetch_array($result);
?>

<form method="post" action="<? echo $PHP_SELF . "?edit=$edit" ?>">
<input type=hidden name="edit" value="<? echo $data["id"] ?>">
<table border="0" align="center" width="447">
<tr>
<td colspan="4" bgcolor="#FF0000" width="441">
<p align="center"><b><font face="Verdana" size="2">Personendaten</font></b></td>
</tr>
<tr>
<td><font face="Verdana" size="2">Anrede</td>
<td>
<? if($data["anrede"]=='0') { ?>
<select name="anrede" size="1">
<option selected value="0">Frau
<option value="1">Herr
</select>
<? } else { ?>
<select name="anrede" size="1">
<option value="0">Frau
<option selected value="1">Herr
</select>
<? } ?>
</td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">Vorname</td>
<td colspan="3" width="358">
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="54"></td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">Nachname</td>
<td colspan="3" width="358">
<input type="text" name="nachname" value="<? echo $data["nachname"] ?>" size="54"></td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">Strasse Nr.</td>
<td colspan="3" width="358">
<input type="text" name="strasse" value="<? echo $data["strasse"] ?>" size="54"></td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">PLZ/Ort</td>
<td colspan="3" width="358"><input type="text" name="plz" value="<? echo $data["plz"] ?>" size="5" maxlength="5">
<input type="text" name="ort" value="<? echo $data["ort"] ?>" size="41"></td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">Land</td>
<td colspan="3" width="358"><input type="text" name="land" value="<? echo $data["land"] ?>" size="54"></td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">Telefon</td>
<td colspan="3" width="358">
<input type="text" name="telefon" value="<? echo $data["telefon"] ?>" size="54"></td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">Homepage</td>
<td colspan="3" width="358">
<input type="text" name="homepage" value="<? echo $data["homepage"] ?>" size="54"></td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">eMail!</td>
<td colspan="3" width="358"><input type="text" name="email" value="<? echo $data["email"] ?>" size="54"></td>
</tr><tr>
<td width="79"><font face="Verdana" size="2">Passwort</td>
<td colspan="3" width="358">
<input type="password" name="pwd" value="<? echo $pwd ?>" size="16"></td>
</tr>
<tr>
<td width="79">&nbsp;</td>
<td colspan="3" width="358">&nbsp;</td>
</tr><tr>
<td width="79"></td>
<td colspan="3" width="358"><input type="submit" name="submit" value="Ändern"></td>
</tr>
</table>
</form>
<?
}
}
?>
</div>
</body>
</html>

Also beim "submit" soll das eingegebene PW im Feld "pwd" mit dem in der Datenbank verglichen werden und erst bei Übereinstimmung sollen die Daten geändert werden!

Für Eure Hilfe wäre ich Euch dankbar!

Grusi
 
PHP:
include("config.inc.php");

//Verbindung herstellen
$db = mysql_connect("$db_server","$db_username","$db_password");
mysql_select_db("$db_database",$db);

if (user_check($benutztername,pwd)){
   update(alledeinevariablen);
   }
else{
  echo "Falscher Benutzername oder Passwort<br>";
}
     

function user_check($benutztername,pwd){
$ergebnis = mysql_query("select Name,Password from Benutzertabelle") or die(mysql_error());
    while ($row = mysql_fetch_array($ergebnis)){
                if ($row[Name]== $benutzername){
                    if ($row[Password]==$pwd){
                        return 1;
                    }
                }
        }

}
function update(alledeinevariablen){
// Daten ändern
$datum = time();
if ($edit) {
if ($submit) {
$sql = "UPDATE models SET  anrede='$anrede',vorname='$vorname',nachname='$nachname',strasse='$strasse',plz='$plz',ort='$ort',la
nd='$land',telefon='$telefon',homepage='$homepage',email='$email' WHERE id=$edit";
$result = mysql_query($sql,$db);
echo "Daten für die ID ".$edit." wurden geändert";
}
else {
$sql = "SELECT * FROM models WHERE id=$edit";
$result = mysql_query($sql,$db);
$data = mysql_fetch_array($result);}
}
Ich hab dass Formular jetzt mal weggelassen aber so ungefähr sollte es gehen.Bei Fragen einfach Nachfragen :):):)

tob
 
re Password!!!

Hallo Tob...

also ich weiss jetzt nicht genau ob es auch so geht! Ich wollte erreichen, das bei einer richtigen Eingabe von "Username" und "Passwort" der Datensatz erst angezeigt wird und dann auch erst geändert werden kann!!!???

Ich komme mit deinem Codes leider nicht klar, kannst Du mir den Post noch mal updaten!

Ich habe den Code noch mal gekürzt:

PHP:
<?php

// Nötige Variablen laden
include("config.inc.php");
?>

<?

//Verbindung herstellen
$db = mysql_connect("$db_server","$db_username","$db_password");
mysql_select_db("$db_database",$db);

// Daten ändern
$datum = time();
if ($edit) {
if ($submit) {
$sql = "UPDATE models SET anrede='$anrede',vorname='$vorname',nachname='$nachname',strasse='$strasse',plz='$plz',ort='$ort',land='$land',telefon='$telefon',homepage='$homepage',email='$email' WHERE id=$edit";
$result = mysql_query($sql,$db);
echo "Daten für die ID ".$edit." wurden geändert";
}
else {
$sql = "SELECT * FROM models WHERE id=$edit";
$result = mysql_query($sql,$db);
$data = mysql_fetch_array($result);
?>

<form method="post" action="<? echo $PHP_SELF . "?edit=$edit"  ?>">
<input type=hidden name="edit" value="<? echo $data["id"] ?>">
<table border="0" align="center" width="447">
<tr>
<td colspan="4" bgcolor="#FF0000" width="441">
<p align="center"><b>Personendaten</font></b></td>
</tr>
<tr>
<td>Anrede</td>
<td>
<? if($data["anrede"]=='0') { ?>
<select name="anrede" size="1">
<option selected value="0">Frau
<option value="1">Herr
</select>
<? } else { ?>
<select name="anrede" size="1">
<option value="0">Frau
<option selected value="1">Herr
</select>
<? } ?>
</td>
</tr><tr>
<td width="79">Vorname</td>
<td colspan="3" width="358">
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="54"></td>
</tr><tr>
<td width="79">Nachname</td>
<td colspan="3" width="358">
<input type="text" name="nachname" value="<? echo $data["nachname"] ?>" size="54"></td>
</tr><tr>
<td width="79">Strasse Nr.</td>
<td colspan="3" width="358">
<input type="text" name="strasse" value="<? echo $data["strasse"] ?>" size="54"></td>
</tr><tr>
<td width="79">PLZ/Ort</td>
<td colspan="3" width="358"><input type="text" name="plz" value="<? echo $data["plz"] ?>" size="5" maxlength="5">
<input type="text" name="ort" value="<? echo $data["ort"] ?>" size="41"></td>
</tr><tr>
<td width="79">Land</td>
<td colspan="3" width="358"><input type="text" name="land" value="<? echo $data["land"] ?>" size="54"></td>
</tr><tr>
<td width="79">Telefon</td>
<td colspan="3" width="358">
<input type="text" name="telefon" value="<? echo $data["telefon"] ?>" size="54"></td>
</tr><tr>
<td width="79">Homepage</td>
<td colspan="3" width="358">
<input type="text" name="homepage" value="<? echo $data["homepage"] ?>" size="54"></td>
</tr><tr>
<td width="79">eMail</td>
<td colspan="3" width="358"><input type="text" name="email" value="<? echo $data["email"] ?>" size="54"></td>
</tr><tr>
<td width="79"></td>
<td colspan="3" width="358"><input type="submit" name="submit" value="Ändern"></td>
</tr>
</table>
</form>
<?
}
}
?>

Grussi

Ach ja, die PHP-Datei für mit der URL: xxx.php?edit=y Y steht für Datensatz ID!
 
eigentlich sollte das ganz einfach sein: Vor das Updaten liest Du das Passwort aus der Datenbank, und vergleichst es mit dem eingegebenen:

PHP:
if($ausdb['pw']==$eingabepw) {
    // update
}
else {
    // kein update
}

Ich an Deiner Stelle würde aber das Formular nur dann anzeigen, wenn vorher das Passwort richtig eingegeben wurde, sonst kann jeder die Informationen auch ohne passwort lesen.

Gruß
Dunsti
 
Verstehe ich diech jetzt richtig ? du frägst über ein Formular Username und Passwort ab. übergibst die eingabe An die Datei mit dem von dir geposteten code und wenn dann Username und Passwort mit dem in der Mysqltabelle übereinstimmen willst du ein formular anbieten in dem schon einige sachen eingetragen sind (Userdaten):
PHP:
<?
include("config.inc.php");
//Verbindung herstellen
$db = mysql_connect("$db_server","$db_username","$db_password");
mysql_select_db("$db_database",$db);
if ($action=="login"){
        if(user_check($benutztername,pwd)){
         formularanzeige(alledeinebenötigtenvariablen);
       }
     else{
  echo "Falscher Benutzername oder Passwort<br>";
}
}
elseif(action=="editieren"){
   update(alledeinevariablen);
}
else{
echo "hallo <a href=link zum login>hierlang</a>";
}         
function user_check($benutztername,pwd){
$ergebnis = mysql_query("select Name,Password from Benutzertabelle") or die(mysql_error());
    while ($row = mysql_fetch_array($ergebnis)){
                if ($row[Name]== $benutzername){
                    if ($row[Password]==$pwd){
                        return 1;
                    }
                }
        }
}
function update(alledeinevariablen){
// Daten ändern
$datum = time();
if ($edit) {
if ($submit) {
$sql = " UPDATE models SET  anrede='$anrede',vorname='$vorname',nachname='$nachname',strasse='$strasse',plz='
$plz',ort='$ort',la
nd='$land',telefon='$telefon',homepage='$homepage',email='$email' WHERE id=$edit";
$result = mysql_query($sql,$db);
echo "Daten für die ID ".$edit." wurden geändert";
}
function formularanzeige(alledeinebenötigtenvariablen){
$sql = "SELECT * FROM models WHERE id=$edit";
$result = mysql_query($sql,$db);
$data = mysql_fetch_array($result);
?>
<form method="post" action="<? echo $PHP_SELF . "?edit=$edit&action=editieren"  ?>">
<input type=hidden name="edit" value="<? echo $data["id"] ?>">
<table border="0" align="center" width="447">
<tr>
<td colspan="4" bgcolor="#FF0000" width="441">
<p align="center"><b>Personendaten</font></b></td>
</tr>
<tr>
<td>Anrede</td>
<td>
<? if($data["anrede"]=='0') { ?>
<select name="anrede" size="1">
<option selected value="0">Frau
<option value="1">Herr
</select>
<? } else { ?>
<select name="anrede" size="1">
<option value="0">Frau
<option selected value="1">Herr
</select>
<? } ?>
</td>
</tr><tr>
<td width="79">Vorname</td>
<td colspan="3" width="358">
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="54"></td>
</tr><tr>
<td width="79">Nachname</td>
<td colspan="3" width="358">
<input type="text" name="nachname" value="<? echo $data["nachname"] ?>" size="54"></td>
</tr><tr>
<td width="79">Strasse Nr.</td>
<td colspan="3" width="358">
<input type="text" name="strasse" value="<? echo $data["strasse"] ?>" size="54"></td>
</tr><tr>
<td width="79">PLZ/Ort</td>
<td colspan="3" width="358"><input type="text" name="plz" value="<? echo $data["plz"] ?>" size="5" maxlength="5">
<input type="text" name="ort" value="<? echo $data["ort"] ?>" size="41"></td>
</tr><tr>
<td width="79">Land</td>
<td colspan="3" width="358"><input type="text" name="land" value="<? echo $data["land"] ?>" size="54"></td>
</tr><tr>
<td width="79">Telefon</td>
<td colspan="3" width="358">
<input type="text" name="telefon" value="<? echo $data["telefon"] ?>" size="54"></td>
</tr><tr>
<td width="79">Homepage</td>
<td colspan="3" width="358">
<input type="text" name="homepage" value="<? echo $data["homepage"] ?>" size="54"></td>
</tr><tr>
<td width="79">eMail</td>
<td colspan="3" width="358"><input type="text" name="email" value="<? echo $data["email"] ?>" size="54"></td>
</tr><tr>
<td width="79"></td>
<td colspan="3" width="358"><input type="submit" name="submit" value="Ändern"></td>
</tr>
</table>
</form>
<?
}
}
}
?>
 
Original geschrieben von Dunsti
Ich an Deiner Stelle würde aber das Formular nur dann anzeigen, wenn vorher das Passwort richtig eingegeben wurde, sonst kann jeder die Informationen auch ohne passwort lesen.

Gruß
Dunsti

Hi Dunsti,

war ein guter Tip, bin hier wohl von einer falschen Seite rangegangen! Natürlich sollen nur autorisierten User Ihre Daten angezeigt bekommen und dann auch ändern können!

Habe jetzt ein Sessionmanagement entwerfen müssen, damit ich mein Problem in den Griff bekomme!

Hat jetzt auch hingehauen! Habe zumindestens dabei gelernt, Variabeln GROß bzw. kein zu schreiben... :)

Danke auch noch mal für die Hilfe

PS: auch dank an Tob!!!

Grussi
 

Neue Beiträge

Zurück