Ankündigung

Einklappen
Keine Ankündigung bisher.

Geheime Seite Prüfung ob Nutzer eingeloggt ist...

Einklappen

Neue Werbung 2019

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

  • Geheime Seite Prüfung ob Nutzer eingeloggt ist...

    An alle, die das lesen. Ich habe eine Main Seite, wo der Nutzer nach Login hingeleitet wird. Je nach dem, was er für ne Stuffe hat, wird bestimmtes Inhalte sichtbar...
    Das Problem ist, dass ich wenn ich nicht angemeldet bin, trotzdem auf die main Seite drauf kann. Ich habe wie andere Nutzer hier geschrieben haben, Fehler suche betrieben. Habe geschaut, ob ich irgendwo ein Zeichen vergessen habe.


    Was ich probiert habe, wird hier aufgelistet:


    Dieser Code hat funktioniert. Dieser Zeigt an, ob er eingeloggt ist oder nicht. Wenn er erfolgreich eingeloggt ist, wird eine Zahl(1) angezeigt:


    PHP-Code:

    <?php
    session_start
    ();

    error_reporting(-1);
    ini_set('display_errors'1);


    $eingeloggt $_SESSION["eingeloggt"];

    echo 
    $eingeloggt;

    ?>
    Wenn ich also erfolgreich eingeloggt wurde, enscheint oben Links ne 1 sonst garnixs. Somit konnte ich diesen Fehler, das es an der Session liegt auschließen.

    PHP-Code:
    <?php
    session_start
    ();

    error_reporting(-1);
    ini_set('display_errors'1);

    header("Location: index.php");

    ?>
    dieser Code hat mich erfolgreich zur index geleitet!


    Jetzt kommen die Code, die nicht geklappt habe:

    PHP-Code:

    <?php
    session_start
    ();

    error_reporting(-1);
    ini_set('display_errors'1);






    if(!isset(
    $_SESSION["eingeloggt"])){

        echo 
    "du bist nicht angemeldet!";
        
    header("Location: index.php");
        exit;
    }else if(
    $_SESSION["eingeloggt"] < 1){
        echo 
    "Fehler in der Session!";
        
    header("Location: index.php");
        exit;
    }

        echo 
    "Herzlich Willkommen!"






    require("connection.php");


    ?>
    PHP-Code:

    <?php
    session_start
    ();

    error_reporting(-1);
    ini_set('display_errors'1);






    if(!isset(
    $_SESSION['eingeloggt'])){

        echo 
    "du bist nicht angemeldet!";
        
    header("Location: index.php");
        exit;
    }else if(
    $_SESSION['eingeloggt'] < 1){
        echo 
    "Fehler in der Session!";
        
    header("Location: index.php");
        exit;
    }

        echo 
    "Herzlich Willkommen!"






    require("connection.php");


    ?>

    PHP-Code:

    <?php
    session_start
    ();

    error_reporting(-1);
    ini_set('display_errors'1);


    $eingeloggt $_SESSION['eingeloggt'];



    if(
    $eingeloggt == ''){

        echo 
    "du bist nicht angemeldet!";
        
    header("Location: index.php");
        exit;
    }else if(
    $eingeloggt 1){
        echo 
    "Fehler in der Session!";
        
    header("Location: index.php");
        exit;
    }

        echo 
    "Herzlich Willkommen!"






    require("connection.php");


    ?>

    PHP-Code:

    <?php
    session_start
    ();

    error_reporting(-1);
    ini_set('display_errors'1);


    $eingeloggt $_SESSION["eingeloggt"];



    if(
    $eingeloggt != 1){

        echo 
    "du bist nicht angemeldet!";
        
    header("Location: index.php");
        exit;
    }else if(
    $eingeloggt 1){
        echo 
    "Fehler in der Session!";
        
    header("Location: index.php");
        exit;
    }

        echo 
    "Herzlich Willkommen!"






    require("connection.php");


    ?>


    Ihr seht, ich habe alles mögliche probiert. In einem Video, wurde geprüft, ob es die Session existiert, wenn nicht, wird der jenige weiter geleitet. Habe auch mal mit exit(); probiert und habe überall bei den echos geschaut, ob irgendwo ein ; fehlt.
    Leider finde ich keine Fehler, bin ja auch Anfänger. Es wird auch kein Error angezeigt. Ich hoffe sehr, ihr könnt in diesem Fall mir helfen...

  • #2
    Vor dem header() Aufruf darf keine Ausgabe erfolgen (z.B. mittels echo), da der Header als erstes gesendet wird, vor der ersten Ausgabe von Text.
    Das echo kannst du dann auch komplett weglassen, da der Benutzer mit dem Befehl direkt weitergeleitet wird ohne die Seite zu sehen.

    Setze beim Entwickeln error_reporting nicht auf -1, das unterdrückt dir alle Fehlermeldungen. Setz das Ruhig auf E_ALL, dann werden dir alle Fehler angezeigt, da wäre dir auch das entsprechend aufgefallen

    Kommentar


    • #3
      Zitat von Funfare Beitrag anzeigen
      Vor dem header() Aufruf darf keine Ausgabe erfolgen (z.B. mittels echo), da der Header als erstes gesendet wird, vor der ersten Ausgabe von Text.
      Das echo kannst du dann auch komplett weglassen, da der Benutzer mit dem Befehl direkt weitergeleitet wird ohne die Seite zu sehen.

      Setze beim Entwickeln error_reporting nicht auf -1, das unterdrückt dir alle Fehlermeldungen. Setz das Ruhig auf E_ALL, dann werden dir alle Fehler angezeigt, da wäre dir auch das entsprechend aufgefallen
      Also:

      PHP-Code:

      error_reporting
      (E_ALL);
      ini_set('display_errors'1); 
      Ich habe jetzt das Error weggemacht, aber ich werde trotzdem nicht weitergeleitet.
      Habe ich das mit dem E_ALL richtig gemacht? Da mir nixs anzeigt.... Ein Nutzer des Forums gab mir das mit -1, ich hoffe, das alles anzeigt... Bis jetzt nicht...
      Wiso werde ich jetzt trotzdem nicht weitergeleitet? Habe ich was falsch gemacht?


      PHP-Code:
      <?php
      session_start
      ();

      error_reporting(E_ALL);
      ini_set('display_errors'1);






      if(!isset(
      $_SESSION["eingeloggt"])){

          
      header("Location: index.php");
          exit;
      }else if(
      $_SESSION["eingeloggt"] < 1){

          
      header("Location: index.php");
          exit;
      }

          echo 
      "Herzlich Willkommen!"






      require("connection.php");


      ?>

      Kommentar


      • #4
        Wo ist denn der Teil, in dem die Session befüllt wird?
        Und was steht tatsächlich in der Session? (var_dump benutzen!)
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Zitat von lstegelitz Beitrag anzeigen
          Wo ist denn der Teil, in dem die Session befüllt wird?
          Und was steht tatsächlich in der Session? (var_dump benutzen!)
          Was meinst du mit deine Antwort. Wenn ich mich einlogge, steht in der einloggen Session 1. Diese habe ich erfolgreich ausgegeben bekommen auf der Main. Das heißt, das die Session Übergabe ja klappt. Aber die Überprüfung plappt nicht, habe alles ausprobiert...

          Also was soll ich jetzt tun? Bzw. dir Schicken?

          Die Session beim Loggin:

          PHP-Code:

                                  session_start
          ();
                                  
          $_SESSION["eingeloggt"] = 1;
                                  
          $_SESSION["tabelle"] = $dbtabelle;
                                  
          $_SESSION["username"] = $username;
                                  
          $_SESSION["passwort"] = $row["passwort"];
                                  
          $_SESSION["botstuffe"] = $row["bot_stuffe"];


                                  
          header("Location: main.php");
                                  exit(); 

          Kommentar


          • #6
            Erstmal muss man verstehen, welcher Code in welcher php Datei steht, und von wo nach wo die Reise gehen soll...

            Das ist die index.php, ja?
            PHP-Code:
            session_start();
            $_SESSION["eingeloggt"] = 1;
            $_SESSION["tabelle"] = $dbtabelle;
            $_SESSION["username"] = $username;
            $_SESSION["passwort"] = $row["passwort"];
            $_SESSION["botstuffe"] = $row["bot_stuffe"];

            header("Location: main.php");
            exit(); 
            Und das hier ist die main.php?
            PHP-Code:
            session_start();

            error_reporting(-1);
            ini_set('display_errors'1);

            if(!isset(
            $_SESSION["eingeloggt"])){

                echo 
            "du bist nicht angemeldet!";
                
            header("Location: index.php");
                exit;
            }else if(
            $_SESSION["eingeloggt"] < 1){
                echo 
            "Fehler in der Session!";
                
            header("Location: index.php");
                exit;
            }

                echo 
            "Herzlich Willkommen!"

            require("connection.php"); 
            Wenn das stimmt sieht es schwer nach Endlos-Schleife aus, wenn man nicht eingeloggt ist... schätze mal das testest du, indem du $_SESSION['eingeloggt'] = 0 setzt?

            Welches Verhalten beobachtest du denn dann im Browser?
            Testweise würd ich mal den redirect zurück zur index.php weglassen, nur ein echo + exit


            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Zitat von lstegelitz Beitrag anzeigen
              Erstmal muss man verstehen, welcher Code in welcher php Datei steht, und von wo nach wo die Reise gehen soll...

              Das ist die index.php, ja?
              PHP-Code:
              session_start();
              $_SESSION["eingeloggt"] = 1;
              $_SESSION["tabelle"] = $dbtabelle;
              $_SESSION["username"] = $username;
              $_SESSION["passwort"] = $row["passwort"];
              $_SESSION["botstuffe"] = $row["bot_stuffe"];

              header("Location: main.php");
              exit(); 
              Und das hier ist die main.php?
              PHP-Code:
              session_start();

              error_reporting(-1);
              ini_set('display_errors'1);

              if(!isset(
              $_SESSION["eingeloggt"])){

              echo 
              "du bist nicht angemeldet!";
              header("Location: index.php");
              exit;
              }else if(
              $_SESSION["eingeloggt"] < 1){
              echo 
              "Fehler in der Session!";
              header("Location: index.php");
              exit;
              }

              echo 
              "Herzlich Willkommen!"

              require("connection.php"); 
              Wenn das stimmt sieht es schwer nach Endlos-Schleife aus, wenn man nicht eingeloggt ist... schätze mal das testest du, indem du $_SESSION['eingeloggt'] = 0 setzt?

              Welches Verhalten beobachtest du denn dann im Browser?
              Testweise würd ich mal den redirect zurück zur index.php weglassen, nur ein echo + exit

              Ich verstehe grade nicht wo du hinaus willst. Wenn der Kunde nicht eingellogt ist, soll er ja zur Index zurück. Dafür macht man ja das mit dem header und Location...
              Ich habe jetzt mal kurz den Header entfernt, aber ich bleibe trotzdem auf der main. Wenn man nicht eingeloggt ist, dann darf man niicht auf die main Seite kommen. Und dann muss der jenige zum Login geleitet werden....

              Kommentar


              • #8
                Zitat von lstegelitz Beitrag anzeigen
                Wo ist denn der Teil, in dem die Session befüllt wird?
                Und was steht tatsächlich in der Session? (var_dump benutzen!)
                Ich habe das mit var_dump ausprobiert. Die Seite bleibt weiß. Es wird nixs angezeigt. Wenn ich mich anmelde, dann sagt mir var_dump int(1). Muss aber die ganzen Ifs weg machen, da zeigt mir nixs mehr an...


                Ich habe jetzt so gemacht:


                PHP-Code:

                <?php
                session_start
                ();

                error_reporting(E_ALL);
                ini_set('display_errors'1);

                var_dump($_SESSION["eingeloggt"]);

                if(!isset(
                $_SESSION["eingeloggt"])){

                    
                header("Location: index.php");
                    exit();

                }else{
                    echo 
                "Herzlich Willkommen!";
                    unset(
                $_SESSION["eingeloggt"]);
                }
                Da kam jetzt so was:


                Warning: Undefined array key "eingeloggt" in /www/htdocs/w01a7fb1/botapp.klug-aug.de/main.php on line 7
                NULL
                Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w01a7fb1/botapp.klug-aug.de/main.php:7) in /www/htdocs/w01a7fb1/botapp.klug-aug.de/main.php on line 11

                Kommentar


                • #9
                  Schon mal in das PHP Error-Log geschaut?

                  Kommentar


                  • #10
                    Zitat von AAK Beitrag anzeigen

                    Ich habe das mit var_dump ausprobiert. Die Seite bleibt weiß. Es wird nixs angezeigt. Wenn ich mich anmelde, dann sagt mir var_dump int(1). Muss aber die ganzen Ifs weg machen, da zeigt mir nixs mehr an...


                    Ich habe jetzt so gemacht:


                    PHP-Code:

                    <?php
                    session_start
                    ();

                    error_reporting(E_ALL);
                    ini_set('display_errors'1);

                    var_dump($_SESSION["eingeloggt"]);

                    if(!isset(
                    $_SESSION["eingeloggt"])){

                    header("Location: index.php");
                    exit();

                    }else{
                    echo 
                    "Herzlich Willkommen!";
                    unset(
                    $_SESSION["eingeloggt"]);
                    }
                    Da kam jetzt so was:


                    Warning: Undefined array key "eingeloggt" in /www/htdocs/w01a7fb1/botapp.klug-aug.de/main.php on line 7
                    NULL
                    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w01a7fb1/botapp.klug-aug.de/main.php:7) in /www/htdocs/w01a7fb1/botapp.klug-aug.de/main.php on line 11
                    Vor dem <php Tag darf keine Ausgabe, auch keine Leerzeichen stehen, wenn du mit Sessions arbeitest. Auch kein echo oder var_dump vor der Header Anweisung.

                    Kommentar


                    • #11
                      Zitat von hellbringer Beitrag anzeigen
                      Schon mal in das PHP Error-Log geschaut?
                      was ist das?

                      Kommentar


                      • #12
                        Zitat von Zeichen32 Beitrag anzeigen

                        Vor dem <php Tag darf keine Ausgabe, auch keine Leerzeichen stehen, wenn du mit Sessions arbeitest. Auch kein echo oder var_dump vor der Header Anweisung.
                        Danke, dass hat nun funktioniert. Frage mich, wiso beim Login, header sehr weit unten steht und erst bbei der Ausführung benutzt wird. Es steht ja davor sehr viel....

                        Mein jetziger Code:

                        PHP-Code:

                        <?php
                        session_start
                        ();

                        error_reporting(E_ALL);
                        ini_set('display_errors'1);





                        if(!isset(
                        $_SESSION["eingeloggt"])){

                            
                        header("Location: index.php");
                            exit();

                        }else{
                            echo 
                        "Herzlich Willkommen!";

                            while(isset(
                        $_SESSION["eingeloggt"])){
                                if(!isset(
                        $_SESSION["eingeloggt"])){

                                    
                        header("Location: index.php");
                                    exit();

                                }

                            }

                        }



                        require(
                        "connection.php");


                        ?>
                        Ich versuche jetzt irgendwie eine Schleife zu machen, da wenn ich mich einlogge, wird die Session gestzt und werde mich zur main.php weitergeleitet. Problem ist nun, wenn die Session gesetzt ist und ich die Seite neu lade nach paar Stunden, dass die Session nicht mehr da ist, aber ich bleibe trotzdem auf der main. Aber veränderungen zeigt es an....

                        Kommentar


                        • #13
                          Zitat von AAK Beitrag anzeigen
                          was ist das?
                          Ein Log, wo PHP alle Fehlermeldungen reinschreibt. Und wenn man Fehler sucht, ist das beste man schaut sofort dort nach, statt sich stunden- oder tagelang zu wundern, warum etwas nicht geht.

                          Wo dieses Log liegt, weiß (hoffentlich) der Serveradministrator.

                          Kommentar


                          • #14
                            Zitat von AAK Beitrag anzeigen
                            Ich versuche jetzt irgendwie eine Schleife zu machen, da wenn ich mich einlogge, wird die Session gestzt und werde mich zur main.php weitergeleitet. Problem ist nun, .
                            Mein Eindruck ist, ohne dass ich den Code jetzt von Beginn an verfolgt habe, das du dich in eine Sackgasse manövriert hast. Und was ich nie verstanden habe, warum bei solchen Problemen es immer wieder versucht wird das mit Weiterleitungen per header-location zu lösen. Es werden nicht x Skripte benötigt, sondern nur eines, wenn man sich das Standardverfahren "Affenformular" zu nutze macht.

                            Ich habe mal auf die Schnelle ein lauffähiges Skript mit Login/Logout nur für das Verständnis der Funktion eines solchen "Affenformulars" erstellt ohne auf die Validität von HTML zu achten.

                            PHP-Code:
                            session_start();
                            $html "";
                            if(isset(
                            $_POST['pw'])){
                                
                            //login
                                
                            if($_POST['pw'] == "123"){
                                    
                            $_SESSION['login'] = 1;  
                                }
                                else {
                                    
                            $html .= "<br>Passwort falsch!<br>";
                                }
                            }
                            elseif(isset(
                            $_POST['logout'])){
                              
                            $html .= "Erfolgreich ausgeloggt<br>";
                              
                            $_SESSION = [];
                            }
                            if(empty(
                            $_SESSION['login'])){
                                
                            //noch kein Login erfolgt oder Logout
                                
                            $html .= '<br>
                                <form method="POST">
                                  <label for="pw">Login:</label>
                                  <input name="pw" type="password">
                                  <button type="submit">Login</button>
                                </form>
                                '
                            ;
                            }
                            else {
                                
                            $html .= "Ich bin eingeloggt(".($_SESSION['login']++).")<br>";
                                
                            $html .= '<form method="POST">
                                  <button name="logout" type="submit">Logout</button>
                                  <button name="weiter" type="submit">Weiter</button>
                                  </form>'
                            ;
                            }
                            echo 
                            $html
                            Hoffe hilft etwas.

                            Kommentar


                            • #15
                              Zitat von hellbringer Beitrag anzeigen

                              Ein Log, wo PHP alle Fehlermeldungen reinschreibt. Und wenn man Fehler sucht, ist das beste man schaut sofort dort nach, statt sich stunden- oder tagelang zu wundern, warum etwas nicht geht.

                              Wo dieses Log liegt, weiß (hoffentlich) der Serveradministrator.
                              Ich habe das jetzt bei meinem Anbieter angestellt. Werden die Logs öffentlich angezeigt?

                              Kommentar

                              Lädt...
                              X