login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] Database update wordt niet uitgevoerd (Opgelost)

Offline raintjah - 10/09/2007 23:18
Avatar van raintjahNieuw lid Hallo,

zoals jullie misschien al weten gebruik ik het loginscript van FangorN:
http://www.site...&id=85

Nu vind je daar in 'login.php' de volgende code terug:

  1. $res = mysql_query("SELECT id, pass, level FROM users where name='".$naam."'") or die(mysql_error());
  2.  
  3. // Als er een resultaat is, oftewel er bestaat een gebruiker met de naam $naam
  4. if(mysql_num_rows($res) > 0) {
  5. $row = mysql_fetch_assoc($res);
  6. // aanname: het wachtwoord in de database is eenmalig gehashed mbv de functie md5()
  7. // vergelijk het opgehaalde wachtwoord met een versleutelde versie van het in het
  8. // formulier opgegeven wachtwoord
  9. if(!strcmp($wacht, $row['pass'])) {
  10. // alle gegevens kloppen
  11.  
  12. // v1.2 extra functionaliteit, onthouden login
  13. // wil de gebruiker zijn gegevens onthouden ?
  14. if(isset($_POST['memory'])) {
  15. // set cookie (voor 2 maanden) en onthoud het IP
  16. // gebruik hierbij het id van de gebruiker
  17. setcookie("login_cookie", $row['id'].";".$row['pass'], time()+3600*24*31*2, "/");
  18. $ip = $_SERVER['REMOTE_ADDR'];
  19. mysql_query("UPDATE users SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());
  20. }


Zelfsverzekerd als ik was, dacht ik even het zootje daar te 'pimpen' tot het volgende:

  1. $res = mysql_query("SELECT id, pass, level, aantallogins FROM users where name='".$naam."'") or die(mysql_error());
  2. // Als er een resultaat is, oftewel er bestaat een gebruiker met de naam $naam
  3. if(mysql_num_rows($res) > 0) {
  4. $row = mysql_fetch_assoc($res);
  5.  
  6. // aanname: het wachtwoord in de database is eenmalig gehashed mbv de functie md5()
  7. // vergelijk het opgehaalde wachtwoord met een versleutelde versie van het in het
  8. // formulier opgegeven wachtwoord
  9. if(!strcmp($wacht, $row['pass'])) {
  10. // alle gegevens kloppen
  11. $aantallogins = $row['aantallogins'] + 1;
  12. // v1.2 extra functionaliteit, onthouden login
  13. // wil de gebruiker zijn gegevens onthouden ?
  14. if(isset($_POST['memory'])) {
  15. // set cookie (voor 2 maanden) en onthoud het IP
  16. // gebruik hierbij het id van de gebruiker
  17. setcookie("login_cookie", $row['id'].";".$row['pass'], time()+3600*24*31*2, "/");
  18. $ip = $_SERVER['REMOTE_ADDR'];
  19.  
  20. mysql_query("UPDATE users SET last_ip='".$ip."', aantallogins='".$aantallogins."' WHERE id=".$row['id']) or die(mysql_error());
  21. }


Zoals je ziet wou/wil ik het aantal logins van elke user tellen. Ik heb daar dus één en ander bijgeschreven. Door het script zo uit te voeren worden er geen foutmeldingen gegeven, maar de database wordt evenmin aangepast... Het aantal logins gaat dus niet omhoog in de database, terwijl er wel degelijk ingelogd is...

2 antwoorden

Gesponsorde links
Offline Stijn - 11/09/2007 11:44
Avatar van Stijn PHP expert Er wordt enkel geupdate als $_POST['memory'] bestaat. Dit zal een checkbox zijn in je login formulier. Vink die eens aan en kijk of hij update, er is niet mis met je query anders zou je een foutmelding krijgen.
Offline raintjah - 11/09/2007 14:33
Avatar van raintjah Nieuw lid Ahja, bedankt 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.184s