[PHP] Sessie op onwillekeurige tijden zomaar weg.

Pagina: 1
Acties:

Onderwerpen


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03 14:05

intermusic

Marc Hoekstra

Topicstarter
Hallo...

Ik heb een inlogscript waarbij de gebruikersnaam wordt geregistreerd:
PHP:
1
$_SESSION['sess_username'] = $username;

Het inloggen en het schrijven van een sessie gaat perfect.
De ingelogde gebruiker kan alles doen in het hele systeem, alleen op totaal onwillekeurige tijden, ongeacht wat de gebruiker voor handeling doet, is de sessie WEG!

De check wordt gedaan met:
PHP:
1
2
if(!isset($_SESSION['sess_username'])) {
}

Echt alles werkt perfect aan het hele systeem, alleen de ingelogde gebruiker wordt zomaar, zonder reden uitgelogd op onwillekeurige tijden.

SERVER:
NOVELL netware
PHP / mySQL

PHPINFO:


Directive Local Value
session.auto_start Off
session.cache_expire 180
session.cache_limiter nocache
session.cookie_domain no value
session.cookie_lifetime 0
session.cookie_path /
session.cookie_secure Off
session.entropy_file no value
session.entropy_length 0
session.gc_maxlifetime 1440
session.gc_probability 1
session.name PHPSESSID
session.referer_check no value
session.save_handler files
session.save_path SYS:/php/sessiondata
session.serialize_handler php
session.use_cookies On
session.use_trans_sid 1

Ik hoop dat iemand mij zou kunnen helpen...

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03 14:05

intermusic

Marc Hoekstra

Topicstarter
Een toevoeging!
Ben ik net achtergekomen:
Mijn include file waar gechecked wordt of sessie bestaat:

check.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
session_start();
if(!isset($_SESSION['sess_username'])) {
//if(!session_is_registered('username')){
    echo "U bent nog niet ingelogd!<br>";
    echo "Klik <a href=\"index.php\">hier</a> om in te loggen.";
    exit;
} else {
    //kijken of gebruiker toegang heeft tot agenda
    if (!in_array($goto, $access)) {
        echo "U bent wel ingelogd, maar u heeft geen toegang tot ".$goto.".";
        exit;
    }
}
?>


Begin van de file die beveiligd moet zijn en het include bestand oproept:

index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
session_start();
?> 
<html>
<head>
<title>Agenda</title>
</head>
<body>
<?
include("check.php");
include("../config.inc.php");
if ($action == "")


Je ziet dat ik, en in de include file, en in de index file session_start() doe.
Ik heb dit inmiddels veranderd en geunmarked in check.php.
Zou het uit kunnen maken dat ik twee keer session_start() doe??

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11:24

TwoR

Gekleurde stippen

Ja je moet die session_start() in check.php weglaten volgens mij.

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03 14:05

intermusic

Marc Hoekstra

Topicstarter
Ben er achter gekomen dat het niets uit maakt...
Nog steeds zonder reden is de sessie weg uit de map sessiondata.

Echt zwaar minder dat ik dit probleem nou heb want morgen is mn laatste stagedag...

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

intermusic schreef op 30 January 2003 @ 14:09:
Ben er achter gekomen dat het niets uit maakt...
Nog steeds zonder reden is de sessie weg uit de map sessiondata.

Echt zwaar minder dat ik dit probleem nou heb want morgen is mn laatste stagedag...
Welke versie PHP gebruik je??? 4.1.2 heeft namelijk een erg grote bug bij de sessies waardoor deze af de sessie kwijt raakt.

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03 14:05

intermusic

Marc Hoekstra

Topicstarter
Het is PHP 4.2.3 for netware.
Want de server is novell netware...
Maar raakt, bij die bug, de server de sessies onwillekeurig kwijt?

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

$_SESSION support in PHP 4.1.2 is BROKEN! dont go crazy like I did trying to figure it out. You will have to upgrade if you want to use sessions.
http://bugs.php.net/bug.php?id=16043
note this buggy version is in the current ftp updates for Redhat 7.2 and 7.3 - it also has a major security flaw.
Dit is dus wat er bij php.net staat. Wij gebruiken ook 4.1.2 en het ging fout bij sessie data te schrijven vlak voor een header-redirect te zetten. Vervolgens maakte php een nieuwe aan. Oplossing bij ons was door session_id mee te geven in de header en zo de sessie de hele tijd kunstmatig open te houden. Het rare is dus dat het alleen op een enkel punt voor kwam in de applicatie en de rest geen enkel probleem gaf.

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03 14:05

intermusic

Marc Hoekstra

Topicstarter
Kan je mij een voorbeeld geven hoe je de session_id meegeeft in de header?

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

intermusic schreef op 30 januari 2003 @ 15:58:
Kan je mij een voorbeeld geven hoe je de session_id meegeeft in de header?
Niet helemaal in de header, bedoelde dus gewoon als wij de header zette voor de url er gewoon via een get bij zetten...

Op pagina 1:
PHP:
1
header ("rara.php?sid=".session_id() );


en op rara.php:
PHP:
1
2
3
4
5
if (isset($_GET["sid"])
   session_id($_GET["sid"]);
else
   exit("No session, no glory!");
session_start();


Let dus op dat je die session_id voor de session_start initialiseert. :P

[ Voor 17% gewijzigd door Banpei op 30-01-2003 16:06 ]

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03 14:05

intermusic

Marc Hoekstra

Topicstarter
Ik ben achter het volgende gekomen:

Wanneer ik vroeg op de dag in ga loggen, staan er in de map sessiondata nog sessions van de vorige dag. Mijn session komt er dan bij te staan...
Ben ik op een gegeven moment weer willekeurig(zomaar) uitgelogd, dus is mijn sessie weg, en ik kijk dan in de map sessiondata, dan zijn alle sessies, inclusief die van gister, weg.

Dus... De server (apache? PHP?) heeft een grote schoonmaak gehouden...
Het is ook zo dat de sessie ook niet weggehaald wordt als de window afgesloten wordt, wat eigenlijk wel moet...
Dus blijven er sessies in staan van de vorige dag... ZOu dat het probleem kunnen veroorzaken?

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03 14:05

intermusic

Marc Hoekstra

Topicstarter
Hey...
Ik ben blij...
Het probleem is opgelost!!
Wat heb ik gedaan?

In de php.ini file heb ik het volgende veranderd:

; Percentual probability that the 'garbage collection' process is started
; on every session initialization.
session.gc_probability = 0
Deze stond op 1.

Maar waarschijnlijk gooit de server nou nooit meer oude sessies weg, maar dit doe ik dan met een "on_exit" functie in mijn php script, welke een php scriptje opend die de sessie "destroyed".

Eindelijk opgelost...

Bye bye
Pagina: 1