Seite Verweigern mit sessions

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

  • Seite Verweigern mit sessions

    Hallo zusammen, ich bin noch ein Anfänger in PHP und bin nun beim Thema Sessions.
    Ich habe ein LogIn script gebastelt das mit Sessions funktioniert!
    Jedoch habe ich ein Problem. Wen ich mich einlogge komm ich in den 'Memberbereich hinen', dan gehe ich auf eine andere seite und gehe nachher nochmal direkt zur Seite, die gesperrt werden sollte (ses2.php). Und nun komme ich wieder rein.
    Wen ich dan aber bei meinem anderen PC die direkte url eingebe kommt Zugriff Verweigert! Das ist ja gut so.
    Wird die eingabe im Chache gespeichert, sodass ich diesen Tag ohne nochmal die LogIn daten eingeben muss?

    Hier mal ein paar ausschnitte:
    PHP-Code:
    session_start();
    $_SESSION['nick'] = $HTTP_POST_VARS["nick"];
    $_SESSION['nick2'] = $HTTP_POST_VARS["nick"];

    // auf der zu sperrenden Seite
    session_start();
    if (
    $_SESSION[nick] == "" or $_SESSION[nick2] == ""
    { echo 
    "Zugriff Verweigert!"; }
    elseif (
    $_SESSION[nick] == $_SESSION[nick2])// kann man sicher besser machen, wie?


        echo 
    "Eingeloggt";
    }
    else
    {
    echo 
    "Zugriff Verweigert!";

    Der kommentar sollte meine 2. Frage sein.
    Geht das mit if(isset()) ?
    Bücher für Programmierer

  • #2
    [ ] Du hast verstanden was Sessions sind und wie sie funktionieren

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Du solltest dich am besten nochmal mit Sessions beschäftigen. Folgenden Link würde ich mal besuchen: Session Funktionen im Manual.

      Davon abgesehen:
      Du solltest $_POST benutzen, $HTTP_POST_VARS ist veraltet. Und wieso setzt du um die Array-Schlüssel bei $HTTP_POST_VARS['key'] Hochkommas und bei $_SESSION nicht? So wird angenommen, dass nick und nick2 Konstanten sind.
      Nieder mit der Camel Case-Konvention

      Kommentar


      • #4

        der code ist geil. zweimal session-start. zwei session-variablen werden mit dem selben post-wert belegt und dann untereinander verglichen.

        Kommentar


        • #5
          Das ist ja nicht die selbe Seite.
          Der untere Code ist
          auf der zu sperrenden Seite
          Bücher für Programmierer

          Kommentar


          • #6
            Original geschrieben von andygyr
            Das ist ja nicht die selbe Seite.
            Das ändert aber nichts daran, dass du mit
            PHP-Code:
            elseif ($_SESSION[nick] == $_SESSION[nick2]) 
            zwei mal den exakt selben Wert vergleichst - schliesslich hast du auf der vorhergehenden Seite in beide Session-Variablen genau den selben Wert reingeschrieben.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              So lang die Session aktive ist und sie auch bekannt ist wirst du ohne Login auf die Geschützen seiten kommen.

              Verwende eine Logout funktion um die Session zu zerstören danach kommste dann auch net mehr auf die Gesperten seiten drauf.

              2 Gleiche werte in die Session zuschreiben und dann mit einander zuvergleichen macht wenig sin.
              Besser du verwendest stattdesen eine bolean Variable.

              Kommentar


              • #8
                kann ich das so machen:

                if ($_SESSION['nick'] == true)
                anweisung wen ein inhalt in der session

                if ($_SESSION['nick'] == true)
                anweisung wen kein inhalt in der session

                geht das so?
                Bücher für Programmierer

                Kommentar


                • #9
                  Original geschrieben von andygyr
                  kann ich das so machen:

                  if ($_SESSION['nick'] == true)
                  anweisung wen ein inhalt in der session

                  if ($_SESSION['nick'] == true)
                  anweisung wen kein inhalt in der session

                  geht das so?
                  Abgesehen davon, dass das beides identische Bedingungen sind:

                  Ja, wenn für dich der Eintrag true in der Session bedeutet, dass der Nutzer sich zuvor korrekt authentifiziert hat, kannst du das so machen.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Wenn der login erfolgreich ist schreibste

                    PHP-Code:
                    $_SESSION['nick'] = true
                    Wenn du dann die geschützen Seiten Prüft machst du das
                    PHP-Code:
                    if (!isset ($_SESSION['nick']) ){
                    echo
                    "Sie sind nicht Berechtig";
                    exit(); } 
                    Oder Ruft eben dann die Logout datei auf wo dann die Session zerstört wird. Session_Destroy()
                    Am besten machst du für die kontrolle eine eigene datei und bindet sie in alle Seiten ein die geschütz werden sollen.
                    Bwz. kanst du dann wieder auf das Login Formular umleiten.
                    Zuletzt geändert von splasch; 08.02.2007, 20:31.

                    Kommentar


                    • #11
                      Hallo,
                      erstmal Danke für eure Antworten!
                      Hab jedoch schon wieder ein Problem:
                      PHP-Code:
                      //Datei log.php -> wird vom Formular (login.php) aufgerufen, wen die Daten(pw) stimmen wird admin.php eingecludet
                      <?php
                      session_start
                      ();
                      $_SESSION['admin'] = $HTTP_POST_VARS["admin"];
                      ?>


                      // Datei admin.php -> geschützter bereich für den admin mit einem link zur userliste.php
                      <?php
                      if (!isset ($_SESSION['admin']) ){
                      echo
                      "Sie sind nicht Berechtig";
                      exit(); }
                      ?>


                      // Datei userliste.php -> Hier habe ich keinen Zugriff!!!
                      <?php
                      if (!isset ($_SESSION['admin']) ){
                      echo
                      "Sie sind nicht Berechtig";
                      exit(); }
                      ?>
                      Also wiso habe ich auf userliste.php kein zugriff?
                      Weil die nicht dirket über das Formular aufgerufen wird?
                      Bücher für Programmierer

                      Kommentar


                      • #12
                        Original geschrieben von andygyr
                        Also wiso habe ich auf userliste.php kein zugriff?
                        startest du dort auch eine session?

                        mal was anderes, was soll denn das darstellen:
                        $_SESSION['admin'] = $HTTP_POST_VARS["admin"];
                        ...
                        if (!isset ($_SESSION['admin']) ){?

                        wenn ich per post irgendeinen "admin"-wert übergebe bin ich eingeloggt?

                        Kommentar


                        • #13
                          Ne, auf userliste.php wird keine neue Session gestartet.
                          Ja, wen man einen admin wert übergibt ist man eingeloggt, hab das zum testen mal so gemacht.
                          Ich glaube aber, man kan auch einen nicht korekten wert übergeben um eingeloggt zu sein!

                          Klappt das, wen ich die Session nicht beim Formular starte, sondern erst in der admin.php?
                          Bücher für Programmierer

                          Kommentar


                          • #14
                            Original geschrieben von andygyr
                            Ne, auf userliste.php wird keine neue Session gestartet.

                            und warum wundert es dich dann, dass $_SESSION['admin'] nicht gesetzt ist, bzw. du keinen zugriff erhälst?

                            Kommentar


                            • #15
                              naja... wen ich einmal die seite aufrufe, wo die $_SESSION['admin'] = blablabla ist, dan pruft es bei jeder seite, die ich aufrufe ob die Session leer ist, wen sie leer ist wird der Fehler angezeigt ist sie nicht leer zeigt es die Seite an...
                              Bücher für Programmierer

                              Kommentar

                              Lädt...
                              X