[php] sessie werkt ineens niet meer

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
Ik zit met een nogal vreemd probleem.
Ik heb een pagina met een php-sessie, allemaal prima. Vanaf die pagina open ik met window.open een popup. In die popup kon ik een paar maanden geleden nog gewoon de sessievariabelen gebruiken. Maar nu ineens lijkt dat niet meer te kunnen :(

een print_r($_SESSION); in de popup levert nu: "Array ( )" op, oftewel de sessie is helemaal leeg. Vroeger was dat niet zo, en kon ik alle variabelen daar gewoon gebruiken.

Weet iemand toevallig of Microsoft dat heeft veranderd in de nieuwe Internet Explorers oid? in de oudere internet explorers (5.5) werkt het namelijk nog wel prima momenteel |:(
En, wat kan ik er in dat geval aan doen, want het is erg vervelend.

Acties:
  • 0 Henk 'm!

Verwijderd

Post de code eens van die popup? Heb je je session_start() niet per ongeluk weggehaald?

Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
Dit is de code van mijn popup.
code:
1
2
3
4
<?
session_start();
print_r($_SESSION);
..etc...

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Als het met een andere browser wel werkt, ligt het aan je browser.
Die accepteerd het sessie cookie niet.
Als oplossing zou je het sessieID kunnen meegeven met de URL in plaatst van via een cookie.

Andere oplossing is een P3P-header toevoegen aan je pagina's. IE6 gebruikt deze headers om te bepalen of een cookie zal worden opgeslagen.

Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
P3P header heb ik geprobeerd maar lijkt niets uit te maken.
Ik vind het echt een vervelend probleem, want anders kan mijn hele systeem niet fatsoenlijk een sessie hebben als het niet werkt in popups. Met GET dingen is nou ook niet bepaalt ideaal.
Hoe kan ik het eigenlijk überhaupt debuggen? ik heb geen idee hoe ik zou kunnen zoeken naar waar het fout gaat...

Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
Ik heb even een testserie gemaakt.
Het is een pagina die een sessievariabele zet, met een popup.

start.php
code:
1
2
3
4
5
<?
session_start();
$_SESSION["groen"]="blauw";
?>
<a href="popup.php" target="_blank">popup</a>


popup.php
code:
1
2
3
4
<?
session_start();
print_r($_SESSION);
?>


In mijn internetexplorer (6.0.2900.2180.xpsp_sp2_dgr.050301-1519)
print de popup een lege array. In mijn firefox print de popup netjes
de sessievariabele uit.
Hoe komt het dat mijn internet explorer dat niet (meer) doet, het is echt vervelend. :(

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:37

mulder

ik spuug op het trottoir

Hoe komt het dat mijn internet explorer dat niet (meer) doet, het is echt vervelend.
Zet maar eens je privacy settings lager, de sessie zou moeten blijven bestaan.

Die P3P header zou toch echt moeten werken.

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • KeesV
  • Registratie: September 2001
  • Laatst online: 19:45

KeesV

Zonder titel

Internet Explorer leest (uit veiligheidsoverwegingen waarschijnlijk) geen cookie's die gezet zijn in het parent window, en dus ook niet je session cookie. De oplossing die ik gebruitk heb is het session id mee te geven in de url (via $_GET dus).

PHP:
1
2
3
4
5
6
<?
session_start();
$_SESSION["groen"]="blauw";
$session_id = session_id();
?>
<a href="popup.php?<?=$session_id;?>" target="_blank">popup</a>

en dan in je popup.php:
PHP:
1
2
3
4
5
<?
session_id(strip_tags($_GET['session_id']));
session_start();
print_r($_SESSION);
?>

Hiermee zou je een eind moeten kunnen komen. En het ligt dus niet aan jouw IE, die van mij doet het ook ;)

[ Voor 24% gewijzigd door KeesV op 20-07-2005 19:44 . Reden: PHP kennis is wat roestig.... ]

Ik doe niet aan sigs


Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
Don Facundo schreef op woensdag 20 juli 2005 @ 17:16:
[...]


Zet maar eens je privacy settings lager, de sessie zou moeten blijven bestaan.

Die P3P header zou toch echt moeten werken.
Hoe moet ik die header precies zetten volgens jou? kan ik dat ook eens proberen :)

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:37

mulder

ik spuug op het trottoir

http://nl3.php.net/manual/nl/function.header.php#36932
http://gathering.tweakers...%5Bq%5D=php+p3p&where=GoT


Het is evt ook in IIS en/of Apache(?) in te stellen

[ Voor 18% gewijzigd door mulder op 20-07-2005 20:04 ]

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • mydogisgone
  • Registratie: Februari 2002
  • Laatst online: 22:30

mydogisgone

Watskeburtwithmydog

waar heb je je site gehost? of is het op je localhost?

Mijn hond is nog steeds echt weg! En die komt ook niet weer. :O


Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
ik heb de site gehost op mijn server (linux)
Verder heb ik: header("P3P: CP=\"ALL\"");
bij allebei mijn testfiles zowel boven als onder de session_start()
gezet, maar het werkt nog niet... :(

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:37

mulder

ik spuug op het trottoir

Heb je al getest met lagere privacy settings? (evt IE restarten) Dan kun je uitsluiten of het daar aan ligt.

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Ik neem aan dat de pop-up wel wordt geladen op hetzelfde (sub)domein? In principe worden sessies namelijk opgeslagen per domein. Wanneer je dus (op dezelfde server) de pop-up in een ander domein laadt, dan is de sessie niet meer bekend voor dat nieuwe domein.

Mocht je verder letterlijk de code van KeesV gebruikt hebben ... die moet dan wel zijn:
PHP:
1
<a href="popup.php?session_id=<?=$session_id;?>" target="_blank">popup</a>

Dus met het "session_id=" erbij, anders wordt de variabele niet alszodanig doorgegeven aan je pop-up.

Als je overigens (zoals aan te raden in een test-omgeving) je php "error_reporting(E_ALL);" hebt gezet, dan zal je sowieso in de pop-up al wel een notice hebben gekregen dat $_GET['session_id'] niet bestaat. Maar dat terzijde.

[ Voor 8% gewijzigd door gvanh op 22-07-2005 12:02 ]


Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
hmm, de oplossing van keesV samen met gvanh werkt wel.
Maar omdat ik bijvoorbeeld heel veel .js javascript files heb die window.open doen etc etc,
is het een hels karwei om alles naar .php te converteren en overal de session-id's aan vast te plakken. Het automatisch laten doen door php is ook niet echt een optie.

Heeft niet iemand een P3P oplossing die hij met mijn 2 voorbeeld filetjes van hierboven kan illustreren? Het liefst dan een die wel werkt, want ik heb alle tips geprobeerd, websites gelezen etc, maar ik krijg het met p3p niet aan de gang, terwijl het wel zou moeten kunnen met P3P want daar is het voor ;)
Pagina: 1