|
Pragt.info
Partner site van: www.heinpragt.com (c) Hein Pragt |
![]() |
Zoeken op deze site! |
|
|
Introductie
Cookies zijn kleine stukjes (tekst) informatie die een server naar de browser stuurt met de bedoeling dat de browser deze informatie bij een volgend bezoek deze informatie weer naar de server terug zal sturen. Aangezien HTTP (het Internet protocol waarmee browsers verzoeken kunnen sturen naar servers en servers data terug kunnen sturen naar browsers) zogenaamd 'stateless' is, is na ieder verzoek en reactie van de webserver de transactie afgesloten en elk ander nieuw verzoek zal een nieuwe transactie zijn. Kortom de webserver weet niet dat er relaties zijn tussen verschillende verzoeken om een pagina of data. Dit kan lastig zijn als u bijvoorbeeld aan het telebankieren bent wilt u niet bij iedere pagina opnieuw inloggen. Er zijn twee methodes om relaties te leggen tussen HTTP verzoeken. De eerste is een sessie variabele aan elke link koppelen zodat de webserver kan zien dat het verzoek een samenhang heeft met een eerder verzoek. De tweede methode is het gebruiken van een cookie. Bij het eerste verzoek om een pagina zal de server een cookie naar de browser sturen, die deze zal opslaan. Omdat bij ieder nieuw verzoek van de browser (onzichtbaar voor de gebruiker) de naam en inhoud van de cookie naar de server verzonden zal worden, kan de server een samenhang met een eerder verzoek vaststellen. Op de webserver zal de data van de verschillende verzoeken in een bestandje of in het geheugen bewaard worden (sessie data) waardoor het lijkt alsof de browser gebruiker een samenhangende verbinding heeft met de webserver. Een groot nadeel van cookies is echter dat deze informatie ook privé kan zijn en reclame bedrijven deze cookies misbruikt hebben om informatie over het surfgedrag van de gebruiker vast te leggen. Met de huidige browsers en cookie technologie is dit misbruik echter bijna niet meer mogelijk. U kunt uw browser zo instellen, dat u wordt gewaarschuwd voor cookies, zodat u kunt kiezen of u de cookie wel of niet wilt accepteren. Soms hebt u geen toegang tot een webpagina als u de cookie niet accepteert. Een cookie kan niet worden uitgevoerd als code en het kan geen virussen verspreiden, is uniek en kan alleen worden gelezen door de webserver die u de cookie heeft gegeven. GeschiedenisCookies zijn voor het eerst in Netscape 1.0 geïntroduceerd, Internet Explorer ondersteunde cookies pas vanaf versie 3. Cookies werden pas zichtbaar voor Internetgebruikers toen in Netscape 3 een optie kwam die gebruikers in staat stelde om gewaarschuwd te worden wanneer er geprobeerd werd een cookie te plaatsen. Advertentiebureaus ontdekten het cookie ook en gingen het misbruiken voor het bijhouden van surfgedrag. In 1997 kwam er een voorstel dat browsermakers aanmoedigde om het gebruik van cookies inzichtelijker te maken voor de gebruiker. Het gevolg hiervan was dat de gebruiker vanaf toen kon instellen welke cookies geaccepteerd mogen worden. Cookies kwamen in opspraak toen een bekend Internet advertentiebureau DoubleClick een bedrijf overnam met een grote klantendatabase. DoubleClick wilde de naamsgegevens koppelen aan de profielen van surfers en was van plan deze gegevens te verkopen. Onder druk van verschillende privacy organisaties heeft DoubleClick de gegevens niet verkocht. In 2002 is de eerste P3P recommendation www.w3.org/TR/P3P gepubliceerd door de W3C. Browsers die zich aan deze specificatie houden, accepteren standaard veel minder cookies. De gebruiker kan desgewenst de instellingen van de browser aanpassen. SPECIFICATIE(vertaling oorspronkelijke specificatie van Netscape)Een cookie zal naar de client (browser) verzonden worden als een Set-Cookie header als onderdeel van een HTTP response. Meestal zal de cookie door een CGI script gegenereerd worden. Syntax van de Set-Cookie HTTP Response HeaderDit is het formaat van de data die een CGI script kan toevoegen aan de HTTP headers om een stukje data naar de client (browser) te sturen om deze op een later tijdstip weer terug te ontvangen. Set-Cookie: NAME=waarde; expires=datum; path=pad; domain=naam; secure NAME=waarde expires=datum (optioneel) Wdy, DD-Mon-YYYY HH:MM:SS GMT Dit is gebaseerd op RFC 822, RFC 850, RFC 1036, and RFC 1123, met als enige aanpassing dat de enige geldige tijdzone GMT is en de scheidingtekens tussen de elementen streepjes moeten zijn. domain=naam (optioneel) path=pad (optioneel) secure (optioneel) Syntax van de Cookie HTTP Request HeaderWanneer een HTTP verzoek naar een Internet host gaat zullen er extra headers meegezonden
worden wanneer de cookie vergelijking overeenkomt. Per cookie zal de naam en waarde meegezonden
worden. Hier is het formaat van een cookie header regel: Cookie: NAME1=STRING1; NAME2=STRING2 Aanvullende informatie:
Cookies in PHPsetcookie (PHP 3, PHP 4, PHP 5) Beschrijving:boolean setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]] ) setcookie() defineert een cookie dat wordt meegezonden met de rest van de header informatie. Zoals elke header moeten cookies verzonden worden voordat er output verzonden wordt vanuit uw script (dit is een restrictie van het protocol). Daarom moet u deze functie aanroepen voor enige output, zoals <html> of <head> tags en whitespace. Als er toch output wordt doorgegeven voor het aanroepen van deze functie, dan zal setcookie() falen en FALSE terug geven. Als alles goed is gegaan, geeft hij TRUE terug. Dit wil echter niet zeggen dat de gebruiker het cookie geaccepteerd heeft. Alle argumenten behalve de name parameter zijn optioneel. Als alleen het name argument aanwezig is, wordt het cookie met die naam verwijderd van de remote client. U mag een willekeurig argument ook vervangen door een lege string ("") om dat argument over te slaan. De expire en secure argumenten zijn integers en kunnen niet worden overgeslagen met een lege string. Gebruik in plaats daarvan een nul (0). De expire parameter is een normaal Unix tijds integer zoals wordt teruggegeven door de time() of mktime() functies. De secure geeft aan dat het cookie alleen mag worden verzonden over een veilige HTTPS verbinding. Wanneer cookies eenmaal zijn ingesteld, kunnen ze worden opgeroepen op de volgende pagina met de $_COOKIE of $HTTP_COOKIE_VARS array. Let op dat autoglobals zoals $_COOKIE vanaf PHP 4.1.0 pas aanwezig zijn. $HTTP_COOKIE_VARS bestaat al vanaf PHP 3. Veel voorkomende fouten:Cookies worden niet zichtbaar tot de volgende keer dat een pagina waarop het cookie zichtbaar is wordt geladen. Om te testen of een cookie succesvol is meegegeven, controleer dan voor cookies bij het laden van de pagina voor de cookie verloopt. De verlooptijd kunt u instellen met de expire parameter. Cookies moeten worden verwijderd met dezelfde parameters als waarmee ze werden ingesteld. Cookie namen kunnen aangegeven zijn als array namen en zullen dan aanwezig zijn in uw PHP scripts als array, maar worden bij de gebruiker als aparte cookies opgeslagen. Overweeg explode() of serialize() om één cookie te gebruiken die meerdere namen en waardes bevat. In PHP 3 worden meerdere aanroepen van setcookie() in hetzelfde script verwerkt in omgekeerde volgorde. Als u probeert een cookie te verwijderen voordat u een nieuwe neerzet, moet u het toevoegen doen voor het verwijderen. In PHP 4 worden meerdere aanroepen van setcookie() verwerkt in de volgorde waarop ze worden aangeroepen. Een paar voorbeelden volgen over hoe u cookies kunt verzenden:Voorbeeld 1. setcookie() stuur voorbeelden
setcookie ("TestCookie", $value);
setcookie ("TestCookie", $value,time()+3600); /* verloopt in 1 uur */
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);
Wanneer u een cookie verwijdert moet u zorgen dat de expire datum in het verleden is, om het verwijder mechanisme in de browser te activeren. Er volgen voorbeelden hoe u in het vorige voorbeeld verzonden cookies kunt verwijderen: Voorbeeld 2. setcookie() verwijder voorbeelden
// zet de verlooptijd naar 1 uur in het verleden
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
Let er op dat het waarde deel van het cookie automatisch wordt ge-urlencoded wanneer u het cookie verzendt, en wanneer het wordt ontvangen, wordt het automatisch gedecodeerd en toegewezen aan een variabele met dezelfde naam als de cookie naam. Om de inhoud van ons test cookie in een script te zien, kunt u simpelweg een van de volgende voorbeelden gebruiken: echo $TestCookie; echo $_COOKIE["TestCookie"]; U kunt ook array cookies zetten door array notatie in de cookie naam te gebruiken. Dit heeft het effect dat er evenveel cookies worden neergezet als u array elements hebt, maar als het cookie wordt ontvangen door uw script worden de waarden allemaal geplaatst in een array met de naam van het cookie:
setcookie ("cookie[three]", "cookiethree");
setcookie ("cookie[two]", "cookietwo");
setcookie ("cookie[one]", "cookieone");
if (isset ($cookie)) {
while (list ($name, $value) = each ($cookie)) {
echo "$name == $value<br>\n";
}
}
|
|
Disclaimer. Privacy beleidWij maken gebruik van externe advertentiebedrijven om advertenties weer te geven wanneer u onze website bezoekt. Deze bedrijven gebruiken mogelijk informatie (niet uw naam, adres, e-mailadres of telefoonnummer) over uw bezoek aan deze of aan andere websites om advertenties weer te geven over goederen en services waarin u wellicht geïnteresseerd bent. Als u hierover meer informatie wenst of als u wilt voorkomen dat deze bedrijven deze informatie gebruiken, klikt u op deze link. |