[PHP] Sessions en popups

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BlackBeltBob
  • Registratie: Oktober 2008
  • Laatst online: 30-11-2024
Beste allen,

Ik zoek nu al een tijdje naar een oplossing voor het volgende probleem, maar kan geen passend antwoord vinden op fora en google...

ik heb een pagina waarin ik met een session aan het werken ben. Daaraan voeg ik variabelen toe zoals:

$_SESSION["piep"] = "hoi";

nu bevat de pagina een link die er als volgt uit ziet:

<a onclick="window.open('print.php?week=7&naam=Bob Wansink&id=119&type=0', 'printer', 'toolbar=no, statusbar=no, scrollbars=yes, resizable=yes, top=10, left=10, width=700, height=800')" href="#">Afdrukken</a>

zodra ik op de link druk opent zich dus een popup schermpje met daarin print.php. Deze pagina start met:

<?PHP
session_start();
var_dump($_SESSION);
?>

ik verwacht dan als uitkomst dat de sessie mijn variabele "piep" bevat. Niets is minder waar. De sessie is helemaal leeg... Ik heb geprobeerd om voor session_start nog session_id() uit te voeren, en die aan print.php via $_GET mee te geven, maar ook dat verhelpt niets. De id is gelijk aan index.php, maar de sessie is nog steeds leeg. Overigens kan ik daarna nog wel de sessievariabelen gebruiken in het hoofdscherm (index.php).

Het vreemde is dat dit gedrag browser-onafhankelijk is en alleen bij een van onze klanten zich voordoet.

Weet een van jullie hoe je de sessie kan doorgeven aan een popup scherm en wat er precies mis kan gaan hierin?

Alvast bedankt!

Bob

"There are no stupid questions, only stupid people."


Acties:
  • 0 Henk 'm!

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 14:12

Kettrick

Rantmeister!

Ik vermoed dat dit weinig met het popup verhaal te maken heeft, maar meer met je sessie handling in een van de files. Wat gebeurt er als je de url gewoon in je browser opent ?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Dan vermoed ik dat t ligt aan dat die ene klant geen cookies accepteert. Je volgende pagina weet zonder dat sessionid gewoon niet welke sessie die persoon op dat moment heeft.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Het doorgeven zou automatisch moeten gebeuren. Ik vermoed dat die ene klant cookies uit heeft staan, en de manier waarop je die popup aanroem ervoor zorgt dat de sessie-ID niet via GET doorkomt.

Edit: Te laat :)

[ Voor 4% gewijzigd door Hydra op 25-02-2009 15:13 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • BlackBeltBob
  • Registratie: Oktober 2008
  • Laatst online: 30-11-2024
@ roelz :
dan toont hij ook niet de variabele, hoewel er tussen niet veel gebeurt behalve twee includes die op elke pagina worden ge-include en een isset() op drie $_GET variabelen...

@ de rest:
bedoel je dat de cookies uit staan op de server of op de client pc? Want ik kan met FF op mijn computer ook het probleem reproduceren als ik zijn website opvraag, terwijl ik een kopie van de website op mijn eigen server heb staan waar het wel goed gaat...

[ Voor 45% gewijzigd door BlackBeltBob op 25-02-2009 15:42 ]

"There are no stupid questions, only stupid people."


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Het lijkt in ieder geval alsof cookies niet werken. Waar dat door komt zul je zelf uit moeten zoeken. Staan ze wel in de response headers?

https://niels.nu


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Klant heeft een eigen server? Dan zou ik zijn phpinfo eens opvragen. Goed kans dat daar iets grandioos stuk is.

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


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Volgens mij snapt ie niet dat cookies iets clientside-erigs is ;) Opzich zoekt PHP zelf uit zover ik weet of ie de session via get/form meegeeft maar omdat jouw link via JS verloopt past ie daar de link niet in aan. Simpelweg het sessionid meegeven via die link zal je probleem wel verhelpen maar netjes is dat niet voor de personen waarbij cookies wel werken.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
MueR schreef op woensdag 25 februari 2009 @ 16:27:
Klant heeft een eigen server? Dan zou ik zijn phpinfo eens opvragen. Goed kans dat daar iets grandioos stuk is.
Ik zou in ieder geval gewoon eens beginnen met kijken of je uberhaupt cookies terugkrijgt.

https://niels.nu


  • BlackBeltBob
  • Registratie: Oktober 2008
  • Laatst online: 30-11-2024
Heb net even wat uitgezocht.

Als ik de session id mee geef via $_GET en begin met:

<?PHP
session_id(strip_tags($_GET["sid"]));
session_start();

dan wordt de sessie alsnog leeg gelaten/nieuwe sessie aangemaakt.

Als ik print.php aanspreek in de adresbalk blijft het probleem bestaan... Nader onderzoek toont zelfs aan dat tussen de verschillende pagina's geen sessie data blijft bestaan. Zo is er een weeknummer dat gekozen kan worden. Dit nummer wordt bijgehouden zodat ze niet steeds van weeknummer hoeven te wisselen. Nu blijkt dat tussen de verschillende pagina's (index.php?ref=2 en index.php?ref=3) ook deze sessiegegevens niet worden bijgehouden. Het was me nog niet eerder opgevallen omdat bij het ontbreken van gegevens defaultgegevens worden aangesproken...

Ik ga phpinfo even afstruinen op zoek naar de session instellingen. Misschien dat ik in de vergelijk met mijn eigen server iets kan vinden. Misschien heeft de servergebruiker wel geen rechten op de session.save_path map?

"There are no stupid questions, only stupid people."


  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 14:12

Kettrick

Rantmeister!

BlackBeltBob schreef op donderdag 26 februari 2009 @ 10:48:
Misschien heeft de servergebruiker wel geen rechten op de session.save_path map?
Als dat het geval is moet je zeker even je error_reporting checken, dit wordt je nl. redelijk duidelijk gemaakt door PHP :)

Check ook even of er uberhaubt session cookie's gezet worden, dat is mij uit je hele verhaal nog niet echt duidelijk geworden :P

  • BlackBeltBob
  • Registratie: Oktober 2008
  • Laatst online: 30-11-2024
ik heb error_reporting op E_ALL gezet, zometeen krijg ik de resultaten te zien...

Waar kan ik checken of (en waar) session cookies gezet worden?

"There are no stupid questions, only stupid people."


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
<? phpinfo();?>

  • BlackBeltBob
  • Registratie: Oktober 2008
  • Laatst online: 30-11-2024
en waar in phpinfo? Gezien phpinfo ongeveer 3000 regels bevat en niet iedere optie een naam heeft waarvan je direct snapt wat de functie ervan is...

"There are no stupid questions, only stupid people."

Pagina: 1