[PHP] Cookie zetten vanuit functie in class werkt niet

Pagina: 1
Acties:
  • 35 views sinds 30-01-2008

  • bendedit
  • Registratie: Oktober 2003
  • Laatst online: 22-12-2025
Beste allemaal,

Ik ben bezig met een loginsysteem mbv cookies alleen werkt het zetten van een cookie in een bepaalde situatie niet:

Het gaat om de volgende situatie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class cookie {
    function cookie() {
        //Constructor
    }
    
    function setCookie() {
        $value = "Hallo allemaal";
        setcookie("tekst", $value, time() + 3400);
    }
}

$c = new cookie();
$c->setCookie;

print_r($_COOKIE);


Wanneer je de inhoud van de functie setCookie in de constructor zet wordt er wel een cookie geplaatst. Tevens geldt dit wanneer je vanuit de constructor $this->setCookie() aanroept... Waarom werkt het dan niet op de manier zoals het hierboven staat?

bvd

ps

Heb het getest in php 4 en 5

  • TRON
  • Registratie: September 2001
  • Laatst online: 17-02 12:21
Wanneer cookies eenmaal zijn ingesteld, kunnen ze worden opgeroepen op de volgende pagina met de $_COOKIE array.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
Check de PHP manual effe: http://nl2.php.net/setcookie
Common Pitfalls:

* Cookies will not become visible until the next loading of a page that the cookie should be visible for. (...)

[ Voor 7% gewijzigd door maartenba op 23-05-2006 15:04 ]


  • bendedit
  • Registratie: Oktober 2003
  • Laatst online: 22-12-2025
Ja dat begrijp ik, daar zit het probleem alleen niet. Misschien heb ik het niet volledig toegelicht maar de pagina wordt eerst wel (handmatig) gerefresht nadat een cookie is gezet. Anders zou het in de aangegeven werkende situaties ook niet werken..

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

http://www.php.net/print_r ;)
Print leesbare informatie over een variabele uit
Uitlezen gebeurd dus wel, echter geeft de array dus geen waarde terug... :)

Wat de TS kan proberen om te controleren of hij daadwerkelijk leeg is
PHP:
1
2
3
4
if(empty($_COOKIE['naam'])
{
    echo 'Hij is leeg :(';
}


Accepteerd de door jou gebruikte browser(s) eigenlijk wel cookies?

Door de posting hier onder me, kun je de mijne vergeten, dat is namelijk je oplossing... :)

[ Voor 23% gewijzigd door CH4OS op 23-05-2006 15:13 ]


  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-07-2024
Net effe getest:
PHP:
1
2
3
4
5
// Vervang:
$c->setCookie;

// Door:
$c->setCookie();

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:02
Dan vraag ik me al of de Error Level wel op E_ALL staat?, want zo'n fout (verwijzen naar een niet bestaande variabele binnen de class) moet een beetje compiler er toch wel uit halen. Hetzij een error geven of alleen een warning.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Ik weet wel zeker dat ie niet op E_ALL staat dan. ;) Wat maartenba zegt klopt gewoon, en daar had je, bendedit, prima zelf achter kunnen komen door een beetje te debuggen. Het eerste wat je bij een dergelijke fout controleert tijdens het debuggen is namelijk of die functie überhaupt wel uitgevoerd wordt, wat hier dus duidelijk niet het geval kàn zijn. ;)

Lees ook even Programming FAQ - Debuggen: hoe doe ik dat? door, daar heb je waarschijnlijk wel wat aan. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.