login  Naam:   Wachtwoord: 
Registreer je!
 Forum

error: setcookie()

Offline NightFox - 19/01/2006 14:24
Avatar van NightFoxNieuw lid Ik wil een onthoud functie maken, en daarvoor wilde ik dus cookies gebruiken.
Maar als ik de functie setcookie() wil gebruiken dan komen er helemaal geen cookies bij. Ik controleer de cookies met:

<?php
echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
?>

En om mijn cookies aan te maken doe ik dit:
<?php
setcookie ( "username", $user['username'], time()+31536000, "/", "", 0 );
setcookie ( "key", $key, time()+31536000, "/", "", 0 );
setcookie ( "ip", $_SERVER['REMOTE_ADDR'], time()+31536000, "/", "", 0 );

15 antwoorden

Gesponsorde links
Offline Thomas - 19/01/2006 14:39
Avatar van Thomas Moderator Die laatste twee parameters kun je wel weglaten denk ik.
Weet je zeker dat de cookies niet geset worden?
Je moet de pagina na het setten van de cookies verversen als je wilt controleren of deze geset zijn, je hebt er dus niet direct (meteen na het setten) de beschikking over.
Offline NightFox - 19/01/2006 16:10
Avatar van NightFox Nieuw lid
  1. $cookie= setcookie ( "username", "NightFox", time()+3600, "/", ".php-source.nl" ) or die ( "ERROR: in username" );
  2.  
  3. if( !$cookie )
  4. {
  5. echo "error in het maken van cookie: username";
  6. }
  7. else
  8. {
  9. echo "het maken van de cookie: username is gelukt.";
  10. }
  11. echo "<br>";
  12. if( isset ( $_COOKIE['username'] ) )
  13. {
  14. echo "De username bestaat:<br>";
  15. echo $_COOKIE['username'];
  16. }
  17. else
  18. {
  19. echo "De cookie bestaat toch niet.";
  20. }
  21. ?>
  22. <pre>
  23. <? print_r($_COOKIE); ?>
  24. </pre>


Ik heb dit gedaan. Dan print hij netjes dat de cookie gemaakt is. Maar daarna print hij dat de cookie niet bestaat =\ rara. Ik snap er geen bal van.
Offline kokx - 19/01/2006 16:15 (laatste wijziging 19/01/2006 16:24)
Avatar van kokx Onbekend doe het is zo:
cookie1.php
  1. <?php
  2. $cookie= setcookie("username", "NightFox", time()+3600, "/") OR die("ERROR: in username");
  3. echo "<a href=\"cookie2.php\">laat de cookie zien</a>";
  4. ?>


cookie2.php
  1. <?php
  2. if(isset($_COOKIE['username'])){
  3. echo "De username bestaat:<br />\n";
  4. echo $_COOKIE['username'] ."<br />\n<br />\n<pre>";
  5. print_r($_COOKIE);
  6. echo "</pre>";
  7. }else{
  8. echo "de cookie bestaaat niet<br />\n<br />\n<pre>";
  9. print_r($_COOKIE);
  10. echo "</pre>";
  11. }
  12. ?>

hetgeen wat je fout doet is dat je een cookie niet in dezelfde pagina kan weergeven als waar je hem neerzet. en met jouw voorbeeld doe je dat wel.
Offline NightFox - 19/01/2006 16:26 (laatste wijziging 19/01/2006 16:28)
Avatar van NightFox Nieuw lid En zou het dan een probleem zijn als ik de header() functie gebruik om de gebruiker te redirecten naar een andere pagina?
Offline riekele - 19/01/2006 16:27
Avatar van riekele PHP beginner nee
Offline NightFox - 19/01/2006 16:29
Avatar van NightFox Nieuw lid @kokx: Op jou manier wil het ook niet werken. Dan geeft hij nog steeds de error aan dat de cookie niet bestaat.
Offline Thomas - 19/01/2006 16:32
Avatar van Thomas Moderator
Citaat:
Je moet de pagina na het setten van de cookies verversen als je wilt controleren of deze geset zijn, je hebt er dus niet direct (meteen na het setten) de beschikking over.
Offline NightFox - 19/01/2006 16:37
Avatar van NightFox Nieuw lid Dat maakt niet uit. Ik ververs heb 5x achter elkaar. maar het maakt geen enkel verschil.
Offline kokx - 19/01/2006 18:15 (laatste wijziging 19/01/2006 18:15)
Avatar van kokx Onbekend gebruik je wel 2 verschillende pagina's om cookie's te setten en te lezen? of kijk je of de cookie al bestaat?
Offline NightFox - 19/01/2006 19:16
Avatar van NightFox Nieuw lid Ik heb precies jou voorbeeld gebruikt,maar ik heb het probleem al (maar nog niet de oplossing =\) Het probleem is de time()+3600 functie. Want als ik deze weghaal dan werkt het prima. Alleen word de cookie niet onhouden als ik de browser sluit. Iemand enig id hoe ik dit kan oplossen?
Offline kokx - 19/01/2006 19:29 (laatste wijziging 19/01/2006 19:30)
Avatar van kokx Onbekend Ik heb net even het voorbeeldje getest op m'n localhost.
het werkt gewoon naar behoren. (Ook als ik de browser sluit en start). Ik denk eerder dat er bij jou een probleem is met php ofzo. Als je het op je localhost hebt getest en het niet werkt zou ik het op je webhost even testen.
Offline NightFox - 19/01/2006 19:34 (laatste wijziging 19/01/2006 19:40)
Avatar van NightFox Nieuw lid Ah ik weet het al Als ik de datum functie uitvoer.
date( "d-m-y, H:i:s" )

dan krijg ik dit eruit:
19-01-04, 19:41:24

oftwel het jaar is niet helemaal lekker en zal de cookie nooit aangemaakt worden want die is alweer verlopen. Weet je mischien welke instelling het is om het jaar te veranderen of is die gekoppelt aan de tijd op je pc. (daar kijk ik nu wel even naar)
Offline webstab - 19/01/2006 19:39 (laatste wijziging 19/01/2006 19:40)
Avatar van webstab PHP ver gevorderde
  1. date ("d-m-Y, H:i:s");
Y als hoofdletter voor de volledige notatie.
http://be.php.net/date
Staat je server tijd wel juist? Check dat anders eens met time(); [en vergelijk met een andere server]
Offline kokx - 19/01/2006 19:39 (laatste wijziging 19/01/2006 19:41)
Avatar van kokx Onbekend je kunt ook een datum in de toekomst nemen en die omzetten naar time() met de functie mktime($uur, $minuut, $seconde, $maand, $dag, $jaar);
Offline NightFox - 19/01/2006 19:40 (laatste wijziging 19/01/2006 20:25)
Avatar van NightFox Nieuw lid Helaas, als ik time() print, dan krijg ik netjes de tijd. Maar als ik time()+3600 doe, krijg ik 3600. En dat is niet goed.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.231s