login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Sessions zo lang mogelijk

Offline rpgnox - 04/07/2010 21:24
Avatar van rpgnoxPHP interesse Hoe kan ik met het onderstaande script ervoor zorgen dat de taal session zo lang mogelijk wordt opgeslagen? Nu verdwijnt deze na ongeveer een uur

  1. //proc all page display
  2. include('lang.php'); //language detector
  3. class Session
  4. {
  5. var $lang; //Username given on sign-up
  6. var $url; //The page url current being viewed
  7. var $referrer; //Last recorded site page viewed
  8.  
  9. /* Class constructor */
  10. function Session(){
  11. $this->time = time();
  12. $this->startSession();
  13. }
  14.  
  15. function cf($filename){//function to clean a filename string so it is a valid filename
  16. $fp = explode('/',$filename);
  17. $num = count($fp);
  18. return $fp[$num-1];
  19. }
  20.  
  21. /**
  22.   * startSession - Performs all the actions necessary to
  23.   * initialize this session object. Tries to determine if the
  24.   * the user has logged in already, and sets the variables
  25.   * accordingly. Also takes advantage of this page load to
  26.   * update the active visitors tables.
  27.   */
  28. function startSession(){
  29. session_start(); //Tell PHP to start the session
  30.  
  31. /* Set referrer page */
  32. if(isset($_SESSION['url'])){
  33. $this->referrer = $search = $this->cf($_SESSION['url']);
  34. }else{
  35. $this->referrer = "/";
  36. }
  37.  
  38. /* Set current url */
  39. $this->url = $_SESSION['url'] = $this->cf($_SERVER['PHP_SELF']);
  40.  
  41. /* Set user-determined language: */
  42. //set up languages array:
  43. $langs = array('en','nl');
  44. //
  45. if(isset($_GET['lang'])){
  46. if(in_array($_GET['lang'],$langs)){
  47. $this->lang = $_SESSION['lang'] = $_GET['lang'];
  48. }
  49. }
  50. if(!isset($_SESSION['lang']) || !in_array($_SESSION['lang'],$langs)){
  51. $this->lang = $_SESSION['lang'] = language();
  52. }
  53. }
  54. };
  55. /**
  56.  * Initialize session object - This must be initialized before
  57.  * the form object because the form uses session variables,
  58.  * which cannot be accessed unless the session has started.
  59.  */
  60. $session = new Session;
  61.  
  62. ?>

7 antwoorden

Gesponsorde links
Offline Joost - 04/07/2010 23:09
Avatar van Joost PHP expert Door in je php.ini de session lifetime (of iets dergelijks, weet niet of dat de exacte naam is) te verhogen.
Offline Martijn - 05/07/2010 12:57
Avatar van Martijn Crew PHP en wat als je simpel $_SESSION = $_SESSION; neerzet bovenaan je script?
Offline Maarten - 05/07/2010 15:08
Avatar van Maarten Erelid @Martijn: sessie's worden zowieso altijd verlengd zolang je actief bent op de website, dus dat zou behoorlijk nutteloos zijn. Wat hij bedoelt is dat de sessie actief moet zijn als je na bijvoorbeeld 2 uur inactiviteit terugkeert naar de site.
Zoals Joost dus zei is het kwestie van de lifetime te verhogen, maar dan moet men wel rekening houden met het feit dat sessie's op de harde schijf worden bewaard en dat dit dus behoorlijk kan oplopen als je met onnodig veel sessiedata zit.
Offline Stijn - 06/07/2010 21:33
Avatar van Stijn PHP expert Of je moet het anders doen. Je kan de gekozen taal linken aan een IP-adres in een tabel. Je kan nog altijd met sessies werken maar je hebt nu een beter systeem. Stel dat de gebruiker meer dan een uur inactief is en dan actief wordt. Zijn sessie is vernietigd maar jij kan in de tabel kijken via zijn IP adres ($_SERVER['REMOTE_ADDR'] variabele bevat zijn IP adres) wat zijn keuze terug was en zo de sessie herstellen.
Offline Jelmerholland - 07/07/2010 11:09
Avatar van Jelmerholland PHP beginner Je kan toch ook per pagina load een $_COOKIE maken, daar zet je alle $_SESSION variabelen in. Of je werkt volledig met $_COOKIES, maar ik denk dat je met cookies wel iets kan bedenken. Wat ik hier net uit m'n duim zuig, ik weet niet.. is vrij onnozel lijkt mij. Maar je kan er vast wel iets mee bedenken (aangezien je een cookie zolang als dat je zelf wilt kan laten 'leven')
Offline Stijn - 07/07/2010 11:32
Avatar van Stijn PHP expert @Jelmerholland: tot je bezoeker geen cookies ondersteund ;)
Offline Jelmerholland - 08/07/2010 22:30
Avatar van Jelmerholland PHP beginner Daar heb jij dan weer een punt. Maar dat hou je bijna altijd. Javascript ondersteunt ook niet iedereen (meerendeel gelukkig wel) maar zonder JS zou mijn navigatie het niet doen. Aangezien die jquery gebruikt voor zijn animatie.. (onclick is toch wel gewoon html, want dan kunnen ze tenminste nog klikken )
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.202s