[PHP] Cookies / Form

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Ik vind het maar weird..

got_cookie_test.php:
PHP:
1
2
3
4
5
6
if(!empty($_POST['var'])) {
    setcookie('var', $_POST['var'], time() + 3600);
} else {
    setcookie('var', '', time() - 3600);
}
include 'got_cookie_test_form.php';

got_cookie_test_form.php:
PHP:
1
2
3
4
5
<form action="got_cookie_test.php" method="post" name="form">
    <input name="var" type="text" id="var" value="<? echo $_COOKIE['var']; ?>" />
    <input name="submit" type="submit" value="submit" />
</form>
<? echo "<pre>"; print_r($_POST); print_r($_COOKIE); echo "</pre>"; ?>


Heb het even online gezet, dan kun je zien wat ik bedoel: submit gewoon eens een tekst (bijvoorbeeld 'test'). Dan is $_POST['var'] gewoon 'test', maar $_COOKIE['var'] (nog) niet. Als je vervolgens dat lege field weer submit, wordt $_COOKIE['var'] wel geset, terwijl $_POST['var'] dan toch empty is? Wat de bedoeling is: een leeg field submitten moet ook lege POST en COOKIE vars opleveren, ook als deze daarvoor niet leeg waren (logisch toch?). Wat doe ik verkeerd?

offtopic:
Voor iedereen die wel eens formuliertje maakt: nu kun je goed het verschil zien tussen op enter drukken en op de knop submit klikken om je form te submitten. In het eerste geval wordt de $_POST['submit'] niet meegestuurd, in het twee geval wel.

Acties:
  • 0 Henk 'm!

Verwijderd

Als je met setcookie een cookie plaatst, is deze niet in hetzelfde script op te vragen middels $_COOKIE, dat is pas bij de volgende request.

Bedenk maar eens hoe die cookie waarden worden verstuurd: in HTTP headers.

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Topicstarter
Ah precies, tnx Cheatah! De oplossing is dus om in plaats van te includen een nieuwe header te versturen, dus bv. header('location: got_cookie_test_form.php');