login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Session variables (Opgelost)

Offline WtFudgE - 29/06/2007 14:46 (laatste wijziging 29/06/2007 14:52)
Avatar van WtFudgENieuw lid Ik heb een probleem met mijn session variables, deze worden namelijk niet doorgegeven. Ik heb al vele forums ligge afzoeke naar fouten, maar ik vind geen oplossing. Ik situeer ff mijn probleem. Het gaat hem om een (nu nog) simpel login systeem.

Ik heb een database met een tabel "Members" met de structuur:

ID int(11) auto_increment & Primaire sleutel
name varchar(50)
pass varchar(50)
ip varchar(50)
status int(11)

Ik heb een site "database.php" waarin ik verbinding maak met mijn database. Hierin wordt ook altijd een sessie gestart -> session_start(), de allom cliché fout.

Vervolgens heb ik een klein stukje code (login.php):

  1. <?
  2. include('database.php');
  3. ?>
  4. <font size=1 face=verdana>
  5. <FORM action="login.php" method="post">
  6. Username:<br>
  7. <INPUT type="text" name="username">
  8. <BR>
  9. Wachtwoord:<br>
  10. <INPUT type="password" name="pass"><br>
  11. <input type="submit" value="submit" name="submit">
  12. </form>
  13. <?
  14. if(isset($_POST['submit']))
  15. {
  16. $username = trim(strtolower($_POST['username']));
  17. $pass1 = $_POST['pass'];
  18. $query = mysql_query("SELECT * FROM Members WHERE name = '$username' and pass = '$pass1'");
  19. $num=mysql_numrows($query);
  20. if($num > 0)
  21. {
  22. print "Your logged in as " . $username . "<br> <a href=logout.php>log out.</a>";
  23. $row = mysql_fetch_assoc($query);
  24. $username = mysql_real_escape_string($username);
  25. $_SESSION['login']=true;
  26. $_SESSION['username']=$username;
  27. $_SESSION['rank']=$row['status'];
  28. echo $_SESSION['login'];
  29. echo $_SESSION['username'];
  30. echo $_SESSION['rank'];
  31. }
  32. else
  33. {
  34. print "You filled in a wrong password and/or username";
  35. }
  36. }
  37. ?>
  38.  
  39. Als ik met de juiste name & pass inlog toont hij de session variables & zegt hij dat ik "ingelogd" ben.
  40.  
  41. Als ik dan vervolgens op de link klik: Log out gaat hij naar deze pagina, deze pagina bevat nog geen logout systeem, het is maar een simpele test of ik hier session variables doorgeef. Deze pagina bevat de code:
  42.  
  43. <?
  44.  
  45. echo $_SESSION['login'];
  46. echo $_SESSION['username'];
  47. echo $_SESSION['rank'];
  48. ?>


Dit toont niets, ik begrijp niet hoe dit kan...
Iemand die mij misschien kan helpen?

Citaat:
Rens edit:
Codetags!

5 antwoorden

Gesponsorde links
Offline Anoniem - 29/06/2007 14:58 (laatste wijziging 29/06/2007 15:01)
Avatar van Anoniem PHP gevorderde session_start() moet bovenaan de pagina, op iedere pagina!

Citaat:
Rens edit:
Lees:
Ik heb een site "database.php" waarin ik verbinding maak met mijn database. Hierin wordt ook altijd een sessie gestart -> session_start(), de allom cliché fout.

Rien edit:
Je leest mijn reactie verkeerd: op iedere pagina bovenaan!
Offline SomaQan - 29/06/2007 15:01
Avatar van SomaQan PHP beginner Probeer dit

  1. <?
  2. include('database.php');
  3.  
  4. if(isset($_POST['submit']))
  5. {
  6. $username = trim(strtolower($_POST['username']));
  7. $pass1 = $_POST['pass'];
  8. $query = mysql_query("SELECT * FROM Members WHERE name = '$username' and pass = '$pass1'");
  9. $num=mysql_numrows($query);
  10. if($num > 0)
  11. {
  12. print "Your logged in as " . $username . "<br> <a href=logout.php>log out.</a>";
  13. $row = mysql_fetch_assoc($query);
  14. $username = mysql_real_escape_string($username);
  15. $_SESSION['login']=true;
  16. $_SESSION['username']=$username;
  17. $_SESSION['rank']=$row['status'];
  18. echo $_SESSION['login'];
  19. echo $_SESSION['username'];
  20. echo $_SESSION['rank'];
  21. }
  22. else
  23. {
  24. print "You filled in a wrong password and/or username";
  25. }
  26. }
  27. ?>
  28. <font size=1 face=verdana>
  29. <FORM action="login.php" method="post">
  30. Username:<br>
  31. <INPUT type="text" name="username">
  32. <BR>
  33. Wachtwoord:<br>
  34. <INPUT type="password" name="pass"><br>
  35. <input type="submit" value="submit" name="submit">
  36. </form>
Offline smoos - 29/06/2007 15:20
Avatar van smoos PHP gevorderde
Citaat:
op iedere pagina bovenaan!

Dat zou niet het probleem mogen zijn.

Ik heb me session start altijd bovenin de config file. en die wordt geinclude. maar boven die include doe ik een define

ontopic
je doet dit
  1. <?
  2.  
  3. echo $_SESSION['login'];
  4. echo $_SESSION['username'];
  5. echo $_SESSION['rank'];
  6. ?>
onderaan je pagina (session_start();) terwijl je dit tog al had gestart in je include?

Zet eens
  1. ini_set('display_errors', true);

boven in je pagina. Dat is een 'must-have' als je aan het testen bent.

En probeer het voorbeeld van SomaQan
Offline marten - 29/06/2007 15:51
Avatar van marten Beheerder
  1. <?php
  2. $_SESSION['login']=true;
  3. $_SESSION['username']=$username;
  4. $_SESSION['rank']=$row['status'];
  5. ?>


veranderen in

  1. <?php
  2. $_SESSION['login']=true;
  3. $_SESSION['username']=$username;
  4. $_SESSION['rank']=$row['status'];
  5. ?>


Try this one 
Offline WtFudgE - 30/06/2007 01:50
Avatar van WtFudgE Nieuw lid Ok het is gelukt, het probleem zat hem in dat ik dacht dat je je sessie moest starten voordat je head tag begon, maar het moest dus echt letterlijk helemaal bovenaan.

@SomaQan: Die extra session_start() was vrij overbodig, zoals ik al zei zit deze in database.php.

@smoos: ik doe daar helemaal geen 2e session_start(), dat is een andere pagina 

@marten: session_write_close(); was niet nodig, maar toch bedankt.

Dus hartelijk bedankt he mannen Ik ben er uit *opgelucht*
Blij dat ik zo snel reacties kreeg.
Keep up the good work!

Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.24s