[PHP] Vaag sessionprobleem

Pagina: 1
Acties:

Onderwerpen


  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
Ik zit hier met een raar session probleem, ik ben er al geruime tijd mee bezig, misschien heeft iemand een idee..

Wat is het probleem, ik creeër een sessie
PHP:
1
2
3
4
5
6
7
8
9
10
session_cache_expire(3600);
session_set_cookie_params(3600);
session_cache_limiter('private');
            
// start the session and add the information
session_start();                    
        
 // Set sessions
 $_SESSION['strUserName']   = $strUsername;
 $_SESSION['strTypeOfUser']      = $strTypeOfUser;


Als ik vervolgens de volgende pagina opvraag is er niets aan de hand maar word de session gewoon gelezen. Echter, als ik de pagina daarna de sessie probreer te lezen, blijkt deze niet meer te bestaan. De hoeveel tijd dus het openen van de eerste en tweede pagian na het setten van de session blijkt niets uit te maken, als de ik de pagina gewoon herlaad is de session verdwijen

het opvragen van de session doe ik als volg
code:
1
2
3
4
5
6
 // start session
 session_start();
        
// First check if session excist
$bSessionsCheck = isset($_SESSION['strUserName']); 
$bSessionsCheck = $bSessionsCheck and isset($_SESSION['strTypeOfUser']);


De versie van php die op de server draait is 4.3.10, echter een ander project met session, op een vergelijkbare manier blijkt wel gewoon te werken. Ik heb het niet kunnen vinden maar kan de exit(); functie hier roet in het eten gooien? Dat is één van de weinige functies die wel in dit project word gebruikt maar niet dat andere.

[ Voor 3% gewijzigd door martijnvanegdom op 11-09-2005 15:10 ]


  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 05-09 21:19

Wacky

Dr. Lektroluv \o/

Dit is geen W&G maar een P&W topic :)

Nu ook met Flickr account


  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Wat Wacky zegt ;)

Naar P&W

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Heb je zone-alarm draaien toevallig?

  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
Rowanov schreef op zaterdag 10 september 2005 @ 21:00:
Heb je zone-alarm draaien toevallig?
Jep, ik heb zone alarm draaien versie 6.nogwat
- Als het puur aan zone alarm gelegen, gezellig :S

[ Voor 81% gewijzigd door martijnvanegdom op 10-09-2005 21:12 ]


  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
Ik kan we vergissen maar ik had 'm toch in P&W gezet.. althans, mijn browser vind deze pagina een deel van p&W gezien de document title

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

offtopic:
Daar staat ie nu ook, nadat Andre hem heeft verplaatst ;)

ZoneAlarm kan inderdaad sessie problemen opleveren. Wij hebben er last van gehad met een java webapp waardoor klanten niet in konden loggen. ZoneAlarm uit en het werkte ineens wel. Ik zal maandag eens navragen welke instelling van ZoneAlarm het nu precies is.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
Vreemd... zitten er schrijfrechten op de sessie dir?

edit:
Misschien nu een beetje overbodige vraag als ZoneAlarm de boosdoener is....

[ Voor 60% gewijzigd door SWINX op 10-09-2005 21:17 ]

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
Creepy schreef op zaterdag 10 september 2005 @ 21:14:
offtopic:
Daar staat ie nu ook, nadat Andre hem heeft verplaatst ;)

ZoneAlarm kan inderdaad sessie problemen opleveren. Wij hebben er last van gehad met een java webapp waardoor klanten niet in konden loggen. ZoneAlarm uit en het werkte ineens wel. Ik zal maandag eens navragen welke instelling van ZoneAlarm het nu precies is.
Gaat het om de optie privacy -> site list .. waar je kunt aangeven welke sites wat mogen doen?

  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
SWINX schreef op zaterdag 10 september 2005 @ 21:15:
Vreemd... zitten er schrijfrechten op de sessie dir?
Het is de server van hostings provider, en ja er zitten schrijfrechten op die dir, want anders zou een andere app met sessions ook niet werken

  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 13-06 13:45
Martijnvanegdom schreef op zaterdag 10 september 2005 @ 20:19:
het opvragen van de session doe ik als volg
code:
1
2
3
4
5
6
 // start session
 session_start();
        
// First check if session excist
$bSessionsCheck = isset($_SESSION['strUserName']); 
$bSessionsCheck = $bSessionsCheck and isset($_SESSION['strTypeOfUser']);
maak er dit eens van:
code:
1
$bSessionsCheck = ($bSessionsCheck and isset($_SESSION['strTypeOfUser']) ) ;


want de output van het volgende stukje code
code:
1
2
3
4
5
6
7
$bool = true;
$test = 'bb';

$d1 = ($bool AND empty($test));
$d2 = $bool AND empty($test);

var_dump($d1, $d2);

is
bool(false)
bool(true)

terwijl natuurlijk enkel $d1 is wat je bedoelt...

  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
Matthis schreef op zaterdag 10 september 2005 @ 22:45:
[...]


maak er dit eens van:
code:
1
$bSessionsCheck = ($bSessionsCheck and isset($_SESSION['strTypeOfUser']) ) ;


want de output van het volgende stukje code
code:
1
2
3
4
5
6
7
$bool = true;
$test = 'bb';

$d1 = ($bool AND empty($test));
$d2 = $bool AND empty($test);

var_dump($d1, $d2);

is
bool(false)
bool(true)
Haakjes introduceren hier is slechts een vorm van leesbaarheid, voor de php, interperter maakt het geen verschil


Uiterraad is dat de uitkomst, dat is eenvoudige formele logica, het zit 'm niet in deze vergelijiking die heb ik al den treuren gecontroleerd, daarnaast tussen mijn regel 5 en 6 zit nog een aantal andere checks, niet nodig / gewenst om die hier op Got te posten. Echter het heeft er alle schijn van dat het aan ZoneAlarm lag. Echter geen andere computer bij de hand, dus op die check moet ik even wachten

[ Voor 15% gewijzigd door martijnvanegdom op 10-09-2005 23:10 ]


Acties:
  • 0 Henk 'm!

  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 13-06 13:45
Martijnvanegdom schreef op zaterdag 10 september 2005 @ 23:09:
[...]


Haakjes introduceren hier is slechts een vorm van leesbaarheid, voor de php, interperter maakt het geen verschil
Als het slechts een vorm van leesbaarheid is, en geen verschil uitmaakt, waarom verandert de waarde dan wel?

Acties:
  • 0 Henk 'm!

  • Nick The Heazk
  • Registratie: Maart 2004
  • Laatst online: 07-09-2024

Nick The Heazk

Zie jij er wat in?

Ik ben vrij zeker dat het met precedentie te maken heeft.

PHP:
1
2
3
4
5
6
7
8
9
$bool = true;
$test = 'bb';

$d1 = ($bool AND empty($test));
$d2 = $bool AND empty($test);
$d3 = ($bool && empty($test));
$d4 = $bool && empty($test);

var_dump($d1, $d2, $d3, $d4);


bool(false)
bool(true)
bool(false)
bool(false)

de && en || operatoren hebben een hogere precedentie dan 'and' en 'or'. Dit wil zeggen dat bij 'and' an 'or' de eerste voorwaarde sowieso wordt getest. Indien deze waar is wordt de volgende voorwaarde niet meer getest.

Door haakjes rond de twee voorwaarden te plaatsen verplicht je php om de twee voorwaarden te evalueren.

Omdat && en || de hoogste precendentie hebben worden áltijd de twee (of meerdere) voorwaarden ge-evalueerd.

Het enige nut van 'and' en 'or' ligt volgens mij in het 'elimineren' van de tweede voorwaarde. Als de eerste voorwaarde 'waar' opleverd dan slaagt de interpreter de tweede voorwaarde over, en dat bespaard weer wat miliseconden.

Althans dit is wat ik vermoed.

Performance is a residue of good design.


Acties:
  • 0 Henk 'm!

Verwijderd

Volgens de PHP manual heeft AND en OR een lagere precedence dan =. Dit betekent dat ingeval van

code:
1
$d2 = $bool AND empty($test);


$d2 altijd de waarde van $bool krijgt omdat $d2 = $bool eerst wordt geevalueerd.

Acties:
  • 0 Henk 'm!

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Als je zone-alarm dan gewoon even uitzet om het te testen :P

Acties:
  • 0 Henk 'm!

  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
Rowanov schreef op zondag 11 september 2005 @ 09:40:
Als je zone-alarm dan gewoon even uitzet om het te testen :P
Is uiterraad een optie, maar als je zone alarm uitschakelt en het werkt dan wel, dan hoeft het niet automatische te betekenen dat het aan zone alarm ligt, het is wel zeer waarschijnlijk, maar het hoeft niet, daarom even vergelijken met een zone alarm loos systeem, of nog beter een standaard win-install

Acties:
  • 0 Henk 'm!

  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
Verwijderd schreef op zondag 11 september 2005 @ 09:26:
Volgens de PHP manual heeft AND en OR een lagere precedence dan =. Dit betekent dat ingeval van

code:
1
$d2 = $bool AND empty($test);


$d2 altijd de waarde van $bool krijgt omdat $d2 = $bool eerst wordt geevalueerd.
[/qoute]

Beetje raar vind ik dat.. (tenzij = iets anders betekend dan assign)

$bool - empty($test) - $d2 = $bool - ($d2 = $bool) AND empty($test)
0 0 0 0
0 1 0 0
1 0 1 0
1 1 1 1

Volgens mij komt er dan ook uit dat het slecht dan en alleen dan als de beide premissen waar zijn de valuatie true op levert. Heeft er iemand gedetaileerde informatie over de logica van php?

Acties:
  • 0 Henk 'm!

  • Nick The Heazk
  • Registratie: Maart 2004
  • Laatst online: 07-09-2024

Nick The Heazk

Zie jij er wat in?

zoals Zz0_0zZ zegt heeft 'and' en 'or' een lagere precedentie dan = (toekenning).

Klik hier voor een overzichtje van de precedentie regels.

Jou functie wordt als volgt geïnterpreteerd:
PHP:
1
($d2 = $bool) and empty($test)


Hij kent een waarde toe aan $d2 en doet voor de rest niets. Normaal zou je iets als dit schrijven:
PHP:
1
2
$var = ($d2 = $bool) && empty($test)
//je kent een waarde toe aan $d2, die hij samen met empty($test) evalueert.


wat jij bedoelt is het volgende:
PHP:
1
2
$d2 = ($bool and empty($test)) //óf
$d2 = $bool && empty($test)

[ Voor 18% gewijzigd door Nick The Heazk op 11-09-2005 13:39 ]

Performance is a residue of good design.


Acties:
  • 0 Henk 'm!

  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 13-06 13:45
Nick The Heazk schreef op zondag 11 september 2005 @ 13:37:
wat jij bedoelt is het volgende:
PHP:
1
$d2 = ($bool and empty($test))
MAW, zoals ik gisteravond reeds zei...

Acties:
  • 0 Henk 'm!

  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 27-05 17:54
Na wat testen op verschillende systemen, Windows met Zone-Alarm, Windows zonder, Linux en Mac OS X kan ik melden dat het inderdaad aan zonealarm heeft gelegen. Zone-Alarm blijk de cookies te controleren in te stellen in de privacy opties. UIteindelijk bleek dan Zone-Alarm de cookies deels blokte waardoor het niet goed ging. Door de desbetreffende site toe te voegen aan de Site List en de opties accepted in te stellen werkt alles ook ondanks Zone-Alarm

Hartelijke bedankt!
Pagina: 1