Ankündigung

Einklappen
Keine Ankündigung bisher.

Login-Skript mit Sessions

Einklappen

Neue Werbung 2019

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

  • Login-Skript mit Sessions

    Hallo,

    ich habe ein simples Login-Skript mit Sessions gebaut, und habe auf meiner lokalen Testumgebung keinerlei Probleme eine autom. Weiterleitung mittels Header-Funktion zu bauen, auf dem Webhoster allerdings, kommt ständig ein Fehler, dass die Header-Daten bereits gesendet wurden, und die Weiterleitung hängt sich auf. Nun meine Frage: Ist es von der PHP-Version, oder von den PHP-Funktionen abhängig? Ich bin jetzt ausgewichen auf ein Login-Skript mit Cookies, wobei die Fehler nicht entstehen sollten. Laut meines Softwareentwicklungs Lehrers aus der Berufsschule, gab es einen weg, mittels ob_start(); und ob_flush(); um diesem Fehler auszuweichen, nachdem ich auch diesen Weg ausprobierte, funktionierte das ganze aber immer noch nicht.
    Hat irgendjemand dazu eine Ahnung?

  • #2
    Man sollte solchen Fehlern nicht ausweichen sondern sie beheben.

    session_start() muss immer ganz oben in der Datei stehen, vorher darf keine Ausgabe sein. Auch darf vor header() keine Ausgabe sein. Wahrscheinlich beachtest du eines der beiden nicht. Aber ohne Code ist das schwer zu sagen.

    Kommentar


    • #3
      Der Beispiel-Code sieht wie folgt aus:
      PHP-Code:
      session_start();
      if(isset(
      $_SESSION['username']){
      echo 
      "komplette index-ausgabe";
      }
      else{
      echo 
      "Login-page";
      if(
      $Login=='erfolgreich')
      {
      Header("Location: index.php?page=Seite");
      }

      Kommentar


      • #4
        Wie bereits gesagt, vor header() darf kein echo stattfinden.

        Kommentar


        • #5
          Es gibt dazu auch einen Artikel in der Wissenssammlung zu dem Thema: https://php-de.github.io/jumpto/headers-already-sent/

          Kommentar


          • #6
            mit ob_start(); sollte das ganze angeblich allerdings funktionieren, tut es allerdings nicht, wie dem auch sei, in meiner test-Umgebung auf meinem Laptop mit XAMPP Installation läuft das ganze fehlerfrei ab, darum bin ich verwirrt. Auch mit session_start() anstelle ob_start() läuft es lokal komplett fehlerfrei ab.

            Kommentar


            • #7
              Tut es nicht. Du hast wohl einfach die Fehlerausgabe ausgeschaltet.

              Kommentar


              • #8
                Soweit wie ich das sehe, funktioniert die Weiterleitung mittels Header zumindest, egal ob 'ne warning ausgegeben wird. Auf dem Free-Webhost, den ich benutze um das Script im WAN laufen zu lassen, stirbt das Skript allerdings und leitet nicht weiter, gibt es eine alternative zu einer Weiterleitung mittels Header?

                Kommentar


                • #9
                  Du solltest nicht nach Alternativen suchen sondern es einfach korrekt machen. Keine Ausgabe vor header(). Ist nicht so schwer. Und funktioniert.

                  Kommentar


                  • #10
                    1. Du solltest deine Entwicklungsumgebung so konfigurieren, dass sie annähernd der Produktivumgebung gleicht. Es bringt nämlich nichts, wenns auf deiner Entwicklungsumgebung läuft, aber am Produktivserver nicht.

                    2. Warum suchst du einen schmutzigen Workaround statt es einfach richtig zu machen? Ist die offensichtlichste Lösung zu einfach? Willst du es kompliziert und fehleranfällig haben? Wenn ja, warum?

                    Kommentar

                    Lädt...
                    X