Session beindigd in Firefox na klik op link met daarin &id=

Pagina: 1
Acties:
  • 379 views sinds 30-01-2008
  • Reageer

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 27-01 20:38
Ik heb sindskort een heel raar probleem. De website werkte altijd al prima, maar opeens treedt onderstaand probleem op:

Zodra ik in Firefox op een link klik met "&id=" in de URL wordt de sessie beindigd. Dit gebeurt overigens pas nadat de betreffende pagina wel is weergegeven.

Even stap voor stap:

Ik log in, ga naar bijv. klantbeheer en klik op de link "index.php?link=klantbeheer&actie=wijzig&id=1". Vervolgens krijg ik de juiste pagina te zien, maar .. bij elke willekeurige pagina die ik daarna bekijk wordt ik uitgelogd.

Ik ben erachter gekomen dat het alleen gebeurt als er &id= in de URL staat.

Overigens staat in mijn .htaccess-file de volgende regel:
php_flag session.use_trans_sid off

Ik dacht dat dit misschien de ellende veroorzaakte en dat de session_id misschien gemixed zou worden met mijn &id= .. maar, na deze op ON te zetten en het opnieuw te proberen wordt ik weer net zo hard uitgelogd.

Ohja, in IE is er overigens helemaal niets aan de hand en werkt alles prima.

Iemand? :S

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:15

crisp

Devver

Pixelated

Misschien 1 of andere extensie?

Intentionally left blank


  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 10-02 10:04

Eijkb

Zo.

Of je hoster heeft bv. register_global aangezet en gebruik je zelf $_SESSION[id]. Kan je evt. zien met phpinfo();

.


  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 27-01 20:38
Als ik in phpinfo() kijk staat register_globals inderdaad op ON. Maar ik gebruik nergens $_SESSION['id'] ... wel $_GET['id'].

Maar het is raar dat in IE wel alles werkt. Zo'n serverinstelling zou dan toch bij alle browsers hetzelfde probleem moeten geven?

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Eijkb schreef op woensdag 04 oktober 2006 @ 16:17:
Of je hoster heeft bv. register_global aangezet en gebruik je zelf $_SESSION[id]. Kan je evt. zien met phpinfo();
Dat heeft verder niks met elkaar te maken.

Als register_globals aan staat zou $_GET['id'] bestaan alsmede $id. Maar als TS $_SESSION['id'] gebruikt, heeft $_GET['id'] daar geen invloed op.

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 27-01 20:38
Niemand een idee waar het aan kan liggen?

Ik ben nog een beetje aan het testen gegaan maar .. kan het niet vinden.
In de index.php die bij elke pagina geladen wordt heb ik helemaal bovenin de volgende code gezet:
echo "<!-- ".$_GET['id']." -->";
echo "<!-- ".$_SESSION['id']." -->";

Ik wilde zeker weten dat de sessie id niet door de door mijn gebruikte id ging zitten, en .. $_SESSION['id'] blijkt inderdaad gewoon leeg te blijven.

$_GET['id'] krijg gewoon de waarde, maar .. als ik vervolgens weer op een willekeurige andere link klik, dan wordt ik weer uitgelogd.

Ik word uitgelogd zodra ik &id= in de url heb staan. Ook als ik inlog, naar de voorpagina ga http://www.mijnwebsite.nl en vervolgens in de adresbalk &id= erachter zet. Dus: http://www.mijnwebsite.nl/&id=. Dit is natuurlijk een onzin url, maar .. ik word direct uitgelogd. Als ik type http://www.mijnwebsite.nl/&ids= dan is er niets aan de hand en blijf ik ingelogd. HEEEEEEEELUP!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Toon evt. es je script dat checkt op recht-op-ingelogd-te-zijn? Waar vul je jouw $_SESSION? Kan je in je site rondklikken (op links zonder id) en toch ingelogd blijven?

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Waar gebruik jij precies arrays met een id key?

Oftewel, gebruik je $_GET['id'], $_SESSION['id'], $_REQUEST['id'] ?

Ik heb zelf ook wel eens gehad een $_POST['request_hash'] doorsijpelde naar de $_SESSION['request_hash'] bijvoorbeeld.

Ik ontken het bestaan van IE.


  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 27-01 20:38
moozzuzz schreef op donderdag 05 oktober 2006 @ 14:15:
Toon evt. es je script dat checkt op recht-op-ingelogd-te-zijn? Waar vul je jouw $_SESSION? Kan je in je site rondklikken (op links zonder id) en toch ingelogd blijven?
Zodra een gebruiker of admin inlogt wordt er gekeken welke type user hij is. Deze wordt opgeslagen in een sessie-var, en deze controlleer ik op iedere pagina:
PHP:
1
if ($_SESSION["usertype"] == "1"){ pagina laden }

Indien de gebruiker niet is ingelogd is de sessievar leeg, en krijgt hij een foutmelding te zien als hij bepaalde pagina's wil bekijken.

Het systeem is erg ingewikkeld, ik hou per pagina rechten bij in de database .. en check nog veel meer. Lastig dus om de stukken code hier neer te zetten, want daar is toch weinig van te begrijpen.

Om verder op moozzuzz's vraag terug te komen: Ja, ik kan door de site rondklikken op links zonder id en blijf gewoon ingelogd. (In IE blijf ik zowiezo altijd ingelogd en speelt het probleem helemaal niet)
cyberstalker schreef op donderdag 05 oktober 2006 @ 22:40:
Waar gebruik jij precies arrays met een id key?

Oftewel, gebruik je $_GET['id'], $_SESSION['id'], $_REQUEST['id'] ?

Ik heb zelf ook wel eens gehad een $_POST['request_hash'] doorsijpelde naar de $_SESSION['request_hash'] bijvoorbeeld.
Ik gebruik wel $_GET['id'] maar geen $_SESSION['id'] of anderen...

Helemaal consistent ben ik niet geweest .. er zijn verschillende admin-pagina's waarbij ik de ene keer bijvoorbeeld "userid=" gebruik en de andere keer gewoon "id=". Waarbij het bij de eerst genoemde variabele wel gewoon goed gaat, maar bij de tweede niet.

Ik heb op de index.php pagina de onderstaande code geplaatst, en kom nergens een gevulde $_SESSION['id'] tegen, hoewel alles er wel op wijst dat er iets misgaat met de hele sessie. Als ik, nadat ik weer (ongewenst) uitgelogd ben in Firefox, kijk in de bron code naar de inhoud van $_SESSION dan staat er dus ook niets in.
PHP:
1
2
3
4
echo "<!--";
print_r($_GET);
print_r($_SESSION);
echo "-->";

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Ik denk dat ik wel een idee heb in welke richting je het moet zoeken.

PHP ondersteunt het werken met sessies zonder cookies. In dat geval moet het sessie-id per get of post worden doorgegeven. Standaard is de waarde die je daarvoor moet doorgeven geloof ik PHPSESSID. Misschien staat dat in jouw geval op id waardoor php denkt dat je dat sessie-id wilt gebruiken.

Edit: volgens mij moet je in phpinfo naar session.name kijken.

[ Voor 9% gewijzigd door cyberstalker op 06-10-2006 00:59 ]

Ik ontken het bestaan van IE.


  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 27-01 20:38
Zo, ben ik weer! Bedankt voor je reactie!

Ik dacht zelf ook dat ik het in die richting moest zoeken .. maar, in phpinfo() staat bij session.name gewoon "PHPSESSID". Zou dus gewoon moeten werken...

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 27-01 20:38
Na nog wat testen kom ik er nog steeds niet uit.

"php_flag session.use_trans_sid off" maakt geen verschil.
Ook heb ik eens de sessie-ID gevolgd die in een cookie wordt opgeslagen. Ik heb session_start() opgenomen in de index.php, dus zodra ik naar de website ga is er een cookie met de sessie-id.
Vervolgens log ik in, klik op een link waarin &id= voorkomt en word ik dus in Firefox uitgelogd.
Als ik nadat ik uitgelogd ben weer de sessie-id in het cookie opzoek, is deze nog steeds dezelfde als toen ik de eerste keer de pagina opende.

Kan ik hieruit de conclusie trekken dat de sessie dus niet weggegooid is?!
Maar waarom word ik dan wel uitgelogd, en waarom alleen in Firefox? Wat doet Firefox anders dan IE? PHP wordt op de server verwerkt dus als het in IE werkt kan het niet aan de PHP-code liggen, toch?

Ik ben hem helemaal kwijt .......

Edit: Overigens doet Opera het ook niet, net als Firefox.

[ Voor 3% gewijzigd door Wolf3D op 10-10-2006 15:15 ]


  • valkej
  • Registratie: Juni 2006
  • Laatst online: 04-05-2025
Waar het ook nog aan kan liggen is:

Je hebt bijv een session genaam username, binnen de website word er een nieuwe waarde in $username gezet. De waarde van de sessie username word dus overschreven, waardoor je uitgelogd kan worden.

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

valkej schreef op dinsdag 10 oktober 2006 @ 15:50:
Waar het ook nog aan kan liggen is:

Je hebt bijv een session genaam username, binnen de website word er een nieuwe waarde in $username gezet. De waarde van de sessie username word dus overschreven, waardoor je uitgelogd kan worden.
Dit gaat alleen goed (fout dus) als register_globals aan staat. In dat geval krijg je inderdaad dit:
PHP:
1
2
3
$_SESSION['username'] = 'jayvee';
$username = 'valkej';
echo $_SESSION['username']; // print 'valkej', niet 'jayvee'

Is een bug in PHP die niet gefixt wordt (aangezien register_globals deprecated is).

ASCII stupid question, get a stupid ANSI!


  • skabouter
  • Registratie: Oktober 2000
  • Laatst online: 03-02 09:28

skabouter

Skabouter

JayVee schreef op dinsdag 10 oktober 2006 @ 16:08:
[...]
Is een bug in PHP die niet gefixt wordt (aangezien register_globals deprecated is).
Dat is geen bug maar een feature :X

[ Dislect ]


  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
skabouter schreef op dinsdag 10 oktober 2006 @ 16:20:
Dat is geen bug maar een feature :X
offtopic:
Misschien een feature in oude PHP-code, maar eigenlijk toch niet zo logisch.


Ik vrees dat je zal moeten gaan debuggen, dus overal waar je iets met je id doet (al dan niet in een global variable als $_POST, ...), outputten.

Wat ik wel es gehad heb, dat is dat bij een cloaked website dat men met IE niet ingelogd raakte, maar dat is hier niet aan de orde. Met de echte url kon men wel inloggen.

  • sQuarecoW
  • Registratie: Juli 2003
  • Laatst online: 10-02 10:06
Misschien is het inderdaad een extensie in firefox.. probeer eens een clean install (desnoods naast je huidige) van FF?

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 27-01 20:38
Ik heb ff een debug-poging gedaan, maar ik kom niets verder. De sessie is opeens weg.
Ik heb de volgende code boven- en onderaan de index-pagina gezet.
PHP:
1
2
3
4
echo "<pre><!--";
print_r($_GET);
print_r($_SESSION);
echo "--></pre>";

Ik heb eerst eens vergeleken of de inhoud aan het begin van de pagina hetzelfde is als aan het einde. Dit is het geval.
Vervolgens ben ik gaan volgen wat er per pagina met de inhoud gebeurt, maar .. alles gaat goed .. todat opeens de hele inhoud van $_SESSION weg is. Op dat moment word de gebruiker dus ook uitgelogd. Ook op de allerlaatste pagina voordat het mis gaat, onderaan, staan de $_SESSION-variabelen nog goed ingesteld. Op de pagina erna, waar ik dus uitgelogd ben is de hele inhoud van $_SESSION weg. Het kan dus niet het probleem zijn dat ik per ongeluk één van de variabelen overschrijf. Hooguit dat ik de hele sessie overschrijf met niets, of de sessie weggooi, maar die eventuele fout vond ik niet, na enig onderzoek.
sQuarecoW schreef op woensdag 11 oktober 2006 @ 10:38:
Misschien is het inderdaad een extensie in firefox.. probeer eens een clean install (desnoods naast je huidige) van FF?
Het probleem doet zich helaas ook voor in Opera, en in firefox op een andere pc. Ben bang dat het dus toch een bug is ergens in mijn code of .htaccess.
Pagina: 1