Cookies en veel voorkomende fouten

Info 
Door: LegendaryDC Moeilijkheidsgraad: 2/3
Geplaatst op: 24-03-2005Reacties: 7(Bekijken)
Views: 6218 (gem. 3.1152 per week) Log in om zelf te reageren
 Waardering:8.5/10 (4 stemmen)

Cookies zijn handig, inderdaad. Het zijn die dingetjes er voor zorgen dat je niet altijd je usersname en wachtwoord moet invoeren bij het bezoeken van een forum of site.
We zullen er maar direct invliegen.

//cookies schrijven//

Hieronder een vorbeeld van een cookie

#Code
1
setcookie("naamvande cookie", “waarde van cookie”, tijd );



Een cookie bestaat voornamelijk uit drie delen, de naam van de cookie, de waarde van de cookie en de tijd hoe lang het op de pc van de bevoegde moet staan.

Hieronder een voorbeeld van een cookie dat je echt kan gebruiken:

#Code
1
setcookie("nickname", “Legendary”, time()+3600);


Dus de cookie met de naam ‘nickname’, en met de waarde ‘Legendary’, blijft 3600 seconden dus één uur op je pc staan.


//cookie oproepen//
Nu staat de cookie op de PC van de bezoeker maar wat daarna?
Daarna kan je de cookie oproepen door de functie:

#Code
1
$_COOKIE[“naamvancookie”]


Als ik dan bijvoorbeeld dit doe:

#Code
1
echo($_COOKIE[“nickname”]);


Geeft hij netjes ‘Legendary’ weer. Dat komt omdat ik al een cookie heb wegeschreven met de naam ‘nickname’ en de waarde ‘Legendary’.


//cookies verwijderen//
Je kan ook cookies verwijderen. Hiervoor bestaat geen speciale functie dus zullen we een klein trucje moet uitvoeren:


#Code
1
setcookie("nickname", “Legendary”, time()-3600);


Zoals je ziet schrijf je eigelijk een cookie weg in het ‘verleden’. Hiermee verwijder je een bestaande cookie moest die er al op staan.

//een veel voorkomende fout//
Een veel voorkomende foutmelding die je krijgt als je cookies schrijft is deze:

Cannot add header information - headers already sent by
(output started at …..

Dit komt omdat je output wegschrijft voor je setcookie() .
Een output is een regel tekst die je wegschrijft naar de browser zoals dit

#Code
1
echo(“Hello World”);


Als je dit doet VOOR je setcookie() krijg je problemen

Er zijn twee oplossingen, je zet je setcookie() helemaal vanboven je code. Of je gebruikt de functies ob_start(); en ob_end_flush();

Je moet dus helemaal boven in je code, op de allereerste regel dit zetten
#Code
1
2
3
<?php
ob_start();
?>


En helemaal onderaan op de laatste regel dit:

#Code
1
2
3
<?php
ob_end_flush();
?>


Deze twee regeltjes php zorgen er voor dat al je output even word opgeslagen en pas op het einde van de code word weergegeven. Zo kan er dus onmogelijk output geweest zijn voor je setcookie()

7 reacties
LegendaryDC Geplaatst op 24-01-2006 om 11:46
Avatar van LegendaryDC

Nieuwsposter
als je een onbeperkt cookie wilt gebruiken dan moet je gewoon geen tijd instellen dus bv

setcookie("naamvande cookie", “waarde van cookie” );
Zain Geplaatst op 14-12-2005 om 23:40
Avatar van Zain

Regular
juh, ik moet zo te zien tijd instellen :P hoelang koekje moet blijven bestaan..

nuja, zelfde als echte koekjes : onbeperkte zijn liever :)
Blizt Geplaatst op 12-12-2005 om 18:54
Avatar van Blizt

Webmaster
Een onbeperkt koekje nick? :P
Zain Geplaatst op 12-12-2005 om 18:30
Avatar van Zain

Regular
hmm, en een onbeperkt koekje?
LegendaryDC Geplaatst op 01-04-2005 om 16:21
Avatar van LegendaryDC

Nieuwsposter
ik heb de voorbeelden gehaald uit een code ik geschreven heb om er zeker van te zijn dat hij werkt.
dus normaal kunnen hier geen problemen optreden.

geef anders de foutmelding eens weer en maak je gebruik van de twee onderstende functies?
rogier.slag Geplaatst op 31-03-2005 om 21:03
Avatar van rogier.slag

Moderator
dit werkt gewoon anders. Stel je vraag desnoods op het forum, mocht je ergens niet uitkomen
Michielvsb Geplaatst op 31-03-2005 om 17:15
 

Regular
Ik heb alles gedaan wat je gezegd hebt en krijg veel fouten. Kun je eens een voledig werkende cookie schrijven?

Om te reageren moet je ingelogd zijn.
Nog niet geregistreerd? Doe dat dan nu!

Check je domein...


Terug naar gewone pagina

Websitemaken wordt gehost door Nucleus.be