Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabepufferung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausgabepufferung

    Guten Tag,

    ich würde ganz gerne eure Meinung dazu hören.

    Ich habe ein Script erstellt bei dem man auf verschiedene Seiten nur zugreifen kann wenn man angemeldet ist bzw nicht angemeldet ist.

    Ich nehm mal folgendes Szenario:

    Benutzer meldet sich an.
    Aus irgendwelchen Gründen, drückt er den "Zurück" Button und gelangt somit wieder auf das Login-Interface.
    Da der Benutzer schon angemeldet ist, kommt eine fehlermeldung:
    "Sie sind bereits eingeloggt".

    So jetzt möchte ich aber, anstatt dieser Fehlermeldung, das der Benutzer direkt zu einer anderen Seite wie zb. die Indexseite oder das Kontrollzentrum oder ähnliches.

    Im großen und ganzen läuft es ja auf die header() hinaus.
    Für mich gib es im prinzip bloß eine "einfache" Lösung

    am Anfang
    PHP-Code:
    ob_start(); 
    und am Schluss alles wieder flushen mit
    PHP-Code:
    ob_end_flush(); 
    Dann gäbs noch die möglichkeit ALLES was vor dem header ausgegeben würde, in eine Variable schreiben die dann am Ende ausgegeben wird. (sehr viel Arbeit und ob sich das lohnt..)

    Fällt euch noch was anderes ein, oder ist meine Möglichkeit akzeptabel.
    Wie sieht es mit der Performance aus?

    lg


  • #2
    Häh? Wieso ob?
    PHP-Code:
    if ($_SESSION['auth'] == true) {
      
    header (sowieso)
    } else {
      
    show auth form..

    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      EVA-Prinzip (Standardverfahren) - PHP.de Wiki

      Wenn du das beachtest, wirst du keine Probleme mit dem Senden der header() bekommen.
      http://hallophp.de

      Kommentar


      • #4
        In der Gegend rumspringen ist uncool

        PHP-Code:
        session_start();

        $freie_seiten = array('start','login','impressum');
        $member_seiten = array('member1','member2');

        $seite $_GET['seite'];
        if ( !
        in_array($seite,$freie_seiten) and !in_array($seite,$member_seiten) ) {
          
        $seite 'index';
        }
        if ( 
        in_array($seite,$member_seiten) and empty($_SESSION['loggedin']) ) {
          
        $seite 'login';
        }
        if ( 
        $seite == 'login'  and !empty($_SESSION['loggedin']) ) {
          
        $seite 'member1';
        }
        include (
        $seite '.php'); 
        PHP-Code:
        if ($var != 0) {
          
        $var 0;

        Kommentar


        • #5
          Es ist so, dass ich eine Index.php datei habe, die mein "Grundgerüst" darstellt.
          Das heißt, hier wird bereits etwas ausgegeben.
          Wenn ich nun angemeldet bin und sozusagen auf index.php?q=login zugreife, dann wird die login.php eingebunden.
          Dort wird dann festgestellt, dass ich eingeloggt bin und weitergeleitet werde.

          Kommentar


          • #6
            Dann musst du das eher feststellen.

            Dann kommst du auch auf eine Struktur, wie sie Wolla oben gezeigt hat. Zuerst prüfst du alle Parameter und reagierst entsprechend.

            Eingabe der Parameter
            Verarbeitung der Parameter
            Ausgabe
            http://hallophp.de

            Kommentar


            • #7
              Ich werde es versuchen umzuprogrammieren, obwohl ich mich ja zu 100% an EVA gehalten habe
              Aber da es verschiedene Dateien sind, ist es nunmal nicht all zu einfach "Datei-übergreifend" zu schreiben.

              Ich hab mal ein Test durchgeführt:

              Ich hab die Zeit gemessen die das Script braucht um mit und ohne ob_start() & flush auszuführen.

              Die Zeiten waren im Prinzip identisch und das Script hat ca. 1000 Zeilen code.

              Kann das jemand widerlegen? Oder stimmt das?
              (Also die Theorie, dass ob_start() keine auswirkung auf die Performance hat)

              Btw:
              ich habe mal den Code von SMF durchsucht, in fast jeder PHP-Datei wird ob_start() verwendet

              Kommentar


              • #8
                Es geht ja nicht darum, dass du in einer Datei das EVA-Prinzip einhaeltst, sondern in deiner gesamten Anwendung, die ja ueblicherweise auf mehreren Dateien beruht.

                Dann wuerdest du naemlich gleich am Anfang feststellen, dass der Benutzer schon eingeloggt ist und nicht erst in der login.php.
                "Mein Name ist Lohse, ich kaufe hier ein."

                Kommentar


                • #9
                  ob_start() ist halt oft das letzte Mittel, Spaghetticode doch noch irgendwie zum laufen zu bringen.
                  PHP-Code:
                  if ($var != 0) {
                    
                  $var 0;

                  Kommentar


                  • #10
                    ihr braucht nicht wiederholen was schon x-mal erwähnt würde
                    Falls ihr es nicht richtig gelesen habt:
                    Ich werde es versuchen umzuprogrammieren
                    Aber mich würde es trotzdem interessieren, wie es mit den Ressourcen aussieht. (Für alle : Interesse halber)
                    Weiß da jemand bescheid ?

                    Kommentar


                    • #11
                      Für deine Problematik ziemlich irrelevant.
                      "Mein Name ist Lohse, ich kaufe hier ein."

                      Kommentar


                      • #12
                        Ob eine Seite nach 18 oder erst nach 22 ms fertig zur Ausgabe steht ist vollkommen schnurz. Wichtiger ist es den Code so zu gestalten, dass du oder ein Kollege den nach drei Monaten noch versteht und Änderungen schnell durchführen kann.
                        PHP-Code:
                        if ($var != 0) {
                          
                        $var 0;

                        Kommentar


                        • #13
                          Das sehe ich genau so Wolla.
                          Aber ich finde die performance trotzdem wichtig.
                          Wenn vBulletin genau so denken würde, wette ich, dass man das merken würde.
                          4ms rauszuholen ist bei vielen usern sicherlich etwas.

                          Kommentar


                          • #14
                            Na viel langsamer kann vB ja nicht mehr werden.
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Es ist deshalb irrelevant, weil es beim Quellcode üblicherweise andere Stellen gibt, die in Sachen Performance ins Gewicht fallen. Wenn die alle soweit optimiert sind, kann man sich sicherlich auch irgendwann dieser Thematik widmen.
                              "Mein Name ist Lohse, ich kaufe hier ein."

                              Kommentar

                              Lädt...
                              X