Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme beim Vergleich mit if..

Einklappen

Neue Werbung 2019

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

  • Probleme beim Vergleich mit if..

    Hi,
    also folgender Code erwartet einen user, der sich auf der Page einlogt:

    if($userpass == $passdbarray[1]){
    setcookie("isloggedin");
    $isloggedin='yes';
    setcookie("isloggedin",$isloggedin);
    session_start();
    $_SESSION['user']=$username;
    if($_SESSION['user']=="basic" OR $_SESSION['user']=="iceman" OR $_SESSION['user']=="Admin"){
    $isadmin='yes';
    setcookie("isadmin",$isadmin);
    }else{
    $isadmin='no';
    setcookie("isadmin",$isadmin);
    }
    header("Location: adminoruser.htm");
    }else{
    echo("Falsches Passwort oder falscher Benutzername!");
    }
    mysql_close();


    So Wenn man also zu den auserwählten gehört besitzt man einen Cookie dessen name isadmin ist und dort steht yes. Dank einer test.php die mir den cookieinhalt ausspuckt weiss ich auch, dass dieses Skript keine Probleme macht. Nun aber mein Problem, hier nämlich die adminoruser.htm:

    <?php
    if($_COOKIE["isloggedin"]=='yes'){
    if($_COOKIE["isadmin"]=='yes'){
    header("Location: admin.htm");
    } else {
    header("Location: management.htm");
    }
    } else {
    header("Location: login.htm");
    }
    ?>

    So, die if Anfrage auf den islogedin funktioniert einwandfrei, weil sonst landet man auf der login page. Meine isadmin abfrage funktioniert aber nciht, weil die mich immer auf die managment.htm verweist.

    Warum?

    Danke,
    Basic

  • #2
    a) Ist der Code wirklich so unformatiert? Dann ist es kein Wunder, dass Du Dich zurechtfindest. Nach dem kosequenten Einrücken bitte auch die [php] Tags verwenden.
    b) Ein billiger Cookie reicht als Authorisierung? Was hindert andere Benutzer daran, die Cookiedaten zu übermitteln?
    Was passiert, wenn man admin.htm direkt aufruft?
    http://en.wikipedia.org/wiki/Security_through_obscurity ?

    Kommentar


    • #3
      Re: Probleme beim Vergleich mit if..

      Zitat von basic
      Dank einer test.php die mir den cookieinhalt ausspuckt weiss ich auch, dass dieses Skript keine Probleme macht.
      Was spuckt er Dir denn für einen Cookieinhalt für isadmin aus? Bestimmt nicht 'yes', oder? Folglich liefert Folgendes in Deinem ersten Skript nicht true zurück:
      PHP-Code:
      <?php
      $_SESSION
      ['user']=="basic" OR $_SESSION['user']=="iceman" OR $_SESSION['user']=="Admin");
      ?>

      Kommentar


      • #4
        doch genau das liefert mir die test.php.

        ein einfacher echo $_COOKIE["isadmin"];

        ist dein Freund ^^.

        BTW: wenn man versucht die admin.htm aufzurufen, wird als erstes überprüft ob die variable isadmin im cookie auch wirklich true ist, ist sie das nicht landet man auf dem loginbildschirm in etwa so:

        Also das steht im Quelltext der admin.htm.
        <?php
        if($_COOKIE["isloggedin"]=='yes' AND $_COOKIE["isadmin"]=='yes'){
        }
        else {
        header("Location: login.htm");
        }

        ?>

        @Bruchpilot:
        Danke, dass mein Code billig ist, da ich ihn für meine 3 Tage PHP Erfahrunf für durchaus ansehnlich halte und wie zum Teufel geht das mit dem php tags?

        Danke,
        Basic

        Kommentar


        • #5
          Danke, dass mein Code billig ist, da ich ihn für meine 3 Tage PHP Erfahrunf für durchaus ansehnlich halte
          a)
          Anmeldungsdatum: 15.07.2005
          Beiträge: 13
          Irgendwie rechne ich da mit mehr als drei Tagen?

          b) Nicht den Code habe ich als billig bezeichnet, sondern den Cookie.
          Ich kann als Benutzer auch selbst Cookies erstellen, die dann an den Server gesendet werden. Damit ist der Schutz dann nicht-existent
          Schau Dir leiber Sessions an, http://de2.php.net/session

          und wie zum Teufel geht das mit dem php tags?
          [php]<?php
          if (foo()) {
          echo bar();
          }
          ?>[/php]
          PHP-Code:
          <?php
          if (foo()) {
              echo 
          bar();
          }
          ?>

          Kommentar


          • #6
            Zitat von basic
            ein einfacher echo $_COOKIE["isadmin"];

            ist dein Freund ^^.
            Sag mal, für wie dämlich hälts Du mich eigentlich?
            Du bist derjenige, der hier unqualifizierte und nicht präzise Fragen stellt.
            Wofür postest Du z.B. das erste Skript, wenn doch - wie Du ja selbst überprüft hast - der Cookie isadmin bei Dir exisitiert und den Wert 'yes' enthält?
            Hälts Du es für eine so spannende und aufschlussreiche Lektüre?

            Weiterhin:
            Ich habe mit Deinem [überflüssigerweise geposteten] ersten Skript einen Cookie is_admin mit dem Wert 'yes' gesetzt (dabei oben genannten Ausdruck durch true ersetzt). Anschließend zweites Skript ausgeführt...

            Und siehe da: Ich werde auf die Seite admin.htm weitergeleitet...

            Kommentar


            • #7
              kann man sessions denn nicht ähnlich wie cookies erzeugen?

              Ausserdem nutze ich ja auch sessions, ich dacht nur mit dem Cookie baue ich ne nette möglichkeit ein um dafür zu sorgen, dass man automatisch ausgeloggt wird?!

              Weil der ist ja weg wenn man das fenster schließt. theoretisch kann ich natürlich auch meine session mit zwei booleans füllen ala isloggedin und isadmin und die dann abfragen, die Arbeit ist die gleiche, aber ist das sicherer?

              Basic

              PS: Versteht mich nicht falsch, ich bin dankbar für eure Hilfe

              Kommentar


              • #8
                Ein Cookie wird "im" Browser gespeichert, also beim Benutzer.
                Mein Browser hat gerade die Anfrage
                GET /forum/posting.php?mode=reply&t=49465&sid=...
                HTTP/1.1
                Host: www.phpfriend.de
                [...]
                Cookie: php_de_data=...eine lange Zeichenkette...; php_de_sid=...eine etwas kürzere Zeichenkette...
                an den Server geschickt. Dabei wurden zwei Cookies übertragen, die dann im Skript als $_COOKIE['php_de_data'] und $_COOKIE['php_de_sid] zur Verfügung standen; direkt die Werte, die mein Browser da geschickt hat. Wenn mein Browser Cookie: php_de_data=%DCbelk%FCbel
                schickt, dann stünde in $_COOKIE['php_de_data'] Übelkübel drin.
                Dazu kann ich meinen Brwoser bringen, kein Problem.

                Sessions mit Cookie speichern beim client nur einen Wert, die Session-Id; im Beispiel der Wert von php_de_sid. Alle anderen Daten liegen auf dem Server.
                Selbst wenn ich nun die Daten auf meinem Rechner ändere, statt php_de_sid=123456 frech php_de_sid=9876543 senden lasse, nutzt mir das nur etwas, wenn gerade zufällig auf dem Server eine Session 9876543 existiert. Die Vergabe der Session-id ist so gewählt, dass Zufallstreffer wirklich das sind: sehr unwahrscheinlicher Zufall. An die Serverdaten komme ich (wenn nicht ein großer Fehler im Webserver auftaucht) von meinem Rechner aus nicht ran.

                Kommentar


                • #9
                  ok also statt dem cookie einfach zwei booleans in die session schreiben, die ich eh benutze weil ich in der den loginnamen speichere, den brauch ich für weitere ausgaben später ^^.

                  Gut machen wir es so.

                  großes Lob,
                  Basic

                  Kommentar

                  Lädt...
                  X