[PHP] Session werkt niet in firefox en safari, wel in ie

Pagina: 1
Acties:

  • Erkel
  • Registratie: Mei 2006
  • Laatst online: 07-11 10:51
Geachte mede tweakers,

Ik heb een probleem met mijn site (alweer), als ik via mijn site inlog met IE, dan wordt de sessie gewoon gestart. En kan ik alle pagina's bereiken waarvoor ik ingelogd moet zijn, en als ik in FF of Safari inlog, wordt de sessie dus niet goed gestart en kan ik niks.

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
// Set session variables
session_start();
$_SESSION["username"]= $username;
$_SESSION["id"]= $result["user_id"];
$_SESSION["userrights"] = $result["user_rights"];
if ($_SESSION["userrights"] == NULL){ ?>
<meta HTTP-EQUIV="REFRESH" content="0; url=error.php">
<?php } else { ?>
<meta HTTP-EQUIV="REFRESH" content="0; url=succes.php">
<?php  } ?>

Ik gebruik trouwens meta om problemen met session() en header() uit te sluiten.

Het echo'en van de sessie in firefox en safari laat ook zien dat de sessie niet gestart wordt. Maar als ik de volgende pagina met alleen die code open in Firefox:
PHP:
1
2
3
4
5
6
7
<?
$_SESSION['userrights'] = "blaat";
if ($_SESSION["userrights"] == NULL){
    echo "NULL";
} else {
    echo 'Not NULL';
} ?>

Dan wordt er wel 'Not Null' ge-echo'ed. Zonder dat ik een een sessie start.

Heeft iemand een idee wat het probleem kan zijn? Ik dacht altijd dat sessies browser onafhankelijk waren. En het lijkt me niet dat er een fout in mijn code zit, ander had het niet gewerkt in IE.

C2D E6600 - 2048MB Kingston - Sapphire HD2900XT - 200Gb Samsung - Asus P5B-E


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Ik gebruik trouwens meta om problemen met session() en header() uit te sluiten.
Daar kun je beter goede code voor schrijven, dan heb je dat probleem helemaal niet.
Het echo'en van de sessie in firefox en safari laat ook zien dat de sessie niet gestart wordt.
Bedoel je dat je ipv die meta refresh een echo 'succes' / 'fail' gezet hebt? In dat geval zou ik eens naar $result kijken. Wat geeft een var_dump($result["user_rights"]) en een var_dump($_SESSION["userrights"])?
En weet je zeker dat je niet eerst naar succes.php gestuurd wordt, en dat succes.php je weer naar een loginbox stuurt?

  • Erkel
  • Registratie: Mei 2006
  • Laatst online: 07-11 10:51
GlowMouse schreef op woensdag 28 mei 2008 @ 15:21:
[...]

Daar kun je beter goede code voor schrijven, dan heb je dat probleem helemaal niet.
Zoals? Ik heb veel mensen met problemen gezien, die ik ook had, maar geen mensen met een oplossing.
GlowMouse schreef op woensdag 28 mei 2008 @ 15:21:
[...]

Bedoel je dat je ipv die meta refresh een echo 'succes' / 'fail' gezet hebt? In dat geval zou ik eens naar $result kijken. Wat geeft een var_dump($result["user_rights"]) en een var_dump($_SESSION["userrights"])?
Ik heb naar een andere pagina gelinkt waar de session-vars ge echo'ed worden.
GlowMouse schreef op woensdag 28 mei 2008 @ 15:21:
En weet je zeker dat je niet eerst naar succes.php gestuurd wordt, en dat succes.php je weer naar een loginbox stuurt?
Ja dat weet ik zeker want dan werkt het niet in IE.

[ Voor 10% gewijzigd door Erkel op 28-05-2008 15:40 ]

C2D E6600 - 2048MB Kingston - Sapphire HD2900XT - 200Gb Samsung - Asus P5B-E


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-09 20:59
Je moet in al je pagina's waarin je de sessie wilt gebruiken, session_start() aanroepen.

PHP:
1
session_start();
Erkel schreef op woensdag 28 mei 2008 @ 15:14:
...
Het echo'en van de sessie in firefox en safari laat ook zien dat de sessie niet gestart wordt. Maar als ik de volgende pagina met alleen die code open in Firefox:
PHP:
1
2
3
4
5
6
7
<?
$_SESSION['userrights'] = "blaat";
if ($_SESSION["userrights"] == NULL){
    echo "NULL";
} else {
    echo 'Not NULL';
} ?>

Dan wordt er wel 'Not Null' ge-echo'ed. Zonder dat ik een een sessie start.
..
Dat is natuurlijk wel een heel lomp voorbeeld, je zet eerst die variabele, dan is het logisch dat ie 'Not NULL' echo-ed natuurlijk. PHP zal die inhoud gewoon toewijzen aan $_SESSION['userrights'], hij wordt alleen niet in de sessie opgeslagen als er geen sessie gestart is.

Ik zou zeggen kijk de handleiding van PHP Sessions er nogeens op na.

If I can't fix it, it ain't broken.


  • Erkel
  • Registratie: Mei 2006
  • Laatst online: 07-11 10:51
Borizz, mijn probleem is niet dat de sessie helemaal niet werkt, hij werkt wel in IE maar niet in andere browsers. Dat is dus het probleem. Maar ik kan nergens iets vinden over het verschil in IE en bijv. FF in het starten en aanroepen van session-vars.

Elke pagina waar van sessie variabelen gebruik wordt gemaakt start ik de sessie gewoon. Ik begrijp alleen niet waarom het in IE wel werkt, en in FF niet.

EDIT: Probleem opgelost. session_start(); werd aangeroepen nadat er al browser output was gegeven. session_start naar eerste regel verplaatst -> probleem opgelost.

[ Voor 16% gewijzigd door Erkel op 29-05-2008 09:03 . Reden: Oplossing gevonden ]

C2D E6600 - 2048MB Kingston - Sapphire HD2900XT - 200Gb Samsung - Asus P5B-E


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 11-11 10:24

Bosmonster

*zucht*

Toch handig soms, die foutmeldingen...

error_reporting(E_ALL);

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 23:35

MueR

Admin Devschuur® & Discord

is niet lief

De werking van sessies is niet afhankelijk van een browser. Het zal PHP aan zijn reet roesten met welk brouwsel jij de pagina opvraagt. Het enige wat de browser zou kunnen doen (als jij het zelf aan zet) is cookies weigeren.

Anyone who gets in between me and my morning coffee should be insecure.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Erkel schreef op donderdag 29 mei 2008 @ 08:57:
EDIT: Probleem opgelost. session_start(); werd aangeroepen nadat er al browser output was gegeven. session_start naar eerste regel verplaatst -> probleem opgelost.
Dat geeft iets van 4 warnings of zo, was je die allemaal professioneel aan het negeren?

Professionele website nodig?

Pagina: 1