login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Cookie

Offline skillat - 29/10/2005 13:34
Avatar van skillatOnbekend Dit is het login script van fangorn (aangepast).
Alleen de login onthouden doet het niet.

Hier word de cookie geset:
  1. <? if(isset($_POST['memory'])) {
  2.  
  3. setcookie("login_cookie", $row['id'].";".$row['wachtwoord'], time()+3600*24*31*2, "/");
  4. $ip = $_SERVER['REMOTE_ADDR'];
  5. mysql_query("UPDATE members SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());
  6. } ?>



  1. <?php
  2. include 'config.php';
  3.  
  4. // als iemand is ingelogd
  5. if(isset($_POST['verzenden'])) {
  6. if(trim($_POST['nickname']) <> "" && trim($_POST['wachtwoord']) <> "") {
  7.  
  8. $nickname = $_POST['nickname'];
  9. $wachtwoord = md5($_POST['wachtwoord']);
  10.  
  11. $res = mysql_query("SELECT id, wachtwoord, permissions FROM members where nickname='".$nickname."'") or die(mysql_error());
  12.  
  13. if(mysql_num_rows($res) > 0) {
  14. $row = mysql_fetch_assoc($res);
  15.  
  16. if(!strcmp($wachtwoord, $row['wachtwoord'])) {
  17.  
  18. if(isset($_POST['memory'])) {
  19.  
  20. setcookie("login_cookie", $row['id'].";".$row['wachtwoord'], time()+3600*24*31*2, "/");
  21. $ip = $_SERVER['REMOTE_ADDR'];
  22. mysql_query("UPDATE members SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());
  23. }
  24.  
  25. // vul sessievariabelen
  26. $_SESSION['suser'] = $nickname; // gebruikersnaam van ingelogd persoon
  27. $_SESSION['slevel'] = $row['permissions']; // bijbehorende gebruikersniveau
  28. $_SESSION['stime'] = time(); // de huidige tijd
  29. $_SESSION['smaxidle'] = 60 * 60; // het aantal seconden inactiviteit
  30. } else {
  31. // wachtwoorden komen niet overeen, breek de sessie weer af
  32. $_SESSION = array();
  33. }
  34. // geef de resultaten van deze query weer vrij
  35. unset($row);
  36. }
  37. // ververs, of de gebruikersnaam/wachtwoord combinatie nou klopt of niet, de pagina
  38. header("Location: login.php");
  39. }
  40. }
  41. ?>
  42. <html>
  43. <head>
  44. <title>sessies · login</title>
  45. </head>
  46.  
  47. <body>
  48. <?php
  49. // als de (een willekeurige) sessievariabele suser in het sessie-array nog geen waarde heeft
  50. // (dus als iemand nog niet is ingelogd)
  51. if(!isset($_SESSION['suser'])) {
  52. ?>
  53.  
  54. <table border="0" bordercolor="#000000" cellspacing="0" cellpadding="0">
  55. <form method="post" action="login.php" name="login">
  56. <tr><td><font color="#666666"><b>Login</b></font></td></tr>
  57. <tr><td width="150">Nickname</td><td width="250">&nbsp;<input type="text" name="nickname" size="15"></td></tr>
  58. <tr><td width="150">Password</td><td width="250">&nbsp;<input type="password" name="wachtwoord" size="15"></td></tr>
  59. <tr>&nbsp;<tr><td width="150">Remember login?</td><td width="250"><input type="checkbox" name="memory" value="memory"><tr><td></td>
  60. <td bordercolor="#FFFFFF"><input type="submit" name="verzenden" value="verzenden"></td></tr>
  61. </form>
  62. </table>
  63.  
  64. <?php
  65. } else {
  66. // de gebruiker is ingelogd
  67. ?>
  68. <?php
  69.  
  70. if(($_SESSION['slevel'] & 'Admin') == 'Admin') {
  71. header("Location: admin.php");
  72. }
  73.  
  74. if(($_SESSION['slevel'] & 'Member') == 'Member') {
  75. header("Location: member.php");
  76. }
  77.  
  78. ?>
  79.  
  80. <?php
  81. }
  82. ?>
  83. </body>
  84. </html>
  85. <?php
  86. ?>

13 antwoorden

Gesponsorde links
Offline skillat - 29/10/2005 15:15 (laatste wijziging 29/10/2005 15:53)
Avatar van skillat Onbekend ik ben ff de kluts kwijt.
Dus hoe fix ik dit dan ?

edit:
  1. <input type="checkbox" name="memory" value="memory">

Als deze checkbox aangevinkt is dan moet er een cookie gezet worden.
Iemand ? 
Iemand ? 
Iemand ? 
Offline Ibrahim - 29/10/2005 16:06
Avatar van Ibrahim PHP expert kijk dan of jou browser wel cookies accepteert...
Offline skillat - 29/10/2005 16:14
Avatar van skillat Onbekend Kan jij het anders is proberen, ik gebruik gewoon internet explorer 6.

http://www.sneldesign.com/phpshit/login.php
user= sitemasters
pass= test
aanvinken

Dan word er ingelogd, sluit ik explorer af, ga ik weer naar login.php en moet ik weer alles invullen. Vind ik raar 
Offline Ibrahim - 29/10/2005 16:19 (laatste wijziging 29/10/2005 16:34)
Avatar van Ibrahim PHP expert je maakt wel de cookie aan maar ik zie nergens waar je checkt of er al een cookie is... (heb niet zo goed gekeken naar het script)

offtopic:
ik zou je bestanden beter beveiligen. Om te checken ben ik net je site binnen gegaan en mezelf admin gemaakt je kunt me account wel verwijderen hoor
Offline Ultimatum - 29/10/2005 16:32
Avatar van Ultimatum PHP expert in firefox doet hij het wel gewoon, dat als je inlogt, browser sluit, weer terug naar pagina gaan en hij is nog gewoon ingelogd

(ps: waarom was mijn eerste bericht hier verwijderd)
Offline Ibrahim - 29/10/2005 16:36
Avatar van Ibrahim PHP expert hier staat :

if(!isset($_SESSION['suser'])) {

en ik zie nergens staan: if(isset($_COOKIE['nogwat']

misschien dat erbij inbouwen
Offline skillat - 29/10/2005 16:46
Avatar van skillat Onbekend siliecom14, dat beveiligen was ik juist aan het maken maar wil eerst die cookie's goed hebben 
Offline Thomas - 29/10/2005 16:47
Avatar van Thomas Moderator Je controleert inderdaad nergens of er geen sessie is gestart, maar wel een cookie is geset (althans niet in bovenstaande code). Normaal stond die cookie-check in session.php geloof ik. Hoe luidt deze bij jou?
Offline skillat - 29/10/2005 16:50
Avatar van skillat Onbekend session.php heb ik intact gelaten.
Moet ik session.php nog includen dan ?
Offline Ibrahim - 29/10/2005 16:51 (laatste wijziging 29/10/2005 16:51)
Avatar van Ibrahim PHP expert dat is wel logisch als je wilt checken of iemand een cookie heeft geset... tenminste als dat in session.php staat
Offline Thomas - 29/10/2005 18:15
Avatar van Thomas Moderator Doh, die moet je altijd includen, anders kun je helemaal niet van $_SESSION gebruik maken... Hierin staat namemlijk ook session_start().

session_start() wordt gebruikt om een sessie te starten en [b]voort te zetten[/b]. Als je geen session_start() aanroept in je script, bestaat $_SESSION simpelweg niet.
Offline skillat - 29/10/2005 19:07 (laatste wijziging 30/10/2005 16:41)
Avatar van skillat Onbekend - session_start() had ik uiteraard gewoon, alleen include 'session.php' was nog te proberen.

Het cookie gedeelte van je script doet het helemaal niet, of mijn cookies doen het niet.
Ik heb je script "letterlijk" overgenomen en geupload + mysql tabel users aangemaakt.

//delete
Offline Thomas - 30/10/2005 18:51
Avatar van Thomas Moderator Misschien moet je het dan nog een keer "letterlijk" overnemen \:D/.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.23s