Einfaches Login erweitern

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

  • Einfaches Login erweitern

    Hallo,
    ich habe folgende PHP-Lösung auf meiner Website eingesetzt:

    http://aktuell.de.selfhtml.org/artikel/php/loginsystem/

    Das ganze Skript funktioniert und ist vollkommen ausreichend, da keine so streng vertraulichen Daten hinterlegt werden.

    Es hat sich nur ein einziger Schönheitsfehler ergeben, beim dem ich als PHP-Anfänger überfodert bin.

    Gerne möchte ich, dass nach erfolgtem Login ein Text&Link eingeblendet wird, wenn ich z.B. zurück auf die Startseite klicke.

    Textbeispiel: "Sie sind bereits eingeloggt. Hier geht es zum internen Bereich."

    Dieser Text&Link soll solange angezeigt werden, bis man sich wieder ausloggt bzw. die Session zerstört.


    Vielen Dank für Eure Tipps!

  • #2
    Du kannst $_SESSION['angemeldet'] prüfen, dann weißt du ob der User angemeldet ist oder nicht.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      Ja, so weit war ich schon.

      Ich habe folgendes als PHP-Laie versucht:


      <?php
      if (isset($_SESSION["angemeldet"])) {
      echo "Sie sind bereits eingeloggt";
      } else {
      echo "Noch nicht angemeldet";
      }
      ?>


      Was passt da nicht? Es erscheint immer "Noch nicht angemeldet"

      Kommentar


      • #4
        So lächerliche Grundlagen wie session_start() vergessen?

        Kommentar


        • #5
          Hallo,
          sieht so aus, dass ich die lächerliche "Grundlage" vergas...

          Kann damit aber trotzdem nichts anfangen.


          Ganz oben auf der Startseite habe ich dies eingefügt:
          <?php
          if ($_SERVER['REQUEST_METHOD'] == 'POST') {
          session_start();

          $username = $_POST['username'];
          $passwort = $_POST['passwort'];

          $hostname = $_SERVER['HTTP_HOST'];
          $path = dirname($_SERVER['PHP_SELF']);

          // Benutzername und Passwort werden überprüft
          if ($username == 'admin' && $passwort == 'test') {
          $_SESSION['angemeldet'] = true;

          // Weiterleitung zur geschützten Startseite
          if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
          if (php_sapi_name() == 'cgi') {
          header('Status: 303 See Other');
          }
          else {
          header('HTTP/1.1 303 See Other');
          }
          }

          header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/geheim/index.php');
          exit;
          }
          }
          ?>


          Unten beim Anmeldeformular dies als Zusatz:
          <?php
          if (isset($_SESSION['angemeldet'])) {
          echo "Sie sind bereits eingeloggt";
          } else {
          echo "Noch nicht angemeldet";
          }
          ?>


          Wohin mit der session_start();

          Danke!

          Kommentar


          • #6
            Wohin mit der session_start();
            In jede Datei, in der du was mit der Session machen willst, an den Anfang.
            ich glaube

            Kommentar


            • #7
              Original geschrieben von ministry
              In jede Datei, in der du was mit der Session machen willst, an den Anfang.
              er hat sie doch drinne...

              so wie er es hier geschrieben hat, müsste es eigentlich klappen. der fehler scheint mir woanders zu liegen... was man aber scheinbar anhand des code-schnipsels nicht erkennen kann...
              **********
              arkos
              **********

              Kommentar


              • #8
                So habe ich jetzt erweitert:

                <?php
                session_start();
                if (isset($_SESSION["angemeldet"])) {
                $status = "Sie sind bereits eingeloggt";
                } else {
                $status = "Noch nicht angemeldet";
                }
                ?>
                <?php
                if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                session_start();

                $username = $_POST['username'];
                $passwort = $_POST['passwort'];

                $hostname = $_SERVER['HTTP_HOST'];
                $path = dirname($_SERVER['PHP_SELF']);

                // Benutzername und Passwort werden überprüft
                if ($username == 'test' && $passwort == 'test') {
                $_SESSION['angemeldet'] = true;

                // Weiterleitung zur geschützten Startseite
                if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
                if (php_sapi_name() == 'cgi') {
                header('Status: 303 See Other');
                }
                else {
                header('HTTP/1.1 303 See Other');
                }
                }

                header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/geheim/index.php');
                exit;
                }
                }
                ?>



                Unten lediglich per echo: <?php echo $status; ?>


                Leider erhalte nach erfolgtem Login auf die geheim/index.php diesen Fehler: Warning: Cannot modify header information - headers already sent by (output started at ....

                Kommentar


                • #9
                  Original geschrieben von arkos
                  er hat sie doch drinne...
                  Aber in Abhängigkeit von der Methode POST ...
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Original geschrieben von RolandG
                    So habe ich jetzt erweitert:
                    Jetzt liest du bitte erst mal die Regeln, und schaust, was dort zum Posten von Code für Hinweise drinstehen.
                    Leider erhalte nach erfolgtem Login auf die geheim/index.php diesen Fehler: Warning: Cannot modify header information - headers already sent by (output started at ....
                    Und dazu liest du bitte den Sticky Thread, in dem die Ursache dieses "Problem", mit dem jeder Newbee früher oder später angerannt kommt, über das sich aber kaum einer mal selbstständig informiert, erklärt wird.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Original geschrieben von wahsaga
                      Aber in Abhängigkeit von der Methode POST ...
                      sorry, recht haste...

                      und zum thread-eröffner... mach deine letzte änderung ma schnell rückgängig. denn beim login haste nu bspw 2 x session_start()... dat mag er nicht.
                      **********
                      arkos
                      **********

                      Kommentar


                      • #12
                        Danke an Alle, die mir geholfen haben.

                        Jetzt klappts!

                        Kommentar


                        • #13
                          Login Script erweitern

                          Hallo,
                          ich setze dieses kleine Login Script ein, welches meinen Sicherheitsanforderungen prinzipiell genügt:

                          PHP-Code:
                          <?php
                          session_start
                          (); 
                          if (isset(
                          $_SESSION["angemeldet"])) {
                          $status "Sie sind bereits eingeloggt!
                          <a href='index.php'>...zur geheimen Seite</a>"
                          ;
                          } else {
                          $status "Nicht eingeloggt";
                          }
                          if (
                          $_SERVER['REQUEST_METHOD'] == 'POST') {

                                
                          $username $_POST['username'];
                                
                          $passwort $_POST['passwort'];

                                
                          $hostname $_SERVER['HTTP_HOST'];
                                
                          $path dirname($_SERVER['PHP_SELF']);

                                
                          // Benutzername und Passwort werden überprüft
                                
                          if ($username == 'user' && $passwort == 'geheim') {
                                 
                          $_SESSION['angemeldet'] = true;

                                 
                          // Weiterleitung zur geschützten Startseite
                                 
                          if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
                                  if (
                          php_sapi_name() == 'cgi') {
                                   
                          header('Status: 303 See Other');
                                   }
                                  else {
                                   
                          header('HTTP/1.1 303 See Other');
                                   }
                                  }

                                 
                          header('Location: [url]http://[/url]'.$hostname.($path == '/' '' :
                           
                          $path).'/index.php');
                                 exit;
                                 }
                                }
                          ?>

                          Soweit funktioniert alles tadellos.
                          Ich möchte jetzt, dass eine Fehlerhinweis angezeigt wird, falls der Login scheitert. Bis jetzt springt die Seite immer wieder nur auf die index.php zurück.

                          Alle meine Versuche sind bis jetzt gescheitert....

                          Wer kann mir helfen? Danke!

                          Kommentar


                          • #14
                            Lerne PHP: www.peterkropff.de
                            Sunshine CMS
                            BannerAdManagement
                            Borlabs - because we make IT easier
                            Formulargenerator [color=red]Neu![/color]
                            Herkunftsstatistik [color=red]Neu![/color]

                            Kommentar


                            • #15
                              Re: Login Script erweitern

                              Original geschrieben von RolandG
                              Ich möchte jetzt, dass eine Fehlerhinweis angezeigt wird, falls der Login scheitert.
                              Also im Prinzip nichts großartig neues/anderes, als in deinem bestehenden Thread. *zusammenführ*

                              Alle meine Versuche sind bis jetzt gescheitert....
                              Beschreibe dein Problem.
                              "Ich nix kriegen hin" ist keine Problembeschreibung.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X