Variabelen? Superglobals!
Ik ben ze zelf al verschillende keren tegen gekomen. Mensen die vragen 'mijn formulier wil niet versturen, wat is er fout aan'. Ze gebruiken dan ipv. super globals, gewoon een variabele met de naam. Ik geef je twee voorbeelden, 1 met het gebruik van super globals, en 1 zonder:
Hartstikke fout sinds PHP versie 4 en hoger. De namen van het formulier (naam, email en bericht) worden letterlijk als variabele gebruikt. Dus aangeroepen via $naam, $email en bericht.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//-- bekijk of de waardes ingevuld zijn
if ($submit && $naam && $email && $bericht)
{
//-- stuur een e-mail bijvoorbeeld
mail("[email protected]", "Onderwerp", "Bericht", "From: [email protected]");
}
//-- zo niet toon het formulier
else
{
echo "
<form method=\"POST\" ACTION=\"$PHP_SELF\">\n
<p>\n
Naam:<br />\n
<input type=\"text\" name=\"naam\" size=\"30\" /><br />\n
Email:<br />\n
<input type=\"text\" name=\"email\" size=\"30\" /><br />\n
Bericht:<br />\n
<textarea name=\"bericht\" rows=\"5\" cols=\"40\"></textarea>\n
</p>\n
</form>";
}
?>
In plaats van de variabele bij hun naam noemen ($naam, $email en $bericht) moet je superglobals gebruiken. Dit is in dit geval $_POST.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//-- bekijk of de waardes ingevuld zijn
if ($_POST["submit"] && $_POST["naam"] && $_POST["email"] && $_POST["bericht"])
{
//-- stuur een e-mail bijvoorbeeld
mail("[email protected]", "Onderwerp", "Bericht", "From: [email protected]");
}
//-- zo niet toon het formulier
else
{
echo "
<form method=\"POST\" ACTION=\"$PHP_SELF\">\n
<p>\n
Naam:<br />\n
<input type=\"text\" name=\"naam\" size=\"30\" /><br />\n
Email:<br />\n
<input type=\"text\" name=\"email\" size=\"30\" /><br />\n
Bericht:<br />\n
<textarea name=\"bericht\" rows=\"5\" cols=\"40\"></textarea>\n
</p>\n
</form>";
}
?>
Dit is precies hetzelfde met sessions, een formulier die de method 'GET' gebruikt, en cookies. Gebruik ipv de letterlijke naam de volgende variabelen:
Voor POST formulieren: $_POST
Voor GET formulieren: $_GET
Voor SESSIONS: $_SESSION
Voor COOKIES: $$_COOKIE
In een statement gebruik je het zo:
En wanneer je het toont op het scherm gebruik je het zo:
Succes met debuggen. Misschien breid ik deze tutorial nog wel even uit.