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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
    //-- vergelijk
    if ($_POST["naam"] && $_SESSION["login_id"] && $_COOKIE["login_pass"])
    {

        //-- doe iets
        echo "..";
    }

?>


En wanneer je het toont op het scherm gebruik je het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
    echo "postnaam: $_POST[naam]<br />";
    echo "session: $_SESSION[login_id]<br />";
    echo "cookie: $_COOKIE[login_pass]";
?>


Succes met debuggen. Misschien breid ik deze tutorial nog wel even uit.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Netjes en overzichtelijk programmeren
  2. Parse errors
  3. MySQL errors
  4. Variabelen? Superglobals!

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.