login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help
Categorieën > PHP & SQL

sessies in een database

roy – 12/04/2010 21:47 (Laatst gewijzigd op 24/04/2010 18:18)
Hoi,

Ik bewaar de sessies in de database, IPV in een bestand op de server.

ik gebruik de volgende code:
  1. <?php
  2. class session {
  3. var $conn;
  4.  
  5.  
  6. function session($conn) {
  7. $this->conn = $conn;
  8. }
  9.  
  10. function adodb_sess_open($save_path, $session_name) {
  11.  
  12.  
  13. return true;
  14. }
  15.  
  16. function adodb_sess_close() {
  17. global $ADODB_SESS_CONN;
  18.  
  19. if ($ADODB_SESS_CONN)
  20. $ADODB_SESS_CONN->Close();
  21. return true;
  22. }
  23.  
  24. function adodb_sess_read($key) {
  25. global $ADODB_SESS_CONN,$ADODB_SESS_INSERT;
  26.  
  27. echo $rs = $this->conn->Execute("SELECT data FROM sessions WHERE sesskey = '$key' AND expiry >= ".time());
  28. if ($rs) {
  29. $v = $rs->fields[0];
  30. if ($rs->EOF)
  31. $ADODB_SESS_INSERT = true;
  32. $rs->Close();
  33. return ($v) ? $v : '';
  34. }
  35. $ADODB_SESS_INSERT = true;
  36. return false;
  37. }
  38.  
  39. function adodb_sess_write($key, $val) {
  40. global $ADODB_SESS_INSERT,$ADODB_SESS_CONN,$ADODB_SESS_LIFE;
  41.  
  42. //$expiry = time() + get_cfg_var("session.gc_maxlifetime");
  43. $expiry = time() + 5;
  44. echo $expiry;
  45. $qry = "UPDATE sessions SET expiry=$expiry,data=".$this->conn->qstr($val, get_magic_quotes_runtime())." WHERE sesskey='$key'";
  46. echo $qry;
  47. $rs = $this->conn->Execute($qry);
  48.  
  49. if ($rs)
  50. $rs->Close();
  51. if ($ADODB_SESS_INSERT || $rs === false) {
  52. echo $qry = "INSERT INTO sessions VALUES ('$key',$expiry,".$this->conn->qstr($val, get_magic_quotes_runtime()).")";
  53. $rs = $this->conn->Execute($qry);
  54. if ($rs)
  55. $rs->Close();
  56. }
  57.  
  58. return isset($rs);
  59. }
  60.  
  61. function adodb_sess_destroy($key) {
  62. global $ADODB_SESS_CONN;
  63.  
  64. $qry = "DELETE FROM sessions WHERE sesskey = '$key'";
  65. $rs = $this->conn->Execute($qry);
  66. if ($rs)
  67. $rs->Close();
  68. return $rs;
  69. }
  70.  
  71. function adodb_sess_gc($maxlifetime) {
  72. global $ADODB_SESS_CONN;
  73.  
  74. $qry = "DELETE FROM sessions WHERE expiry < ".time();
  75. $rs = $this->conn->Execute($qry);
  76. if ($rs)
  77. $rs->Close();
  78. return true;
  79. }
  80.  
  81.  
  82. }
  83.  
  84.  
  85.  
  86. ?>



Hoe weet ik op een volgende pagina welke sessie van mij is, zodat ik kan checken of mijn sessie nog bestaat ?


Grt,
Roy


Pagina:

23 antwoorden

Gesponsorde links
Daisycon - Verdien geld met uw website

Gerard – 12/04/2010 22:03
Je zal dan iets moeten hebben op de computer van de bezoeker, om deze te kunnen identificeren. Je mag zelf 1 keer raden wat dat is ;)

cloudstrife – 12/04/2010 22:07
Je kan je sessies gaan beheren door ze in een database op te slaan, op die manier kan je zelf wat extra managment gaan toepassen. Je zal echter wel nog steeds beroep moeten doen op de sessie functionaliteit van de server, en dus via de sessionId telkens de gegevens uit de database moeten gaan halen bij iedere call.

Raze – 13/04/2010 16:18
idd, sessies blijven zelf nodig, of gegevens opslaan via een cookie, maar cookies zijn manipuleerbaar, wat het al een stuk onveiliger maakt.

roy – 13/04/2010 22:02
Hoe werkt dat dan?

Ik maak bijvoorbeeld een sessie:
$_SESSION['user'] = "Tester";

Hoe kan ik deze waarde op de volgende pagina weer ophalen ?
Het session_id() is 8eh337ukncti75m76rrtb4jj14

Graag wat uitleg over hoe ik dit kan realiseren.

Grt,
Roy de Kleijn

cloudstrife – 14/04/2010 09:35
Voorbeeldje:

Gebruiker logt in:
- creatie sessie dus heb je een session_id
- schrijf gegevens weg in de database met de bijhorende session_id

Gebruiker gaat naar pagina 2;
- je hebt je session_id nog dus doe je een query op je database met als key die session_id om de data op te halen.

larssy1 – 14/04/2010 09:50
@roy..
Sessies zijn bedoelt om lang mee te gaan.
session_id() verandert dus niet =)


Joost – 14/04/2010 16:58
http://nl.php.n...andler.php

Ik denk dat je met die uitleg er wel moet komen!

roy – 16/04/2010 22:01 (Laatst gewijzigd op 17/04/2010 21:40)
OK, maar hoe haal je nu de waarden uit de sessie op de tweede pagina ?
Kan je misschien een voorbeeldje geven?

cloudstrife – 18/04/2010 13:10
roy schreef:
OK, maar hoe haal je nu de waarden uit de sessie op de tweede pagina ?
Kan je misschien een voorbeeldje geven?


Iets in de aard van "SELECT velden FROM mijnsessietabel WHERE session_id= uw session_id()"

Toch niet zo moeilijk? Bij het inloggen schrijf je gegevens weg in de tabel met als key uw session_id, op al de andere pagina's kan je aan de hand van die session_id gewoon een query doen op die tabel eh voila je hebt al de gegevens van uw sessie die je op een vorige pagina al had weggeschreven.

roy – 18/04/2010 16:09
ok,

  1. <?PHP
  2. function sess_read($sess_id) {
  3. global $dbc;
  4. print "Session read.\n";
  5. $sQuery = "SELECT data FROM sessions WHERE id='".mysql_real_escape_string($sess_id)."'";
  6. $rs = $this->conn->GetAll($sQuery);
  7. if (count($rs) == 1) {
  8. list($data) = $rs;
  9. return $data;
  10. } else {
  11. return '';
  12. }
  13.  
  14. }
  15. ?>


Overschrijft de standaard sessie functie. Hoe gebruik ik deze eenvoudig ?

Heeft iemand ervaring met het opslaan van sessies in een database, door middel van de "session_set_save_handler". Kan diegene dan wat uitleg geven.


Alvast bedankt,
Roy

Gesponsorde links


Pagina:

Dit onderwerp is gesloten.
Actieve forumberichten:

© 2002-2012 Sitemasters.be - Regels - Gehost door: Vircon - Laadtijd: 0.095s