[PHP 5] Sessions en IE werkt niet goed

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
Ik heb de onderstaande code (gestript):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
session_start();
include_once "includes/header.php";

[...]

 if($_GET["accommodation"]=="" && $_GET["activities"]=="") {
   $_SESSION['currheader'] = $_GET["page"];
    echo "do else";
 }
 if($_GET["accommodation"]!="") {
   $_SESSION['currheader'] = $_GET["accommodation"];
   echo "do accommodation";
 }
 if($_GET["activities"]!="") {
   $_SESSION['currheader'] = $_GET["activities"];
   echo "do activities";
 }
include_once "includes/footer.php";
?>


Belangrijk te vermelden is dat het in Chrome en Opera prima werkt, maar in IE8 (met of zonder compatibility mode) niet. Ik zie ook echt niet wat er mis is, maar het lijkt of PHP de code in IE8 in een andere volgorde uitvoert dan andere browsers.

Zoals je ziet wordt er op iedere pagina een SESSION variable gedeclareert, wanneer je naar een andere pagina navigeert moet deze SESSION variable weer worden uitgelezen.
Het gaat ook alleen mis wanneer de $_GET["accommodation"] of de $_GET["activities"] variabele NIET leeg is.
Het vreemde is echter dat het goed gaat wanneer ik regel 8 hierboven wegcomment het wel goed gaat, dus zowieso wordt in IE8 regel 8 altijd uitgevoerd, ondanks dat het IF statement helemaal niet waar is, de tekst "do else" wordt namelijk niet geschreven.

Het lijkt er dus op dat wanneer je op een nieuwe pagina komt regel 8 eerst wordt uitgevoerd voordat includes/header.php wordt ge-include.

Ik heb al alles tig keer nagelopen, ook de IE cookie settings maar kom er echt niet uit... |:( |:(

De webserver draait IIS 6 en PHP 5.2.9-1

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Wat zegt

PHP:
1
var_dump($_GET);


Over zowel $_GET als hij de $_SESSION zou moeten zetten en wat zegt het over $_SESSION nadat deze gezet zou moeten zijn?

Acties:
  • 0 Henk 'm!

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Als die regel 8 wel uitvoert en regel 9 niet, lijkt het me dat er een fout optreed in regel 8. Is er een foutmelding? (eventueel in de errorlog?)
Wel vreemd dat die alleen in IE dat niet goed zou doen aangezien het dan een serverfout zou zijn. Of er moet iets vreemd gebeuren met de GET variable bij een van de browsers.

Sowieso is het handig om te controleren of $_GET['page'] bestaat.

Hier werkt de code trouwens, zowel onder firefox als onder Safari op OSX, ik heb natuurlijk geen IE om te testen.

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
Output daarvan is: array(2) { ["page"]=> string(10) "activities" ["activities"]=> string(8 ) "cultural" }

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
kluyze schreef op woensdag 05 augustus 2009 @ 15:13:
Als die regel 8 wel uitvoert en regel 9 niet, lijkt het me dat er een fout optreed in regel 8. Is er een foutmelding? (eventueel in de errorlog?)
Wel vreemd dat die alleen in IE dat niet goed zou doen aangezien het dan een serverfout zou zijn. Of er moet iets vreemd gebeuren met de GET variable bij een van de browsers.

Sowieso is het handig om te controleren of $_GET['page'] bestaat.

Hier werkt de code trouwens, zowel onder firefox als onder Safari op OSX, ik heb natuurlijk geen IE om te testen.
Nee, er ontstaat geen foutmelding in ieder geval. Het is inderdaad heel vreemd, hij voert regel 8 uit, het lijkt zelfs voordat hij de header include. in de header.php roep ik deze variabele weer op.
Wanneer ik regel 8 namelijk weg commentaar dan krijg ik voor $_SESSION['currheader'] waarde te zien in header.php.

Ik heb trouwens in IE al mijn volledige cache meerdere keren geleegd, maar ook dat maakt niet uit.

Bizar toch dit? 8)7

Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Je code klopt a.d.h.v. je GET variabelen zoiezo niet, het zou eerder zoiets moeten zijn:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php 
session_start(); 
include_once "includes/header.php"; 

[...] 

if(empty($_GET['accomodation']) && empty($_GET['activities'])) {
    $_SESSION['currheader'] = $_GET['page'];
    echo "do else";
}
elseif(isset($_GET['page'])) {
    if($_GET['page'] == 'accomodation') {
        $_SESSION['currheader'] = $_GET['accommodation'];
        echo "do accommodation";
    }
    elseif($_GET['page'] == 'activities') {
        $_SESSION['currheader'] = $_GET['activities'];
        echo "do activities";
    }
    else {
        $_SESSION['currheader'] = 'standaardheader';
        echo "do else"; 
    }
}
include_once "includes/footer.php"; 
?> 

Al is je systeempje uberhaupt niet wat je echt wil. Om het nou veilig te noemen, ik weet niet wat je verder met die gegevens in die sessie doet, maar ik gok er op dat er best wat kwaadwillends mee te doen is :)

[ Voor 91% gewijzigd door flashin op 05-08-2009 16:28 . Reden: nog maar een edit ]


Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 18:27
Heb je de cache in beide andere browsers ook al eens geleegd, of deze afgesloten en daarna weer gestart en het nog eens getest?

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
jbdeiman schreef op woensdag 05 augustus 2009 @ 16:16:
Heb je de cache in beide andere browsers ook al eens geleegd, of deze afgesloten en daarna weer gestart en het nog eens getest?
Jazeker, allemaal gedaan! :)
Ik had trouwens ook de regels 7 t/m 18 eerst als een if elseif else statement geschreven maar dat ging ook niet goed, vandaar dat ik er even 3 if statements van had gemaakt om te kijken waar het nou precies misgaat.
Wanneer het if statement in regel 15 true is zou het if statement van regel 7 false zijn en zowieso niet moeten worden uitgevoerd, toch wordt de SESSIE variable daar toegekend... |:(

Schiet mij maar lek. Nogmaals ook andere code doorgelopen omdat de website ook gebruik maakt van URL rewriting maar ook daar zitten volgens mij geen fouten in... gaat ook mis wanneer ik daarvan stukken code uitzet... :(

[ Voor 53% gewijzigd door Urk op 05-08-2009 16:24 ]


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Zie mijn post. Daarnaast worden dit soort dingen in principe serverside geregeld (behalve dat je sessie ID in een cookie komt te staan) en zou het niet echt moeten uitmaken of het in IE8 niet werkt en in FF wel.

Heb je misschien een linkje waar we kunnen kijken?

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
flashin schreef op woensdag 05 augustus 2009 @ 16:26:
Zie mijn post. Daarnaast worden dit soort dingen in principe serverside geregeld (behalve dat je sessie ID in een cookie komt te staan) en zou het niet echt moeten uitmaken of het in IE8 niet werkt en in FF wel.

Heb je misschien een linkje waar we kunnen kijken?
Ja tuurlijk, de demo omgeving is: link verwijderd (graag de link niet in reply posts gebruiken, anders kan ik hem straks niet weghalen)

Uiteraard worden dit soort dingen serverside geregeld, dat snap ik en zou ook zeker niet moeten uitmaken of je de site bekijkt in IE of Firefox, Opera en Chrome, maar toch is het zo, in IE gaat het gewoon niet goed...

Hoe kan je het zien?
De website heeft voor (bijna) iedere pagina een andere header foto, zodra je naar een andere pagina navigeert laat hij eerst de header foto van de vorige pagina zien en vervolgens wordt er d.m.v. een fade-in effect de header foto getoont van de nieuwe/huidige pagina.

Je kunt het verschil tussen IE en andere browsers goed zien door de volgende klikpaden te doorlopen:

1 --> Activities
2 --> Wildlife (in het rechterblok, alleen de foto werkt nu even, niet het hele blok, dit heb ik tijdelijk even uitgezet vanwege dit probleem)
3 --> Cultural
4 --> Wildlife
5 --> Cultural

Wanneer je schakelt tussen de Wildlife en Cultural pagina's in IE zie je dat de header foto van de Activities hoofdpagina ertussenkomt en dan overfade naar de header foto van de nieuwe pagina.
In andere browsers zie je deze niet en schakelt de header foto netjes tussen de header foto van Wildlife en Cultural..

Als jullie nog vragen hebben dan hoor ik dat graag.

Update 16:58
Vreemd, zie zojuist op een IE7 systeem dat het nu wel goed werkt, misschien eens kijken of het helpt mij IE8 browser volledig te resetten...

Update 17:02
Nee, een volledige reset van IE8 helpt ook niet, het blijft niet werken. Ben benieuwd hoe het bij jullie loopt in IE7 en IE8?

[ Voor 9% gewijzigd door Urk op 14-08-2009 01:54 ]


Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
flashin schreef op woensdag 05 augustus 2009 @ 16:16:
Je code klopt a.d.h.v. je GET variabelen zoiezo niet, het zou eerder zoiets moeten zijn:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php 
session_start(); 
include_once "includes/header.php"; 

[...] 

if(empty($_GET['accomodation']) && empty($_GET['activities'])) {
    $_SESSION['currheader'] = $_GET['page'];
    echo "do else";
}
elseif(isset($_GET['page'])) {
    if($_GET['page'] == 'accomodation') {
        $_SESSION['currheader'] = $_GET['accommodation'];
        echo "do accommodation";
    }
    elseif($_GET['page'] == 'activities') {
        $_SESSION['currheader'] = $_GET['activities'];
        echo "do activities";
    }
    else {
        $_SESSION['currheader'] = 'standaardheader';
        echo "do else"; 
    }
}
include_once "includes/footer.php"; 
?> 

Al is je systeempje uberhaupt niet wat je echt wil. Om het nou veilig te noemen, ik weet niet wat je verder met die gegevens in die sessie doet, maar ik gok er op dat er best wat kwaadwillends mee te doen is :)
Je eerste versie klopte niet, het is namelijk zo dat het if statement zo moet zijn dat hij moet kijken of $_GET['page'] de waarde 'accomodation' heeft, zo niet moet hij kijken of $_GET['page'] de waarde 'activities' heeft, zo niet beide dan moet hij regel 8 uitvoeren:
PHP:
1
$_SESSION['currheader'] = $_GET["page"];)


Enne, nee, gelukkig is er niets kwaadwilligs mee te doen.

Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Internet Explorer 8
array(1) { ["page"]=> string(10) "activities" } array(1) { ["currheader"]=> string(10) "activities" } 
victoria falls
array(2) { ["page"]=> string(10) "activities" ["activities"]=> string(14) "victoria-falls" } array(1) { ["currheader"]=> string(10) "activities" }
wildlife 
array(2) { ["page"]=> string(10) "activities" ["activities"]=> string(8) "wildlife" } array(1) { ["currheader"]=> string(10) "activities" }

Firefox
array(1) { ["page"]=>  string(10) "activities" } array(1) { ["currheader"]=>  string(10) "activities" } do else 
victoria falls
array(2) { ["page"]=> string(10) "activities" ["activities"]=> string(14) "victoria-falls" } array(1) { ["currheader"]=> string(10) "activities" }
wildlife
array(2) { ["page"]=>  string(10) "activities" ["activities"]=>  string(8) "wildlife" } array(1) { ["currheader"]=>  string(14) "victoria-falls" }
Hierboven zie je exact dezelfde sessie gegevens voor IE8 en FF. De foto's verwisselen echter niet goed!
Het is dus wel een heel raar probleem, in IE8 blijft $_SESSION['currheader'] op "activities" staan ipv victoria-falls.


edit: kun je je code proberen te testen op een apache bak?
En kun je een simpele sessionhandler schrijven om even te kijken waar het fout gaat?
Als oplossing kun je misschien de code even ombouwen naar cookies..
Heel vreemd. Google weet ook weinig raad.

[ Voor 21% gewijzigd door flashin op 05-08-2009 20:03 ]


Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
Precies! Het ligt dus niet aan mij 8)7
Is toch bizar, het valt me wel op dat het soms wel lijkt te werken in IE8 op andere externe systemen waarop ik heb getest.
Ook lijkt het niets met de cookie instellingen van IE te maken.

Ik heb hier trouwens 1 systeem met IE7, daar gaat het goed, en op mijn primaire systeem met IE8 werkt het niet in normale mode maar ook niet in IE8 Compatibility mode :?

[ Voor 42% gewijzigd door Urk op 05-08-2009 20:13 . Reden: Toevoeging ]


Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
flashin schreef op woensdag 05 augustus 2009 @ 19:46:
[code]
edit: kun je je code proberen te testen op een apache bak?
En kun je een simpele sessionhandler schrijven om even te kijken waar het fout gaat?
Als oplossing kun je misschien de code even ombouwen naar cookies..
Heel vreemd. Google weet ook weinig raad.
Bedankt voor het meedenken! _/-\o_
Nee, ik heb helaas niet de beschikking over een apache bak, en heb daar ook geen kennis van.
Wel komt de website straks in de live omgeving op een Linux machine te draaien bij Bluehost.

Sorry, maar wat bedoel je precies met: "En kun je een simpele sessionhandler schrijven om even te kijken waar het fout gaat?"

Update 20:29 uur:

Hmmm... we zijn iets verder...
Wanneer ik de Rewrite engine uitschakel dan werkt het wel goed in IE8. :)

Dit is de rewrite code van ISAPI ReWrite:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.63

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.mijndomein\.nl$ [NC]
RewriteRule ^(.*)$ http://mijndomein.nl/$1 [R=301,L]

RewriteRule ^(activities)/(victoria-falls|wildlife|cultural|zambezi-river|adrenaline-relaxing)? index.php?page=activities&activities=$2 [L]
RewriteRule ^(accommodation)/([a-z-]+)? index.php?page=accommodation&accommodation=$2 [L]
RewriteRule ^(photo-gallery)/([a-z-]+)/([a-z-]+)? index.php?page=photo-gallery&photo-gallery=$2&show-photos=$3 [L]
RewriteRule ^(photo-gallery)/([a-z-]+)? index.php?page=photo-gallery&photo-gallery=$2 [L]
RewriteRule ^((?!content|css|images|includes|js|brochure|to)[a-z-]+) index.php?page=$1 [L]


Zit hier dan iets raars waarom het niet zou werken? Regel 7 & 8 wegcommenten lost het in ieder geval niet op...
Regel 7 & 8 zijn straks bedoeld om van http://www.mijndomein.com te redirecten naar http://mijndomein.com.

[ Voor 53% gewijzigd door Urk op 14-08-2009 01:53 ]


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Regel 7 en 8 lossen het niet op? Want het zou kunnen betekenen (heel vreemd hoor) dat de cookie naar een verkeerd domein verwijst ofzoiets. (www.domein.com is iets anders dan domein.com)

Ik zal je rewrite code nog even nakijken, misschien dat er nog wat experts op dit gebied (ben ik niet namelijk) mee kunnen kijken?

edit: het is echter nogal onlogisch dat het de rewrite zou moeten zijn.. dit zou dan in principe in elke browser vrijwel hetzelfde moeten zijn..
kun je toch niet proberen het te testen op een of andere gratis host die apache draait om te kijken hoe die reageert?

[ Voor 29% gewijzigd door flashin op 05-08-2009 21:43 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Installeer iets als XAMPP en ga lekker met mod_rewrite werken ipv. ISAPI dan. Je zegt dat de host waar t komt te draaien linux draait dus die heeft ook geen ISAPI ;)

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
Cartman! schreef op woensdag 05 augustus 2009 @ 22:02:
Installeer iets als XAMPP en ga lekker met mod_rewrite werken ipv. ISAPI dan. Je zegt dat de host waar t komt te draaien linux draait dus die heeft ook geen ISAPI ;)
Waarom? Bovenstaande .htaccess file is volledig compatible met mod_rewrite van Apache.
Bron: http://www.helicontech.com/isapi_rewrite/ en http://www.helicontech.co...ite/doc/compatibility.htm

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 02:37
flashin schreef op woensdag 05 augustus 2009 @ 21:40:
Regel 7 en 8 lossen het niet op? Want het zou kunnen betekenen (heel vreemd hoor) dat de cookie naar een verkeerd domein verwijst ofzoiets. (www.domein.com is iets anders dan domein.com)

Ik zal je rewrite code nog even nakijken, misschien dat er nog wat experts op dit gebied (ben ik niet namelijk) mee kunnen kijken?

edit: het is echter nogal onlogisch dat het de rewrite zou moeten zijn.. dit zou dan in principe in elke browser vrijwel hetzelfde moeten zijn..
kun je toch niet proberen het te testen op een of andere gratis host die apache draait om te kijken hoe die reageert?
Bedankt voor het meedenken flashin, vaag allemaal he?
Als het in geen enkele browser had gewerkt had ik het probleem waarschijnlijk al wel gevonden.

Laten we eens zien als de site deze week live gaat (als het goed is) of het dan wel goed werkt op Apache op Linux. :/

Acties:
  • 0 Henk 'm!

  • Apen-nootjes
  • Registratie: September 2001
  • Laatst online: 03-04 12:48

Apen-nootjes

aka Apen-klootjes

Urk schreef op donderdag 06 augustus 2009 @ 02:27:
[...]

Bedankt voor het meedenken flashin, vaag allemaal he?
Als het in geen enkele browser had gewerkt had ik het probleem waarschijnlijk al wel gevonden.

Laten we eens zien als de site deze week live gaat (als het goed is) of het dan wel goed werkt op Apache op Linux. :/
Daarom zegt Cartman, probeer XAMPP eens uit, dat is echt met 10 minuten geïnstalleerd en dan weet je veel meer :) Kan gewoon op je windows omgeving, en dan heb je wel een complete WLAMP installatie tot je beschikking :)


edit: Zoals de meneer onder mij aangeeft even wat verbeterd ;)

[ Voor 7% gewijzigd door Apen-nootjes op 06-08-2009 12:31 ]

SmartDoDo: Ach, afhankelijk van je smaak kan het best een lekker geil ding zijn :P
You never had a date you couldn't inflate


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
WAMP dan natuurlijk ;) In die 10 minuten kun je nog een grote boodschap doen trouwens, het is 4 keer op volgende klikken en klaar.
Pagina: 1