1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Der Kniff mit der header() funktion

  • Myc0rrhizal
  • 18. August 2008 um 13:05
  • Unerledigt
  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 18. August 2008 um 13:05
    • #1

    Baue gerade an einem loginskript, das je nach ausgang weichen setzt - d.h. je nachdem ob das login positiv war befördet es den user per header('Location: bla.html') auf die jeweilige seite.

    Mir ist aber aufgefallen, das ein header(Location:..) quasi kumulativ arbeitet, dh. 2 header-funktionen hintereinander und der erste header aufruf wird überschrieben/ignoriert (dachte nämlich früher immer das ein header ein quasi skriptabbruch ist und die seite sofort redirected)

    Das hat zufollge das man "relativ" umständliche if konstrukte erstellen muss so das sich ein header am absoluten ende eines statements oder des ganzen skript befindet.

    Um zu verdeutlichen was ich meine dieses Bsp:

    PHP
    if($var) {
      header('Location: 1.html');
    }
    
    
    
    
    header('Location: 3.html');

    Dieses Skript wird egal was passiert immer auf 3.html redirecten. Gibt es nun einen Kniff wie ich ein Skript sauber abschließen kann sodas nach einem header() das skript beendet wird. Mit exit() hört einfach alles auf - return() schaut mir irgendwie unsauber aus und ich weiß auch nicht obs funktioniert?

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 18. August 2008 um 13:09
    • #2

    else?

    There's no better place than 127.0.0.1!

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 18. August 2008 um 13:35
    • #3
    Zitat

    Das hat zufollge das man "relativ" umständliche if konstrukte erstellen muss so das sich ein header am absoluten ende eines statements oder des ganzen skript befindet.

    Schon klar das mans mit if else lösen kann, aber sehr umständlich. Das bsp war nur zu verdeutlichung welches verhalten ich meine und stellt nicht das problem dar.

    Wenn man nämlich 6-10 verschiedene weichen braucht und eine die eintrit wenn keines der $var pos. ausgibt (7.html) (bei versch. fehlermeldungen) wäre das.. (könnte man natürlich auch mit switch machen)

    PHP
    if($var1)
       header('Location: 1.html');
    
    
    if($var2)
       header('Location: 2.html');
    
    
    if($var3)
       header('Location: 3.html');
    
    
    if($var4)
       header('Location: 4.html');
    
    
    if($var5)
       header('Location: 5.html');
    
    
    if($var6) 
       header('Location: 6.html');
    
    
    header('Location: 7.html');
    Alles anzeigen

    übersichtlicher als das:

    PHP
    if($var1) {
       header('Location: 1.html');
    }
    else {
       //CODE
    if($var2) {
       header('Location: 2.html');
    }
    else {
       //CODE
    if($var3) {
       header('Location: 3.html');
    }
    else {
       //CODE
    if($var4) {
       header('Location: 4.html');
    }
    else {
       //CODE
    if($var5) {
       header('Location: 5.html');
    }
    else {
       //CODE
    if($var6) {
       header('Location: 6.html');
    }
    else {
       header('Location: 7.html');
    }
     }
     }
     }
     }
     }
    Alles anzeigen

    (sorry man kann irgendwie keine gescheiten tabs machen)

    Es würden beim ersten bsp aber eben break anweisungen fehlen sodass das skript nicht mehr weitermacht nach einem header, weil sonst würde es immer auf 7.html kommen. Man musste es wie bsp2 machen sodass es gescheit funkt.

    2 Mal editiert, zuletzt von Myc0rrhizal (18. August 2008 um 13:41)

  • DomiN
    8
    DomiN
    Mitglied
    Reaktionen
    5
    Punkte
    585
    Beiträge
    111
    • 18. August 2008 um 14:19
    • #4

    Sollte so eigentlich klappen...
    Verwende ich auch in ähnlicher Form.

    PHP
    if($var) {
      header('Location: 1.html');
      exit;
    }
    
    
    
    
    header('Location: 3.html');


    Oder habe ich etwas nicht verstanden?

    It's physically impossible to lick your weenis, unless your a freak.

    DONE-IT TIENODhttp://www.tienod.com DI

  • Erklärbär
    8
    Erklärbär
    Mitglied
    Reaktionen
    6
    Punkte
    661
    Beiträge
    130
    • 18. August 2008 um 14:44
    • #5

    vielleicht so?

    PHP
    if($var1)
       header('Location: 1.html');
    
    
    if($var2)
       header('Location: 2.html');
    
    
    if($var3)
       header('Location: 3.html');
    
    
    if($var4)
       header('Location: 4.html');
    
    
    if($var5)
       header('Location: 5.html');
    
    
    if($var6) 
       header('Location: 6.html');
    else
       header('Location: 7.html');
    Alles anzeigen

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • DomiN
    8
    DomiN
    Mitglied
    Reaktionen
    5
    Punkte
    585
    Beiträge
    111
    • 18. August 2008 um 14:49
    • #6
    Zitat von Erklärbär

    vielleicht so?

    PHP
    if($var1)
       header('Location: 1.html');
    
    
    if($var2)
       header('Location: 2.html');
    
    
    if($var3)
       header('Location: 3.html');
    
    
    if($var4)
       header('Location: 4.html');
    
    
    if($var5)
       header('Location: 5.html');
    
    
    if($var6) 
       header('Location: 6.html');
    else
       header('Location: 7.html');
    Alles anzeigen

    ah, jetzt hab ichs gecheckt...

    dann würde noch die exits dazugehören:

    PHP
    if($var1)
       header('Location: 1.html'); exit;
    
    
    .............................. ...
    
    
    if($var6) 
       header('Location: 6.html'); exit;
    else
       header('Location: 7.html'); exit;
    Alles anzeigen

    It's physically impossible to lick your weenis, unless your a freak.

    DONE-IT TIENODhttp://www.tienod.com DI

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 18. August 2008 um 16:58
    • #7

    else if? Entweder ich habe das Problem nicht ganz verstanden oder es ist so einfach :face_with_tongue:

    There's no better place than 127.0.0.1!

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 18. August 2008 um 18:02
    • #8

    natürlich exit nachm header, hab mir den kopf zermartet aber irgendwie nie das exit nachm header geschrieben...

    danke

  • skinner33
    9
    skinner33
    Mitglied
    Reaktionen
    22
    Punkte
    862
    Beiträge
    168
    • 18. August 2008 um 23:08
    • #9

    wie wärs mit einem switch? :grinning_squinting_face:

    µC-Leitung

  • MarvinTheRobot
    26
    MarvinTheRobot
    Mitglied
    Reaktionen
    53
    Punkte
    7.308
    Beiträge
    1.368
    • 18. August 2008 um 23:51
    • #10

    switch war auch mein erster gedanke...

    wer if, else if und else schon umständlich findet.... gnarf

    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders!
    http://www.chuckbronson.net/

  • beefy
    13
    beefy
    Mitglied
    Reaktionen
    18
    Punkte
    1.683
    Beiträge
    304
    • 19. August 2008 um 09:55
    • #11
    Zitat von DomiN

    ah, jetzt hab ichs gecheckt...

    dann würde noch die exits dazugehören:

    PHP
    if($var1)
       header('Location: 1.html'); exit;
    
    
    .............................. ...
    
    
    if($var6) 
       header('Location: 6.html'); exit;
    else
       header('Location: 7.html'); exit;
    Alles anzeigen

    Geschwungene Klammern nicht vergessen!

  • spinball
    11
    spinball
    Mitglied
    Reaktionen
    67
    Punkte
    1.192
    Beiträge
    223
    • 19. August 2008 um 10:35
    • #12

    Alter! Wenn wir gerade beim Hirnwichsen sind: Falls du die Funktion header nur zur Weiterleitung benutzt, dann programmier doch eine eigene Version:

    PHP
    function location($path) {
    	header("Location: $path");
    	exit();
    }

    Und wer logische Verknüpfungen zu Gebrauchen weiss, macht dann folgendes:

    PHP
    $var1 and location("1.html"); // entspricht if
    
    
    $var2 ? location("2.html") : location("3.html"); // entspricht if und else

    Das ist Hardcore.

  • beefy
    13
    beefy
    Mitglied
    Reaktionen
    18
    Punkte
    1.683
    Beiträge
    304
    • 19. August 2008 um 10:39
    • #13
    Zitat von spinball

    Und wer logische Verknüpfungen zu Gebrauchen weiss, macht dann folgendes:

    PHP
    $var1 and location("1.html"); // entspricht if
    
    
    $var2 ? location("2.html") : location("3.html"); // entspricht if und else

    Das ist Hardcore.

    :grinning_squinting_face:

    Das ist Hardcore, hehe, aber auch unleserlich, fehleranfaellig und schlecht wartbar, daher nicht zu empfehlen.

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 20. August 2008 um 20:20
    • #14
    Zitat von spinball

    Alter! Wenn wir gerade beim Hirnwichsen sind: Falls du die Funktion header nur zur Weiterleitung benutzt, dann programmier doch eine eigene Version:

    PHP
    function location($path) {
        header("Location: $path");
        exit();
    }

    Und wer logische Verknüpfungen zu Gebrauchen weiss, macht dann folgendes:

    PHP
    $var1 and location("1.html"); // entspricht if
    
    
    $var2 ? location("2.html") : location("3.html"); // entspricht if und else

    Das ist Hardcore.

    gute idee eigentlich

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 20. August 2008 um 20:21
    • #15
    Zitat von MarvinTheRobot

    switch war auch mein erster gedanke...

    wer if, else if und else schon umständlich findet.... gnarf

    Die if abfragen sind nicht regelmäßig genug (in der praxis) um ein switch zu rechtfertigen

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Tags

  • explizit
  • hardcore
  • hirnwixn
  • ifelse switches rocken ur
  • kindergeburtstag
  • php suckt ur

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung