PHP Wie mache ich folgendes ...if elseif else ?

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Nabend,

in einem Script schicke ich folgends ab...

script.php?id=abc
oder
script.php?id=def
oder
script.php?id=ghi


PHP:
//wenn nichts hinter "..id=" dann..
if(empty($_GET['id'])) {
 
      header("Location: http://www.blablu.de");
} 
//wenn etwas aber nicht das was ich angegeben habe dann hier schluss..., 
// hier ist aber auch mein problem!
      elseif
//ich möchte hier eine whitelist haben, wenn also weder
//"abc" noch "def" noch "ghi" kommt dann ist hier schluss ansonsten weiter
//bzw. sprung nach else             
 
     {
      header("Location: http://www.blablu.de");
      }
      else {
//hier geht es dann weiter wenn "abc" oder "def" oder "ghi" kommt....
}

Bekomme ich irgendwie nicht hin, egal was ich versucht habe es wurde immer auch
der else Teil abgearbeitet :(

Danke

Belee
 
PHP:
$whitelist = array("foo","bar","123");
if(empty($_GET['id'])) {
      header("Location: http://www.blablu.de");
} elseif(isset($_GET['id']) == true & in_array($whitelist,$_GET['id'])==true) {
 // hier kann dann der inhalt kommen, der durch den Inhalt des arrays whitelist gesteuert wird
}

Alles klar? Gruss
 
Ich wollte gerade posten das ich es geschafft habe, aber anders...

so...

PHP:
..
....
elseif
      ($_GET['id'] == "abc" OR $_GET['id'] == "def" OR $_GET['id'] == "ghi")
      {
//passt code
}
else
{
//passt nicht, umleitung
}

Was ist jetzt der Unterschied zu deinem Code?
 
Wenn deine Liste der Parameter länger werden sollte, es also nicht bei 3 Einträgen bleibt, ist es so einfacher die Liste zu erweitern. Du schreibst einfach die neuen Parameter ans Ende des Arrays und musst die elseif() Klausel nicht unnötig verlängern.
 
letztere Realisierung ist schwieriger um weitere IDs zu erweitern. Oben muss man nur was an die Liste anhängen


grüße :)


#edit: zu spät :(
 
aaaha, vielen dank @merv..

Edit: eigentlich aber auch egal da hier bei der sache es nur bei 3 IDs bleibt, wird also nicht erweitert.

Ich möchte lediglich verhindern da hier jemand böses macht, ist zwar auch kein 100% iger Schutz
aber besser als nichts.


EDIT:
Leider funktioniert das mit dem Array nicht....
Warning: in_array() expects parameter 2 to be array
 
Zuletzt bearbeitet:
PHP:
in_array($whitelist,$_GET['id'])==true

Das
PHP:
== true
ist völlig überflüssig, die if-Funktion selbst prüft auf true/false ...


@ Topic:

Im Falle, dass die Whitelist nicht dynamisch ist, kann auch eine Switch-Anweisung herangezogen werden.
 
Dann muss die elseif Zeile also so aussehen?

PHP:
elseif(isset($_GET['id']) == true & in_array($_GET['id'],$whitelist))
 
Zurück
Oben