Waarde in DB worden niet aangepast...

  • Onderwerp starter Onderwerp starter Gregg
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Gregg

Gebruiker
Lid geworden
8 okt 2008
Berichten
68
Hallo iedereen,
ik wil de gebruiker in staat stellen om zelf zijn paswoord (MD5) te veranderen eens hij ingelogged is..
toch doet hij het niet.
wat doe ik verkeerd?
Alvast bedankt voor de hulp

database gegeven:
tabel : users
velden: id, pass, name

PHP:
// formulier
<form action="user_home.php" method="post">
<div align="center">
  <table width="506" border="0">
    <tr>
      <td width="141"><div align="left">Naam : </div></td>
      <td width="322"><div align="left">
        <input type="text" name="naam" value="<?= $_SESSION['suser'] ?>"size="40" maxlength="20" />
      </div></td>
    </tr>
    <tr>
      <td><div align="left">Nieuw wachtwoord :</div></td>
      <td><div align="left">
        <input type="password" name="wacht1" size="40" maxlength="30" />
      </div></td>
    </tr>
    <tr>
      <td><div align="left">Wachtwoord opnieuw :</div></td>
      <td><div align="left">
        <input type="password" name="wacht2" size="40" maxlength="30" />
      </div></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2"><div align="center">
        <input type="submit" name="submit" value="Verander Paswoord" />
      </div></td>
      </tr>
  </table>
 </div>
<label>
<div align="center"></div>
</label>
<div align="center"><br />
</div>
</form> //einde formulier
<?php
// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
} elseif(trim($_POST['naam']) <> "" && trim($_POST['wacht1']) <> "") {
	$naam = $_POST['naam'];
          // kijk of de opgegeven wachtwoorden overeenkomen
    if(!strcmp($_POST['wacht1'], $_POST['wacht2'])) {
      // wachtwoorden komen overeen - sla alle gegevens op in de database
      // naam is al opgehaald uit het formulier
      $wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
	
	  
	  $query="UPDATE users SET
						pass = '". $_POST["wacht1"] . "'
						WHERE naam = " .$_SESSION['suser'] ;
						$result = mysql_query($query,$db) or die ("FOUT" . mysql_error());
       // geef melding weer

	echo("<br><br><br><br><div class='phpsuccess'><center><br>Uw Wachtwoord is aangepast</div>\n");

    } else {
      // wachtwoorden komen niet overeen

	
    echo '<br><font color="#ff0000" size="4" face="arial"><center>De twee opgegeven wachtwoorden zijn niet dezelfde!</center></font><br>';
	echo ("<br><center><a href=\"user_home.php\">Probeer nogmaals</a></center><br><br>");

   }
  } else {
   
  // sommige velden zijn niet ingevuld

 echo '<br><font color="#ff0000" size="4" face="arial"><center>Alle velden dienen ingevuld te worden!</center></font><br>';
 echo ("<br><center><a href=\"user_home.php\">Probeer nogmaals</a></center><br><br>");

}
  }
}
?>
 
Je converteert eerst $_POST['wacht1'] naar md5 in een nieuwe variabele, maar daarna zet je de niet encrypted versie in de database?

Dat lijkt me niet zo handig ;)

Verder zou ik foutmeldingen moeten zien om veel meer te kunnen zeggen :) Wat gaat er precies niet?
 
PHP:
if(!strcmp($_POST['wacht1'], $_POST['wacht2'])) {

Daar zou ik van maken:

PHP:
if(strcmp($_POST['wacht1'], $_POST['wacht2']) == 0) {
 
volgende fout geeft hij..

FOUTUnknown column 'GREG' in 'where clause'

GREG is mijn loginnaam = $_SESSION['suser']

volgende code heb ik nu

PHP:
</form>
<?php

// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
} elseif(trim($_POST['naam']) <> "" && trim($_POST['wacht1']) <> "") {
	$naam = $_POST['naam'];
          // kijk of de opgegeven wachtwoorden overeenkomen
    if(strcmp($_POST['wacht1'], $_POST['wacht2']) == 0) {  
 
      // wachtwoorden komen overeen - sla alle gegevens op in de database
      // naam is al opgehaald uit het formulier
      $wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
	
	  
	  $query="UPDATE users SET
						pass = '$wacht'
						WHERE name = " .$_SESSION['suser'] ;
						$result = mysql_query($query,$db) or die ("FOUT" . mysql_error());
       // geef melding weer

	echo("<br><br><br><br><div class='phpsuccess'><center><br>Uw Wachtwoord is aangepast</div>\n");

    } else {
      // wachtwoorden komen niet overeen

	
    echo '<br><font color="#ff0000" size="4" face="arial"><center>De twee opgegeven wachtwoorden zijn niet dezelfde!</center></font><br>';
	echo ("<br><center><a href=\"user_home.php\">Probeer nogmaals</a></center><br><br>");

   }
  } else {
   
  // sommige velden zijn niet ingevuld

 echo '<br><font color="#ff0000" size="4" face="arial"><center>Alle velden dienen ingevuld te worden!</center></font><br>';
 echo ("<br><center><a href=\"user_home.php\">Probeer nogmaals</a></center><br><br>");

}
  }
}
?>
 
Je moet alle teksten die je op slaat in de database omgeven met enkele aanhalingstekens:

PHP:
      $query="UPDATE users SET
                        pass = '$wacht'
                        WHERE name = '" .$_SESSION['suser'] . "'" ;
                        $result = mysql_query($query,$db) or die ("FOUT" . mysql_error());
 
Het werkt.. :p

wat een aanhalingsteken niet kan doen... :D

bedankt :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan