login  Naam:   Wachtwoord: 
Registreer je!
 Forum

inloggen lukt niet... blijft vasthangen in een lus?

Offline pim1991 - 20/01/2008 13:14 (laatste wijziging 20/01/2008 13:25)
Avatar van pim1991PHP interesse Hallo,

Ik heb hier een probleem met een loginsysteem die ik aan het maken ben.
Ik heb hier en daar wat gekopieerd en het moet bij mijn weten normaal gewoon kunnen werken.

Hier is het script:
  1. <?php
  2. require("config.php");
  3. session_start(); // start een sessie of zet een sessie voort
  4. if(isset($_POST['login'])) {
  5. if(trim($_POST['naam']) != "" && trim($_POST['wacht']) != "") {
  6. $naam = $_POST['naam'];
  7. $wacht = md5($_POST['wacht']);
  8. $res = mysql_query("SELECT * FROM users WHERE name='".$naam."'") or die(mysql_error());
  9. if(mysql_num_rows($res) > 0) {
  10. $row = mysql_fetch_assoc($res);
  11. if(!strcmp($wacht, $row['pass'])) {
  12. if(isset($_POST['memory'])) {
  13. setcookie("login_cookie", $row['id'].";".$row['pass'], time()+3600*24*31*2, "/");
  14. $ip = $_SERVER['REMOTE_ADDR'];
  15. mysql_query("UPDATE users SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());
  16. }
  17. $_SESSION['suser'] = $id; // id van ingelogd persoon
  18. $_SESSION['slevel'] = $row['level']; // bijbehorende gebruikersniveau
  19. $_SESSION['stime'] = time(); // de huidige tijd
  20. $_SESSION['smaxidle'] = 60 * 60; // het aantal seconden inactiviteit
  21. } else {
  22. $_SESSION = array();
  23. echo "Het door u opgegeven wachtwoord is verkeerd.";
  24. }
  25. unset($row);
  26. }else{
  27. echo "Er is geen gebruiker gevonden met de door u opgegeven gebruikersnaam. Probeer het opnieuw.";
  28. }
  29. header("Location: index.php");
  30. }else{
  31. echo "Uw heeft geen wachtwoord of gebruikersnaam ingevuld!";
  32. }
  33. }else{
  34. if(!isset($_SESSION['suser'])) {
  35. ?>
  36. <table border="0" cellpadding="5" cellspacing="0">
  37. <form action="login.php" method="post">
  38. <tr><td>naam</td><td><input type="text" name="naam" size="15"></td></tr>
  39. <tr><td>wachtwoord</td><td><input type="password" name="wacht" size="15"></td></tr>
  40. <tr><td colspan="2"><input type="checkbox" name="memory" value="1"> onthoud mijn login (gebruikt cookie)</td>
  41. <tr><td><input type="submit" name="login" value="log in"></td><td>&nbsp;</td></tr>
  42. </form></table>
  43. <p>Nog geen account? Maak er <a href="register.php?step=1">hier</a> een aan!</p>
  44. <?php
  45. } else {
  46. ?>
  47. <p>U bent al ingelogd!</p>
  48. <?php
  49. }
  50. }
  51. ?>


Wie o Wie weet wat ik fout doe?

Alvast bedankt!

8 antwoorden

Gesponsorde links
Offline Koen - 20/01/2008 13:22
Avatar van Koen PHP expert Om te beginnen mist je code vanboven een '<'..
Offline pim1991 - 20/01/2008 13:25
Avatar van pim1991 PHP interesse Foutje met kopieeren is dat ;)
Offline Koen - 20/01/2008 13:28
Avatar van Koen PHP expert Je doet
  1. header("Location: index.php");

buiten de accolade van de else..
Offline pim1991 - 20/01/2008 13:47
Avatar van pim1991 PHP interesse Ok dat is dus opgelost.
Next problem is session.php
Die heb ik van deze site af geplukt
  1. <?php
  2. session_start(); // start een sessie of zet een sessie voort
  3.  
  4. // als de gebruiker is ingelogd
  5. if(isset($_SESSION['suser'])) {
  6. // het volgende timeout deel is optioneel - dit mag worden weggelaten
  7. // * timeout gedeelte *
  8. $now = time();
  9. // als er meer tijd is verstreken dan smaxidle
  10. // sinds het aanmaken van de sessie
  11. if($now - $_SESSION['stime'] > $_SESSION['smaxidle']) {
  12. // breek de sessie af, de gebruiker dient opnieuw in te loggen
  13. $_SESSION = array();
  14. } else {
  15. // ververs anders de sessietijd. Dit zorgt er voor
  16. // dat de gebruiker ingelogd blijft zolang deze actief is.
  17. $_SESSION['stime'] = $now;
  18. }
  19. // * einde timeout gedeelte *
  20. // v1.2 extra functionaliteit, onthouden login
  21. } elseif(isset($_COOKIE['login_cookie'])) {
  22. // bekijk de waarden van de cookie en als deze kloppen met de database - start alsnog een sessie
  23. // aanname - er is een verbinding met de database
  24. list($id, $wacht) = split(";", $_COOKIE['login_cookie']);
  25. $res = mysql_query("SELECT id, pass, level, last_ip FROM users WHERE id='".$id."'") or die(mysql_error());
  26. if(mysql_num_rows($res) > 0) {
  27. $row = mysql_fetch_assoc($res);
  28. if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) {
  29. // init session
  30. $_SESSION['suser'] = $naam;
  31. $_SESSION['slevel'] = $row['level'];
  32. $_SESSION['stime'] = time();
  33. $_SESSION['smaxidle'] = 60 * 60;
  34.  
  35. // update cookie
  36. // gebruik hierbij wederom het id en het versleutelde wachtwoord
  37. setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/");
  38. } else {
  39. // password of ip komt niet overeen - unset het cookie en beeindig de sessie
  40. setcookie("login_cookie", "", time(), "/");
  41. $_SESSION = array();
  42. }
  43. // geef resultaten vrij
  44. unset($row);
  45. } else {
  46. // gebruiker onbekend, cookie vervalst ?
  47. $_SESSION = array();
  48. }
  49. // ververs de pagina
  50. header("Location: ".$_SERVER['REQUEST_URI']);
  51. }
  52. ?>
Offline Simon - 20/01/2008 13:50
Avatar van Simon PHP expert Het zou wel even handig zijn moesten we weten waar het fout gaat?
Offline pim1991 - 20/01/2008 13:53
Avatar van pim1991 PHP interesse Hij blijft alweer in een lus hangen...
Offline Bart - 20/01/2008 13:59
Avatar van Bart PHP expert En net zeg je dat dat probleem opgelost was?
Offline pim1991 - 20/01/2008 14:00
Avatar van pim1991 PHP interesse eerste script was inlogscript
tweede is session.php die ik nodig heb.
Maar wanneer ik deze in een pagina include loopt deze in een lus
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.252s