Homer: IF Anweisungen zusammenfügen

Hallo alle,

wie schon mehrfach erwähnt bin ich ein PHP Noob.
kann mann solche IF Anweisungen

if (isset($_GET['foo']))
        {
        $script=getenv(SCRIPT_NAME);
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
        header('Cache-Control: no-store');
        header('Pragma: no-cache');
        header("Location: $script");
        }

if (isset($_GET['bar']))
        {
        $script=getenv(SCRIPT_NAME);
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
        header('Cache-Control: no-store');
        header('Pragma: no-cache');
        header("Location: $script");
        }

so zusammenführen um code zu sparen

if ((isset $_GET['foo)]) || (isset $_GET['bar)])

{
        $script=getenv(SCRIPT_NAME);
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
        header('Cache-Control: no-store');
        header('Pragma: no-cache');
        header("Location: $script");
        }

Ist das richtig so, ist das korrekter Code oder völliger Blödsinn?

Danke
Homer
PS:Do'h!

  1. Naja, wenn du daraus

    if ((isset $_GET['foo)]) || (isset $_GET['bar)])

    das machst

    if( isset($_GET['foo']) || isset($_GET['bar']) ) { ... }

    dann stimmt es und macht das was du möchtest. Einfach mal etwas besser auf deine Klammern etc achten.

    1. Danke für Eure schnelle Hilfe!

      Gruß
      Homer
      PS:Do'H!

  2. hallo,

    wie schon mehrfach erwähnt bin ich ein PHP Noob.

    Wenn du so ein Noob bist, dann schlage ich vor, dass PHP Manual durchzuarbeiten.

    [...]
    so zusammenführen um code zu sparen

    if ((isset $_GET['foo)]) || (isset $_GET['bar)])

    {
            $script=getenv(SCRIPT_NAME);
            header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
            header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
            header('Cache-Control: no-store');
            header('Pragma: no-cache');
            header("Location: $script");
            }

    Starte das Script. Merke dann, dass PHP meckert, weil in der Abfrage ein paar Klammern falsch gesetzt sind. Korrigiere es. Starte erneut und merke, es funktioniert!

    Probieren geht über Studieren.

    || ist ein logischer Operator, wie in zum Beispiel Javascript auch. Du kannst stattdessen auch OR schreiben, die Wirkung bleibt.

    grüße,
    henman

    --
    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
  3. Hi!

    kann mann solche IF Anweisungen
    if (isset($_GET['foo']))
    if (isset($_GET['bar']))
    so zusammenführen um code zu sparen
    if ((isset $_GET['foo)]) || (isset $_GET['bar)])

    Abgesehen vom Syntaxfehler ... du kannst dir die Frage auch selbst beantworten, wenn du dir eine Wahrheitstabelle erstellst:

    isset($_GET['foo'])  |  isset($_GET['bar'])  |  Ergebnis
    ------------------------------------------------------------
            false          |         false         |
            true           |         false         |
            false          |         true          |
            true           |         true          |

    Jetzt rufst du dein Script ohne, mit foo, mit bar und mit beidem auf und schaust, was jeweils bei

    vardump(isset($_GET['foo']));
      vardump(isset($_GET['bar']));
      vardump(isset($_GET['foo']) || isset($_GET['bar']));

    als Ergebnis erscheint. (Vorher ein <pre> ausgeben erhöht die Übersichtlichkeit der Ausgabe.)

    Allerdings hast du vermutlich schon einen Logik-Fehler im Ausgangscode. Schreib mal

    var_dump(isset($_GET['foo']));
      var_dump(isset($_GET['bar']));

    und wiederhole die vier Aufrufvarianten. Immer bei true würden deine Headerzeilen gesetzt. Du hast eine Konstellation, bei der die Headerzeilen zweimal gesetzt werden. Wenn du statt var_dump() man ein echo nimmst, siehst du das noch deutlicher, das gibt entweder nichts oder eine 1 aus. Wenn 11 dasteht, hast du eine doppelte Ausgabe, obwohl du sicher nur eine willst. Insofern ist nur die zusammengefasste Variante gegenüber den einzelnen richtig.

    Lo!