login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Gebruiker wordt niet onhouden

Offline Frederic - 26/04/2005 18:07
Avatar van FredericPHP ver gevorderde Ik ben bezig met een bestaand ledensysteem te veranderen, maar iedere keer als ik de browser sluit, en weer open moet ik opnieuw inloggen! De cookies staan zeker aan!
Dit zijn m'n pagina's:
inloggen.php
  1. <?php
  2. if(isset($_SESSION['gebruiker'])) {
  3. header("Location: ingelogged.php");
  4. }
  5. ?>
  6. <form name="form1" method="post" action="">
  7. <table border="0">
  8. <tr>
  9. <td>Gebruikersnaam:</td>
  10. <td><input name="gebruikersnaam" type="text" id="gebruikersnaam" size="35" <?php if(isset($_GET['gebruikersnaam'])) { ?>value="<?=$_GET['gebruikersnaam']?>"<?php } ?>></td>
  11. </tr>
  12. <tr>
  13. <td>Wachtwoord:</td>
  14. <td><input name="wachtwoord" type="password" id="wachtwoord" size="35"></td>
  15. </tr>
  16. <tr>
  17. <td>Tijd:</td>
  18. <td><select name="tijd" id="tijd">
  19. <option value="3600" selected>Een uur</option>
  20. <option value="86400">Een dag</option>
  21. <option value="604800">Een week</option>
  22. <option value="2678400">Een maand</option>
  23. <option value="32140800">Een jaar</option>
  24. <option value="32140767859200">Altijd</option>
  25. </select>
  26. (cookies vereist) </td>
  27. </tr>
  28. <tr>
  29. <td colspan="2"><input type="submit" name="Submit" value="Inloggen"></td>
  30. </tr>
  31. </table>
  32. </form>
  33. <?php if(isset($_POST['Submit'])) {
  34. $checkg = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'"),0);
  35. $checkp = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' AND wachtwoord='".$_POST['wachtwoord']."'"),0);
  36. if($_POST['gebruikersnaam'] == "" || $_POST['wachtwoord'] == "") {
  37. $error[] = 'Vul alle velden in!';
  38. }
  39. if($checkg == 0 && $_POST['gebruikersnaam'] != "") {
  40. $error[] = 'De ingevoerde gebruikersnaam is niet geregistreerd.';
  41. }
  42. if($_POST['wachtwoord'] != "" && $_POST['gebruikersnaam'] != "" && $checkp == 0) {
  43. $error[] = 'Het ingevoerde wachtwoord is niet correct.';
  44. }
  45. $fouten = sizeof($error); // aantal errors tellen
  46. if($fouten != 0) { // Er is minstens 1 error
  47. echo 'Kan niet inloggen omwille van de volgende reden(en):';
  48. echo '<ul>';
  49. for($i = 0; $i < $fouten; $i++) {
  50. echo '<li>'.$error[$i].'</li>';
  51. }
  52. echo '</ul>';
  53. } else {
  54. $res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'");
  55. $row = mysql_fetch_assoc($res);
  56. setcookie("gebruikersnaam",$row['gebruikersnaam'],time()+$_POST['tijd']);
  57. setcookie("wachtwoord",$row['wachtwoord'],time()+$_POST['tijd']);
  58. $_SESSION['gebruiker'] = $row['gebruikersnaam'];
  59. $_SESSION['gid'] = $row['id'];
  60. header("Location: index.php");
  61. }
  62. } ?>

Sessie.php (wordt op iedere pagina geinclude):
  1. <?php
  2. // als de gebruiker is ingelogd
  3. if(!isset($_SESSION['gebruiker']) && isset($_COOKIE['gebruikersnaam']) && isset($_COOKIE['wachtwoord'])) {
  4. // Gegevens uit koekje halen
  5. $zoek = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."' AND wachtwoord='".$_COOKIE['wachtwoord']."'");
  6. if(mysql_num_rows($zoek) > 0) {
  7. while($geg = mysql_fetch_assoc($zoek)) {
  8. $_SESSION['gebruiker'] = $geg['gebruikersnaam'];
  9. $_SESSION['gid'] = $geg['id'];
  10. header("Location: ".$_SERVER['REQUEST_URI']);
  11. }
  12. } else {
  13. $_SESSION = array();
  14.  
  15. // cookies deleten
  16. if(isset($_COOKIE['gebruikersnaam'])) {
  17. setcookie("gebruikersnaam", "", time(), "/");
  18. }
  19. if(isset($_COOKIE['wachtwoord'])) {
  20. setcookie("wachtwoord", "", time(), "/");
  21. }
  22. }
  23. }
  24. ?>

En dit is n voorbeeld van een beveiligde pagina:
  1. <?php
  2. if(isset($_SESSION['gebruiker'])) {
  3. ?>
  4. <br />
  5. Welkom, <? echo $_SESSION['gebruiker']; ?>
  6. <br />
  7. <ul class="gebruikersmodule">
  8. <li><a href="index.php?Pagina=persoonlijke_statistieken">Persoonlijke statistieken</a></li>
  9. <li><a href="index.php?Pagina=persoonlijke_bestanden">Persoonlijke bestanden</a></li>
  10. <li style="list-style: none;">&nbsp;</li>
  11. <li><a href="index.php?Pagina=afmelden">Afmelden</a></li>
  12. </ul>
  13. <?php
  14. }
  15. ?>

7 antwoorden

Gesponsorde links
Offline klostpret - 26/04/2005 18:10 (laatste wijziging 26/04/2005 18:10)
Avatar van klostpret HTML interesse Sessie's worden sowieso niet onthouden na sluiten van browser, en session-cookie's worden dus verwijderd na het sluiten vna de browser

Oja: waarom gebruik je meerdere cookie's?

das niet zo handig...
Offline Frederic - 26/04/2005 18:11
Avatar van Frederic PHP ver gevorderde Maar deze cookies moeten normaal toch behouden blijven? Door in het eerste codevak regel 57 & 58?
Offline klostpret - 26/04/2005 18:13
Avatar van klostpret HTML interesse Je verwijderd de cookie's toch weer in sessie.php?
Offline Frederic - 26/04/2005 18:18
Avatar van Frederic PHP ver gevorderde jah, als hij niet is ingelogged (veiligheid)
Offline ikkedikke - 26/04/2005 18:28
Avatar van ikkedikke PHP expert dus:
als iemand inlogd zet je cookies
iemand logt uit als hij het venster sluit
je verwijdert cookies als iemand niet ingelogd is

je meot eerst kijken als iemand niet ingelogd is of er cookies aanwezig zijn en pas als daar iets mis mee is de cookies verwijderen
Offline legende - 26/04/2005 19:16 (laatste wijziging 26/04/2005 19:18)
Avatar van legende Onbekend Je moet zo doen:
  1. <?php
  2. // als de gebruiker is ingelogd
  3. if(!isset($_SESSION['gebruiker']) && isset($_COOKIE['gebruikersnaam']) && isset($_COOKIE['wachtwoord'])) {
  4. // Gegevens uit koekje halen
  5. $zoek = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."' AND wachtwoord='".$_COOKIE['wachtwoord']."'");
  6. if(mysql_num_rows($zoek) > 0) {
  7. while($geg = mysql_fetch_assoc($zoek)) {
  8. $_SESSION['gebruiker'] = $geg['gebruikersnaam'];
  9. $_SESSION['gid'] = $geg['id'];
  10. header("Location: ".$_SERVER['REQUEST_URI']);
  11. }
  12. } else {
  13. $_SESSION = array();
  14.  
  15. // cookies deleten
  16. if(isset($_COOKIE['gebruikersnaam'])) {
  17. setcookie("gebruikersnaam", "", time(), "/");
  18. }
  19. if(isset($_COOKIE['wachtwoord'])) {
  20. setcookie("wachtwoord", "", time(), "/");
  21. }
  22. }
  23. }
  24. ?>


Anders wordt de sessie niet voortgezet, dat dus wel nodig is als je die sessie.php includet.
Offline Frederic - 26/04/2005 19:36
Avatar van Frederic PHP ver gevorderde Gek, nu ineens wordt er geen cookie meer aangemaakt!
  1. <?php
  2. if(isset($_SESSION['gebruiker'])) {
  3. header("Location: ingelogged.php");
  4. }
  5. ?>
  6. <?php
  7. if (IsSet($_GET['melding']))
  8. {
  9. echo "<span style=\"color: #CC0000;\">".$_GET['melding']."</span>";
  10. } ?><form name="inloggen" method="post" action="">
  11. <label for="gebruikersnaam">Gebruikersnaam</label><input name="gebruikersnaam" type="text" id="gebruikersnaam" size="15" <?php if(isset($_GET['gebruikersnaam'])) { ?>value="<? echo $_GET['gebruikersnaam']?>"<?php } ?> />
  12. <label for="wachtwoord">Wachtwoord</label><input name="wachtwoord" type="password" id="wachtwoord" size="15" />
  13. <input type="hidden" name="tijd" value="32140767859200" />
  14. <input type="submit" name="Submit" value="Inloggen" />
  15. </form>
  16. <?php if(isset($_POST['Submit'])) {
  17. $checkg = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'"),0);
  18. $checkp = mysql_result(mysql_query("SELECT COUNT(*) FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' AND wachtwoord='".$_POST['wachtwoord']."'"),0);
  19. if($_POST['gebruikersnaam'] == "" || $_POST['wachtwoord'] == "") {
  20. $error[] = 'Vul alle velden in!';
  21. }
  22. if($checkg == 0 && $_POST['gebruikersnaam'] != "") {
  23. $error[] = 'De ingevoerde gebruikersnaam is niet geregistreerd.';
  24. }
  25. if($_POST['wachtwoord'] != "" && $_POST['gebruikersnaam'] != "" && $checkp == 0) {
  26. $error[] = 'Het ingevoerde wachtwoord is niet correct.';
  27. }
  28. $fouten = sizeof($error); // aantal errors tellen
  29. if($fouten != 0) { // Er is minstens 1 error
  30. echo 'Kan niet inloggen omwille van de volgende reden(en):';
  31. echo '<ul>';
  32. for($i = 0; $i < $fouten; $i++) {
  33. echo '<li>'.$error[$i].'</li>';
  34. }
  35. echo '</ul>';
  36. } else {
  37. $res = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'");
  38. $row = mysql_fetch_assoc($res);
  39. $hoelang = ((time()) + 32140767859200);
  40. setcookie("gebruikersnaam",$row['gebruikersnaam'],$hoelang);
  41. setcookie("wachtwoord",$row['wachtwoord'],$hoelang);
  42. $_SESSION['gebruiker'] = $row['gebruikersnaam'];
  43. $_SESSION['gid'] = $row['id'];
  44. //header("Location: index.php");
  45. }
  46. } ?>

Ik krijg wel:
Notice: A session had already been started - ignoring session_start() in /usr/local/psa......inloggen.php on line 37
Maar die session start kwam eerder voor in sessie.php he? Echt, ik vind het erg vreemd dat er geen cookie meer komt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.292s