[php] session verbroken zonder reden?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een site gemaakt, deze werkt met sessions voor het inlog systeem.
Het inloggen werkt goed, maar soms sluit hij zonder enige reden een sessie. Dus na het inloggen over de site browsen dan wil hij nogwel eens spontaan uigelogged zijn. Dit is erg vervelend voor klanten.

Ik ben op het moment _denk_ ik scriptblind, dus dat ik over iets kleins heen kijk.

Ik maak gebruik van een includesysteem voor mijn functies en dingen die op iedere pagina geladen moetten worden.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//dit staat boven alle pagina's
include "session.php"; //session's laden
$sessionnaampje = "naam";
//meer includes maar niet zinnig voor dit topic

//session.php
session_start();
$gebruikersinfo = array();
if (session_is_registered($sessionnaampje)) {
  //maken van array's op basis van de session userid.
  //deze array bevat informatie als: userid, rechten, etc.
  $gebruikersinfo["db"] = mysql_fetch_array(mysql_query("SELECT * 
FROM users WHERE gebruikersid=".$_SESSION[$sessionnaampje]["id"]." LIMIT 1;"));
  $gebruikersinfo["lgt"] = 1;
} else {
  //als sessie niet gezet is, dan even de rechten op basic zetten.
  $gebruikersinfo["db"]["access"] = 200; //anonymous
  $gebruikersinfo["lgt"] = 0; //niet ingelogged
}

//login.php
//het ding dat bovenaan alle pagina's staat
//cache killer(via headers), alleen bij login/out.
//na post(dus aanmaken van sessie) komt dit, hoe ik post is niet relevant denk ik.
//de $id komt uit de database, deze wordt goed gezet iig.
$_SESSION[$sessionnaampje]["id"] = $id;

//admin.php
//het ding dat bovenaan alle pagina's staat
if ($gebruikersinfo["lgt"]==1) {
  if ($gebruikersinfo["db"]["access"]>=2000) {
    //gebruikersrechten boven 2000, dus je mag dit en dat doen.
  } else {
    //je mag niet hier komen
  }
} else {
  $_SESSION["to"] = "admin.php"; //hierheen NA het succesvol inloggen.
  header("Location: login.php");
}


Dit is de basis van mijn code, ik heb het net 2x nagelopen maar vedder gebruik ik niets speciaals, alleen wat je hier ziet.

Het probleem zit hem er in dat _OPEENS_ de sessie verloren gaat, zonder dat ik het venster sluit. Ik heb nog niets gebruikt voor cookie handlers(enzo) voor het langer bestaan van een sessie, dit is nog niet nodig.

Mijn vraag:
Waarom sluit hij zomaar mijn sessie? Is dit mijn PHP Code of mijn hosting die iets vaags doet met sessies? Ik kan vanuit mijn ftp(hoofdgebruiker) niet de sessie directory zien, dit is namelijk een shared server waar ik het script op aan het testen ben. Dus ik kan niet uitsluiten dat mijn hosting zomaar mijn sessies afbreekt.
Mijn hosting zecht dat ze dit NIET doen, maar ik vertrouw ze voor geen meter(ja ik ga er asap weg, eerst eigen server online hebben).

Het probleem is dat het de ene keer WEL werkt, de andere keer NIET.
Soms kan ik met gemak 3 a 4 uur op de site werken zonder dat ik mezelf opnieuw hoef in te loggen. Soms moet ik 10x in 5 minuten inloggen.
Als het in het begin goed wekt dan blijft het werken. Werkt het niet goed dan ben ik binnen 2 a 3 nieuwe pagina's weg.
Ik kan vaak dus de admin panel wel openen, maar als ik dan iets wil veranderen(dus nog 1 of 2 klikken) dan is _OPEENS_ de gebruiker uitgelogged.

Voor de liefhebbers:
phpinfo();

Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

Tja, ik heb ook altijd gekloot met sessions gehad, volgens mij is dat echt iets wat fout ingesteld is op sommige servers. Mijn eigen phpservertje is daarom door mij heilig verklaart. Veel makkelijker developpen!! Door een iets oudere php versie te draaien ben ik ook zeker van compatibiliteit op de echte server. Probeer het eerst op een andere server zou ik zeggen... Zou mij niets verbazen als hij het daar wel doet...

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb even de vraag neergelegt bij een nederlands hosting bedrijf waardat ik redelijke contacten me heb. Om te kijken ofdat ik op hun server even mag texten.

Vedder maak ik in mijn script gebruik van multieview url's( http://www.site.nl/file/waarde/waarde ), dit kan ik niet doen op een Windows pc, dus ben gebonden aan externe instanties.

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Verwijderd schreef op 17 August 2003 @ 01:48:
Ik heb even de vraag neergelegt bij een nederlands hosting bedrijf waardat ik redelijke contacten me heb. Om te kijken ofdat ik op hun server even mag texten.

Vedder maak ik in mijn script gebruik van multieview url's( http://www.site.nl/file/waarde/waarde ), dit kan ik niet doen op een Windows pc, dus ben gebonden aan externe instanties.
Kun je daarvoor niet gebruik maken van mod_rewrite? Die wertk wel op windows en zo kan je het beestje alsnog laten werken op een Windows bak...

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • paulh
  • Registratie: Juli 1999
  • Laatst online: 29-08 09:58
Verwijderd schreef op 17 August 2003 @ 01:48:
Ik heb even de vraag neergelegt bij een nederlands hosting bedrijf waardat ik redelijke contacten me heb. Om te kijken ofdat ik op hun server even mag texten.

Vedder maak ik in mijn script gebruik van multieview url's( http://www.site.nl/file/waarde/waarde ), dit kan ik niet doen op een Windows pc, dus ben gebonden aan externe instanties.
Dit werkt wel op een windows pc als je php met isapi koppelt in plaats van met cgi.

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dingstje schreef op 17 augustus 2003 @ 01:53:
Kun je daarvoor niet gebruik maken van mod_rewrite? Die wertk wel op windows en zo kan je het beestje alsnog laten werken op een Windows bak...
Die heb ik dus nooit echt werkend gekregen, ik weet hoe ik hem aanzet(httpd.conf), maar hoe ik hem dan zo kan instellen dat hij het goed doet? Dan moet ik weer handleidingen gaan lezen, en dan snap ik er nog niets van.

damn, nou mis ik de search

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Verwijderd schreef op 17 August 2003 @ 13:40:
[...]

Die heb ik dus nooit echt werkend gekregen, ik weet hoe ik hem aanzet(httpd.conf), maar hoe ik hem dan zo kan instellen dat hij het goed doet? Dan moet ik weer handleidingen gaan lezen, en dan snap ik er nog niets van.

damn, nou mis ik de search
In een .htaccess file:

RewriteEngine On
RewriteRule ^nieuws/(.*) view_nieuws.php?id=$1

is simpel voorbeeldje maar ik snapte heel 't boeltje (alé, de basis toch hé ;-)) iig met dit voorbeeldje :-P

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ga niet een script van 200kb omscripten omdat ik het op windows wil gebruiken. Ik maak gebruik van $REQUEST_URI, die explode ik op slash( / ), ik moet dus zorgen dat windows het gewoon onbeperkt slikt, en dan vanzelf.
Maarja, dat wordt dus gewoon wachten op de hosting maatschapij, want volgends mij is dit niet mogelijk(heb er ooit naar gezocht, maar scheen niet echt mogelijk wat ik wou).
Ik wil gewoon een file/waarde/waarde2 naar php zelf sturen. Niet rewriten, want het herscripten is niet prettig.

[ Voor 8% gewijzigd door Verwijderd op 17-08-2003 15:56 ]


Acties:
  • 0 Henk 'm!

  • Hmmbob
  • Registratie: September 2001
  • Laatst online: 12:25
zeg, wat ik mij afvraag, moet session_start() niet ALTIJD als eerste aangeroepen worden?
Je roept het nu altijd aan via een include, maar vl mij moet session_start() als eerste na de <? beginnen...

[ Voor 2% gewijzigd door Hmmbob op 17-08-2003 16:01 . Reden: typo ]

Sometimes you need to plan for coincidence


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Groentenboer schreef op 17 augustus 2003 @ 15:58:
zeg, wat ik mij afvraag, moet session_start() niet ALTIJD als eerste aangeroepen worden?
Je roept het nu altijd aan via een include, maar vl mij moet session_start() als eerste na de <? beginnen...
Nee dit hoeft niet helemaal bovenaan te staan. Dit mag je gewoon in een include neerzetten. ZOLANG je maar geen data (lees output) gaat versturen.
Pagina: 1