Thomas Luethi: Formular-Variablen, register_globals, isset()

Beitrag lesen

Hallo,

$_REQUEST['meinebox'] bzw. $_GET/$_POST verwenden,
um an die Parameter aus dem Formular oder der URL ranzukommen.
Aber woher weiß ich denn dann, welches von denen ich benutzen muß?

Bei <form method="GET"> bzw. beim Anhaengen an die URL
stehen die Parameter in $_GET und in $_REQUEST.

Bei <form method="POST"> stehen die Parameter
in $_POST und in $_REQUEST.

In $_REQUEST sind $_GET, $_POST und $_COOKIES enthalten.

Ich verwende meist $_REQUEST, dann spielt es keine Rolle,
wenn ich die Formulare mal von GET zu POST umstelle
oder umgekehrt.

Lies dazu auch:
Sollte ich besser GET oder POST verwenden?
http://www.dclp-faq.de/q/q-formular-methode.html

Diese "Superglobalen" Variablen sind beschrieben im PHP-Manual:
Predefined Variables (englisch, die deutsche Uebersetzung ist unvollstaendig/veraltet)
http://www.php.net/manual/en/language.variables.predefined.php und
http://www.php.net/manual/en/reserved.variables.php

Außerdem schade, daß php dadurch viel umständlicher zu schreiben ist.

Dafuer wird es sicherer.

Ein Skript soll ja normalerweise nur eine definierte
Menge von Parametern von "aussen" (GET/POST/COOKIE)
verarbeiten.

Also schreib am Anfang des Skripts die paar Zeilen rein,
um diese Parameter in Variablen zu haben. Gleichzeitig
kannst Du sie auch "harmlos machen" und pruefen, z.B.
ob Parameter, die nur Zahlen enthalten duerfen, wirklich
numerisch sind. Und Du kannst auch gleich die Default-Werte
festlegen. Dann kannst Du im spaeteren Verlauf des Skripts
sicher sein, dass die Variable definiert ist.

$boxjanein=((isset($_REQUEST['meinebox'])) AND ($_REQUEST['meinebox']=='ja')) ? "ja" : "nein";
// jetzt ist die Variable entweder "ja" oder "nein"

$idzahl=(isset($_REQUEST['id'])) ? intval($_REQUEST['id']) : 0;
// Jetzt ist die Variable 0 oder eine andere Ganzzahl.

Von diesem Zeitpunkt an kannst Du im Skript ebenso auf
$boxjanein und $idzahl zugreifen, wie Du es bisher getan hast.
Aber Du kannst sicher sein, dass diese Variablen
a) definiert sind
b) nur Werte enthalten, die Du geprueft hast.

Gruesse,

Thomas