login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Inlogscript met Sessies

Offline sandth - 04/12/2004 11:14
Avatar van sandthNieuw lid Ik heb het inlogscript met sessies van deze site gedownload, maar als ik ingelogd ben, dan zegt hij 'header already sent' Hieronder staat mijn script.

Aanmeld.php
  1. <?php
  2. require("connect.php");
  3. ?>
  4. <html>
  5. <head>
  6. <title>Aanmelden</title>
  7. </head>
  8.  
  9. <body>
  10. <?php
  11. // als het formulier nog niet is ingevuld
  12. if(!isset($_POST['submit'])) {
  13. ?>
  14. <form action="aanmeld.php" method="post">
  15. <table style='width:500;'>
  16. <tr>
  17. <td style='width:100;'>
  18. Naam:
  19. </td>
  20. <td>
  21. <input type="text" name="naam" size="50" maxlength="20">
  22. </td>
  23. </tr>
  24. <tr>
  25. <td style='width:100;'>
  26. Wachtwoord:
  27. </td>
  28. <td>
  29. <input type="password" name="wacht1" size="50" maxlength="30">
  30. </td>
  31. </tr>
  32. <tr>
  33. <td>
  34. Wachtwoord Opnieuw:
  35. </td>
  36. <td>
  37. <input type="password" name="wacht2" size="50" maxlength="30">
  38. </td>
  39. </tr>
  40. </table>
  41. <input type="submit" name="submit" value="Verstuur gegevens">
  42. </form>
  43.  
  44. <?php
  45. } elseif(trim($_POST['naam']) <> "" && trim($_POST['wacht1']) <> "") {
  46. $naam = $_POST['naam'];
  47. $res = mysql_query("SELECT * FROM users WHERE name='".$naam."'") or die(mysql_error());
  48. if(mysql_num_rows($res) == 0) {
  49. if(!strcmp($_POST['wacht1'], $_POST['wacht2'])) {
  50. $wacht = md5($_POST['wacht1']);
  51. $level = 1;
  52. mysql_query("INSERT INTO users (name, pass, level) VALUES ('".$naam."','".$wacht."',".$level.")") or die(mysql_error());
  53.  
  54. ?>
  55. Je gegevens zijn opgeslagen.<br>
  56. Je kunt <a href="login.php">hier</a> naar toe om in te loggen.<br>
  57. <?php
  58. } else {
  59. // wachtwoorden komen niet overeen
  60. ?>
  61. De twee opgegeven wachtwoorden zijn niet hetzelfde.<br>
  62. Druk op de "back" knop van je browser en voer twee identieke wachtwoorden in.<br>
  63. <?php
  64. }
  65. } else {
  66. // er bestaat al een gebruiker met deze naam
  67. ?>
  68. Er bestaat al een gebruiker met deze naam.<br>
  69. Druk op de "back" knop van je browser en geef een andere naam op.<br>
  70. <?php
  71. }
  72. } else {
  73. // sommige velden zijn niet ingevuld
  74. ?>
  75. Alle velden dienen ingevuld te worden.<br>
  76. Druk op de "back" toets en vul in alle velden wat in.<br>
  77. <?php
  78. }
  79. ?>
  80. </body>
  81. </html>


session.php
  1. <?php
  2. if(isset($_SESSION['suser'])) {
  3. $now = time();
  4. if($now - $_SESSION['stime'] > $_SESSION['smaxidle']) {
  5. $_SESSION = array();
  6. } else {
  7. $_SESSION['stime'] = $now;
  8. }
  9. } elseif(isset($_COOKIE['login_cookie'])) {
  10. list($id, $wacht) = split(";", $_COOKIE['login_cookie']);
  11. $res = mysql_query("SELECT id, pass, level, last_ip FROM users WHERE id='".$id."'") or die(mysql_error());
  12. if(mysql_num_rows($res) > 0) {
  13. $row = mysql_fetch_assoc($res);
  14. if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) {
  15. $_SESSION['suser'] = $naam;
  16. $_SESSION['slevel'] = $row['level'];
  17. $_SESSION['stime'] = time();
  18. $_SESSION['smaxidle'] = 60 * 60;
  19.  
  20. setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/");
  21. } else {
  22. setcookie("login_cookie", "", time(), "/");
  23. $_SESSION = array();
  24. }
  25. unset($row);
  26. } else {
  27. $_SESSION = array();
  28. }
  29. header("Location: ".$_SERVER['REQUEST_URI']);
  30. }
  31. ?>


logout.php
  1. <?php
  2. session_start(); // start een sessie of zet een sessie voort
  3. $_SESSION = array(); // maak het sessie array leeg
  4. session_destroy(); // verwijder de sessie
  5.  
  6. // als er een cookie geset is, reset deze
  7. if(isset($_COOKIE['login_cookie'])) {
  8. setcookie("login_cookie", "", time(), "/");
  9. }
  10. ?>
  11. <html>
  12. <head>
  13. <title>Log Uit</title>
  14. </head>
  15.  
  16. <body>
  17. U bent uitgelogd.<br />
  18. <a href="voorbeeld.php">voorbeeld pagina</a><br />
  19. <a href="login.php">(opnieuw) inloggen</a><br />
  20. </body>
  21. </html>


connect.php
  1. <?php
  2. $host = "localhost"; // je hostname, meestal localhost
  3. $user = "root"; // je username
  4. $pass = ""; // je wachtwoord
  5. $dbas = "lochuizen_v6"; // je database-naam
  6.  
  7. // connect naar database
  8. if(mysql_connect($host, $user, $pass)) {
  9. // selecteer database
  10. } else {
  11. // connecten naar database is mislukt
  12. echo "Failed to connect to database.";
  13. exit;
  14. }
  15. ?>


voorbeeld.php
  1. <?php
  2. require ("connect.php");
  3. require("session.php");
  4. ?>
  5. <html>
  6. <head>
  7. <title>sessies · voorbeeld</title>
  8. </head>
  9.  
  10. <body>
  11. <?php
  12. /*
  13. we gaan hier kijken of de gebruiker is ingelogd, en welk
  14. user level de gebruiker heeft. Op grond daarvan laten we
  15. bepaalde delen al dan niet zien.
  16. Een gebruikerslevel is een getal wat aangeeft hoeveel
  17. "macht" je hebt. Vaak is het zo: hoe hoger het getal, hoe
  18. meer je mag.
  19. bijvoorbeeld:
  20. Voor een bepaalde bewerking heb je gebruikers-
  21. niveau 1 nodig, maar voor een andere bewerking heb je niveau
  22. 2 nodig. Een gebruiker die beide bewerkingen mag uitvoeren
  23. heeft gebruikersniveau 1+2 = 3. MAAR: Een gebruiker die om
  24. een of andere reden alleen de tweede bewerking mag uitvoeren
  25. heeft gebruikersniveau 0+2 = 2. Dus je telt de nummers die
  26. bij bepaalde rechten horen bij elkaar op.
  27. Het nummer dat het recht geeft op een bepaalde bewerking is
  28. altijd een macht van 2.
  29. bijvoorbeeld:
  30. recht #1 (bv inloggen) heeft gebruikers niveau 2^0 = 1
  31. recht #2 (bv je eigen info veranderen) heeft gebr. niveau 2^1 = 2
  32. recht #3 (bv nieuws toevoegen) heeft gebruikers niveau 2^2 = 4
  33. recht #4 (bv members toevoegen) heeft gebruikersniveau 2^3 = 8
  34. enz.
  35. Iemand die al deze bewerkingen mag uitvoeren heeft dus
  36. gebruikersniveau 1+2+4+8 = 15 (of 2^4 - 1)
  37. Iemand die alleen recht #1 en recht #3 heeft, heeft
  38. dus gebruikersniveau 1+4 = 5
  39. */
  40. // controle op ingelogd zijn:
  41. if(isset($_SESSION['suser'])) {
  42. ?>
  43. user <b><?= $_SESSION['suser'] ?></b> is logged in.<br />
  44. <?php
  45. // vervolgens kijken we naar het userlevel, we vergelijken
  46. // bitsgewijs het gebruikerslevel - dit doen we met behulp van
  47. // een enkele '&' (de bitwise comparator)
  48. if($_SESSION['slevel'] & 1) {
  49. // voer code uit behorend bij recht #1
  50. ?>
  51. Je hebt recht #1.<br />
  52. <?php
  53. } else {
  54. // geef een melding dat je de acties
  55. // behorend bij recht #1 niet mag uitvoeren
  56. ?>
  57. Je hebt recht #1 NIET.<br />
  58. <?php
  59. }
  60.  
  61. if($_SESSION['slevel'] & 2) {
  62. // voer code uit behorend bij recht #2
  63. ?>
  64. Je hebt recht #2.<br />
  65. <?php
  66. } else {
  67. ?>
  68. Je hebt recht #2 NIET.<br />
  69. <?php
  70. }
  71. if($_SESSION['slevel'] & 4) {
  72. // voer code uit behorend bij recht #3
  73. ?>
  74. Je hebt recht #3.<br />
  75. <?php
  76. } else {
  77. ?>
  78. Je hebt recht #3 NIET.<br />
  79. <?php
  80. }
  81. if($_SESSION['slevel'] & 8) {
  82. // voer code uit behorend bij recht #4
  83. ?>
  84. Je hebt recht #4.<br />
  85. <?php
  86. } else {
  87. ?>
  88. Je hebt recht #4 NIET.<br />
  89. <?php
  90. }
  91. // et cetera
  92. ?>
  93. <a href="logout.php">uitloggen</a><br />
  94. <?php
  95. } else {
  96. ?>
  97. Je bent op dit moment niet ingelogd.<br />
  98. <a href="login.php">inloggen</a><br />
  99. <?php
  100. }
  101. ?>
  102. </body>
  103. </html>


login.php
  1. <?php
  2. require("connect.php");
  3.  
  4.  
  5. if(isset($_POST['login'])) {
  6. if(trim($_POST['naam']) <> "" && trim($_POST['wacht']) <> "") {
  7.  
  8. $naam = $_POST['naam'];
  9. $wacht = md5($_POST['wacht']);
  10. $res = mysql_query("SELECT id, pass, level FROM users where name='".$naam."'") or die(mysql_error());
  11.  
  12. if(mysql_num_rows($res) > 0) {
  13. $row = mysql_fetch_assoc($res);
  14. if(!strcmp($wacht, $row['pass'])) {
  15. if(isset($_POST['memory'])) {
  16. setcookie("login_cookie", $row['id'].";".$row['pass'], time()+3600*24*31*2, "/");
  17. $ip = $_SERVER['REMOTE_ADDR'];
  18. mysql_query("UPDATE users SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());
  19. }
  20.  
  21. $_SESSION['suser'] = $naam; // gebruikersnaam van ingelogd persoon
  22. $_SESSION['slevel'] = $row['level']; // bijbehorende gebruikersniveau
  23. $_SESSION['stime'] = time(); // de huidige tijd
  24. $_SESSION['smaxidle'] = 60 * 60; // het aantal seconden inactiviteit
  25. } else {
  26. $_SESSION = array();
  27. }
  28. unset($row);
  29. }
  30.  
  31.  
  32. header("Location: login.php");
  33.  
  34.  
  35. }
  36. }
  37. <html>
  38. <head>
  39. <title>Log in</title>
  40. </head>
  41.  
  42. <body>
  43. ");
  44. if(!isset($_SESSION['suser'])) {
  45. <form action='login.php' method='post'>
  46. <table style='width:500;'>
  47. <tr>
  48. <td style='width:100;'>
  49. Naam:
  50. </td>
  51. <td>
  52. <input type='text' name='naam' size='50'>
  53. </td>
  54. </tr>
  55. <tr>
  56. <td style='width:100;'>
  57. Wachtwoord:
  58. </td>
  59. <td>
  60. <input type='password' name='wacht' size='50'>
  61. </td>
  62. </tr>
  63. <tr>
  64. <td colspan='2'>
  65. <input type='checkbox' name='memory' value='1'> Blijf Ingelogd
  66. </td>
  67. </tr>
  68. <tr>
  69. <td colspan='2'>
  70. <input type='submit' name='login' value='log in'>
  71. </td>
  72. </tr>
  73. </table>
  74. </form>
  75. ");
  76. } else {
  77.  
  78. Hi <b>
  79. ");
  80. ?>
  81. <?= $_SESSION['suser'] ?>
  82. <?php
  83. </b>,<br>
  84. <a href='voorbeeld.php'>voorbeeld pagina</a><br>
  85. <a href='logout.php'>uitloggen</a><br>
  86. ");
  87. }
  88. ?>
  89. </body>
  90. </html>

0 antwoorden

Gesponsorde links
Er zijn nog geen reacties op dit bericht.
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.371s