advertentie

Dit forum is niet langer actief. Voor vragen kun je voortaan terecht in de Vraag & Antwoord-rubriek van PCMweb.nl

 

Ga terug   PCM Forum > Scripting > Scripting

Antwoord
 
Discussietools Weergave
Oud 28 July 2007, 15:54   #1
KiboN
PCM Lord
 
KiboN's schermafbeelding
 
Geregistreerd: 25 April 2005
Locatie: Noord-Holland
Berichten: 1.119
Standaard [PHP] Meerdere cookies

Ik draai Windows Server 2008 Beta 3 Enterprise x86 met IIS7 en PHP 5.2.3-Win32 met de FastCGI module (omdat ISAPI een bug heeft met IIS).

Nu heb ik een probleem, als ik meerdere cookies of sessions (of allebei) probeer te setten dan word alleen de laatste geset.

Voorbeeldje:
PHP-code:
<?php
setcookie
("koekje1""inhoudkoekje1"time()+3600); //met of zonder alle parameters maakt niet uit
setcookie("koekje2""inhoudkoekje2"time()+3600);
setcookie("koekje3""inhoudkoekje3"time()+3600);

if(isset(
$_COOKIE['koekje1']))
echo 
$_COOKIE['koekje1'];

if(isset(
$_COOKIE['koekje2']))
echo 
$_COOKIE['koekje2'];

if(isset(
$_COOKIE['koekje3']))
echo 
$_COOKIE['koekje3'];
?>
De output is dan:
Code:
inhoudkoekje3
terwijl het natuurlijk gewoon de inhoud van alle cookies moet outputten.
(met of zonder dat if(isset()) maakt ook niet uit)
Als er sessions bij staan (session_start() bovenaan) dan word nog steeds alleen de laatste regel geset.

Mijn vraag is dus, kennen jullie dit probleem? Weten jullie er een oplossing voor of een goede hint?
__________________
Het is groen en het PWND, ra ra wat is het?
| Intel Pentium D 940 | ATI Radeon X1900XTX | 2GB DDR2 PC6400 |

Laatst gewijzigd door KiboN : 29 July 2007 om 14:20
KiboN is offline   Met citaat antwoorden
Oud 28 July 2007, 21:49   #2
gvanvoor
PCM Lord
 
gvanvoor's schermafbeelding
 
Geregistreerd: 26 January 2006
Locatie: De gezelligste stad ter wereld: Gent
Berichten: 928
Standaard

Normaal gezien kan je die cookie-waarden pas opvragen bij de volgende pagina-load; dus als de browser ze terugstuurt naar de server...
__________________
If you want to work on your computer: buy a PC. If you want to do work on your computer: buy a Mac.
gvanvoor is offline   Met citaat antwoorden
Oud 28 July 2007, 21:52   #3
KiboN
PCM Lord
 
KiboN's schermafbeelding
 
Geregistreerd: 25 April 2005
Locatie: Noord-Holland
Berichten: 1.119
Standaard

Citaat:
Oorspronkelijk geplaatst door gvanvoor Bekijk bericht
Normaal gezien kan je die cookie-waarden pas opvragen bij de volgende pagina-load; dus als de browser ze terugstuurt naar de server...
Ja natuurlijk, het was ook even een snel voorbeeld scriptje doe maar net alsof ik een keer op F5 druk.

Op de oude (Windows Server 2003 Enterprise met Apache2) server werkte mijn website wel, nu op de nieuwe server werkt het niet meer.
Het PHP script is dus goed, het produceert geen errors (error_reporting E_ALL).
__________________
Het is groen en het PWND, ra ra wat is het?
| Intel Pentium D 940 | ATI Radeon X1900XTX | 2GB DDR2 PC6400 |
KiboN is offline   Met citaat antwoorden
Oud 29 July 2007, 10:50   #4
gvanvoor
PCM Lord
 
gvanvoor's schermafbeelding
 
Geregistreerd: 26 January 2006
Locatie: De gezelligste stad ter wereld: Gent
Berichten: 928
Standaard

Misschien veroorzaakt de setcookie problemen bij de cookies die al bestaan ? ('t is maar een idee) Treedt het probleem ook op als je de waarden weergeeft in een pagina zonder setcookie ?

//Edit:
Al geprobeerd met
print_r($_COOKIE);
?

//Edit2
BTW Heb je dit script geplakt uit je applicatie of overgetijpt ? De namen die je instelt komen nl. niet overeen met die die je opvraagt : koek1 vs. koekje1 etc...
__________________
If you want to work on your computer: buy a PC. If you want to do work on your computer: buy a Mac.

Laatst gewijzigd door gvanvoor : 29 July 2007 om 10:54
gvanvoor is offline   Met citaat antwoorden
Oud 29 July 2007, 14:16   #5
KiboN
PCM Lord
 
KiboN's schermafbeelding
 
Geregistreerd: 25 April 2005
Locatie: Noord-Holland
Berichten: 1.119
Standaard

Citaat:
Oorspronkelijk geplaatst door gvanvoor Bekijk bericht
Misschien veroorzaakt de setcookie problemen bij de cookies die al bestaan ? ('t is maar een idee)
Nee want ik heb het met een nieuw script geprobeerd, en ik heb al mijn oude cookies ook eerst verwijderd.
Het is ook met sessions. Ik heb dat met sessions nog niet echt getest maar ik had dus een script dat eerst een session zette en daarna een cookie, alleen het setcookie werd uitgevoerd totdat ik die regel gecommentarieerd had.

Citaat:
Treedt het probleem ook op als je de waarden weergeeft in een pagina zonder setcookie ?
Ja. Want de cookies worden al niet geset met setcookie. Het ligt dus niet aan het weergeven (Firefox ziet ze niet staan, en ik heb zo'n extensie van httpliveheaders oid die de headers dus opvangt, daar staat het ook niet tussen, behalve de laatste dus)

Citaat:
//Edit:
Al geprobeerd met
print_r($_COOKIE);
?
Ja dat heb ik al geprobeerd, zelfde effect, alleen de laatste van de cookies en/of sessions die aangemaakt moeten worden word uitgevoerd.
Citaat:
//Edit2
BTW Heb je dit script geplakt uit je applicatie of overgetijpt ? De namen die je instelt komen nl. niet overeen met die die je opvraagt : koek1 vs. koekje1 etc...
Ik weer met mijn suffe hoofd, nee ik had snel even getypt toen ik de post maakte, het script in mijn applicatie heeft gewerkt op mijn andere server! Maar nu ik op IIS7 (PHP-FastCGI) zit werkt het niet meer.


Ik denk dus dat het probleem meer serverside ligt, misschien iets in de PHP.ini maar daar kon ik ook niks nuttigs in vinden (paar keer van boven naar beneden doorgespit).
__________________
Het is groen en het PWND, ra ra wat is het?
| Intel Pentium D 940 | ATI Radeon X1900XTX | 2GB DDR2 PC6400 |

Laatst gewijzigd door KiboN : 29 July 2007 om 14:20
KiboN is offline   Met citaat antwoorden
Oud 29 July 2007, 16:19   #6
gvanvoor
PCM Lord
 
gvanvoor's schermafbeelding
 
Geregistreerd: 26 January 2006
Locatie: De gezelligste stad ter wereld: Gent
Berichten: 928
Standaard

Geeft setcookie true terug ? (zou moeten als er geen fouten optreden, maar het is het enige dat ik nog zie als mogelijkheid)
__________________
If you want to work on your computer: buy a PC. If you want to do work on your computer: buy a Mac.
gvanvoor is offline   Met citaat antwoorden
Oud 29 July 2007, 17:11   #7
KiboN
PCM Lord
 
KiboN's schermafbeelding
 
Geregistreerd: 25 April 2005
Locatie: Noord-Holland
Berichten: 1.119
Standaard

Citaat:
Oorspronkelijk geplaatst door gvanvoor Bekijk bericht
Geeft setcookie true terug ? (zou moeten als er geen fouten optreden, maar het is het enige dat ik nog zie als mogelijkheid)
PHP-code:
<?php

if(setcookie("koek1""blaat1"time()+3600)){
 echo 
"ja1<br>";
}else{
 echo 
"nee1<br>";
}

if(
setcookie("koek2""blaat2"time()+3600)){
 echo 
"ja2<br>";
}else{
 echo 
"nee2<br>";
}

if(
setcookie("koek3""blaat3"time()+3600)){
 echo 
"ja3<br>";
}else{
 echo 
"nee3<br>";
}



echo 
"<pre>";
print_r($_COOKIE);
echo 
"</pre>";
geeft:
Code:
ja1
ja2
ja3

Array
(
    [koek3] => blaat3
)
__________________
Het is groen en het PWND, ra ra wat is het?
| Intel Pentium D 940 | ATI Radeon X1900XTX | 2GB DDR2 PC6400 |
KiboN is offline   Met citaat antwoorden
Oud 29 July 2007, 19:20   #8
gvanvoor
PCM Lord
 
gvanvoor's schermafbeelding
 
Geregistreerd: 26 January 2006
Locatie: De gezelligste stad ter wereld: Gent
Berichten: 928
Standaard

Heel vreemd. Net eens geprobeerd hier op mijn machine (apache onder Mac OS) en mits toevoegen van ob_start() en ob_end_flush() werkt dat perfect...
Lijkt mij een bug in een onderdeel van de serversoft (geen idee of het in PHP of de eigenlijke server is). Kan je een onderdeel "downgraden" naar de vorige versie om te zien vanwaar het probleem juist komt ?
__________________
If you want to work on your computer: buy a PC. If you want to do work on your computer: buy a Mac.
gvanvoor is offline   Met citaat antwoorden
Oud 29 July 2007, 20:34   #9
KiboN
PCM Lord
 
KiboN's schermafbeelding
 
Geregistreerd: 25 April 2005
Locatie: Noord-Holland
Berichten: 1.119
Standaard

Citaat:
Oorspronkelijk geplaatst door gvanvoor Bekijk bericht
Heel vreemd. Net eens geprobeerd hier op mijn machine (apache onder Mac OS) en mits toevoegen van ob_start() en ob_end_flush() werkt dat perfect...
Lijkt mij een bug in een onderdeel van de serversoft (geen idee of het in PHP of de eigenlijke server is). Kan je een onderdeel "downgraden" naar de vorige versie om te zien vanwaar het probleem juist komt ?
Ik zou eens oudere versie van PHP er op kunnen zetten, IIS downgraden wil ik niet want dan kan ik niet meer mijn ASP.NET 3.5 websites hosten (ik vraag me trouwens af of je IIS wel kunt downgraden?).
Ik zou eens kunnen proberen om PHP in ISAPI te runnen, maar dan krijg ik weer andere bug (en memory leak) in PHP.
__________________
Het is groen en het PWND, ra ra wat is het?
| Intel Pentium D 940 | ATI Radeon X1900XTX | 2GB DDR2 PC6400 |
KiboN is offline   Met citaat antwoorden
Oud 30 July 2007, 15:55   #10
stonewire
PCM Engineer
 
Geregistreerd: 29 July 2007
Berichten: 228
Standaard

Citaat:
setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction).
je moet setcookie gebruiken VOOR dat je de header stuurt, de header stuur je als je een echo gebruikt, dus moet je setcookie gebruiken voor je wat dan ook verstuurd, zelfs een witregel op de eerste regel van je script kan het al gebeuren dat de header verstuurd is. dit geld trouwens ook voor sessies.

en kan je niet gewoon dit doen: $_COOKIE['koek1'] = "dit is koek nummero uno";
?
stonewire is offline   Met citaat antwoorden
Antwoord


Discussietools
Weergave

Regels voor berichten
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Forumnavigatie


Alle tijden zijn GMT +1. Het is nu 00:29.



Powered by vBulletin Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Nederlandse vBulletin-vertaling door Alacer beschikbaar gesteld door Applinet.