GET auf einen bestimmten Wert prüfen
Klaus
- php
0 Auge0 Klaus
0 Der Martin0 Felix Riesterer
Guten Abend,
ich möchte gerne prüfen ob in GET einen bestimmten Wert steht. Derzeit sieht es so aus
if (isset($_GET["show"])) {
echo "OK";
}
ich möchte aber ein Schritt weiter gehen, der ganze Bereich sollte nur angezeigt werden wenn in $_GET["show"] eine 1 steht. Wie könnte ich dieses umsetzten?
Meine Idee war:
if (isset($_GET["show"] == 1)) {
echo "OK";
}
da erhalte ich leider einen Server Fehler 500
Hallo
ich möchte … ein Schritt weiter gehen, der ganze Bereich sollte nur angezeigt werden wenn in $_GET["show"] eine 1 steht. Wie könnte ich dieses umsetzten?
Meine Idee war:
if (isset($_GET["show"] == 1)) { echo "OK"; }
da erhalte ich leider einen Server Fehler 500
Mit isset()
prüfst du die Existenz einer Variable, nichts weiter. Wenn du ihre Existenz und den Wert prüfen willst, musst du auch beides tun.
if (isset($_GET["show"]) and $_GET["show"] == '1') { // GET-Werte sind immer Strings!
echo "OK";
}
Wenn du nicht gegen einen Wert, sondern eine Gruppe von Werten prüfen willst, kannst du die Prüfung gegen ein Array vornehmen.
$pruefArray = array('1', '3', '7', '15'); // erlaubte Werte
if (isset($_GET["show"]) and in_array($_GET["show"], $pruefArray)) {
echo "OK";
}
Tschö, Auge
Guten Abend Auge,
vielen Dank für deine Ausführliche Erklärung. Ich hatte dieses if ( empty ($_GET['vorname']) == 1 ) auf http://www.php-kurs.com/formularauswertung-mit-php.htm wohl falsch verstanden.
Hallo Klaus,
vielen Dank für deine Ausführliche Erklärung. Ich hatte dieses if ( empty ($_GET['vorname']) == 1 ) auf http://www.php-kurs.com/formularauswertung-mit-php.htm wohl falsch verstanden.
if ( empty ($_GET['vorname']) == 1 )
prüft keinesfalls, ob in Vorname eine 1 steht, es prüft, ob da überhaupt was drin steht. Und das unnötig kompliziert.
Außerdem werden auf der Seite wichtige Sicherheitsfragen ausgeblendet.
<?php echo "eingetragener Vorname: ". $_GET['vorname']; ?>
erlaubt das Ausführen bösartigen JavaScript-Codes, im harmlosesten Fall ist lediglich deine Seite kaputt, etwa, wenn der Vorname ‚</body>‘ heißt.
Merke: Nutzereingaben NIEMALS ungeprüft ausgeben, ein htmlspecialchars($_GET['vorname'])
ist in diesem Fall unabdingbar.
Bis demnächst
Matthias
Hallo,
if ( empty ($_GET['vorname']) == 1 )
prüft keinesfalls, ob in Vorname eine 1 steht, es prüft, ob da überhaupt was drin steht. Und das unnötig kompliziert.
genauer gesagt, und wie der Funktionsname ahnen lässt, prüft das Konstrukt, ob da eben nix drin ist.
Gruß
Kalk
Hi,
ich möchte gerne prüfen ob in GET einen bestimmten Wert steht. Derzeit sieht es so aus
if (isset($_GET["show"])) { echo "OK"; }
das ist als Einstieg gut: Mit isset() prüfst du erstmal, ob eine bestimmte Variable oder ein Array-Element - in diesem Fall $_GET["show"] - überhaupt existiert.
ich möchte aber ein Schritt weiter gehen, der ganze Bereich sollte nur angezeigt werden wenn in $_GET["show"] eine 1 steht. Wie könnte ich dieses umsetzten?
Denke Schritt für Schritt: Du hast zwei Bedingungen! Zunächst muss $_GET["show"] existieren - siehe oben. Und dann muss $_GET["show"] einen bestimmten Wert haben. Zwei Bedingungen, die beide zutreffen müssen. Dazu kann man entweder zwei if-Statements ineinander verschachteln, oder die beiden Bedingungen mit einem logischen UND verknüpft in ein if-Statement schreiben. Letzteres ist eigentlich der übliche Weg.
if (isset($_GET["show"] == 1)) { echo "OK"; }
Das geht schief, weil isset() immer einen Variablenbezug will, und keinen berechneten Ausdruck. Versuch's nochmal mit schrittweiser Logik.
Das Problem, das viele Einsteiger beim Programmieren haben: Es macht ihnen Mühe, so primitiv zu denken, wie es eigentlich nötig ist.
So long,
Martin
Lieber Klaus,
if (isset($_GET["show"])) { echo "OK"; }
die Verwendung von isset ist sinnvoll. Manchmal ist auch array_key_exists sinnvoll:
if (array_key_exists('show', $_GET) && $_GET['show'] == 1) {
echo 'OK';
}
Manchmal ist isset aber einfach kürzer und damit "besser".
Liebe Grüße,
Felix Riesterer.