Ankündigung

Einklappen
Keine Ankündigung bisher.

Zugriff beschränken

Einklappen

Neue Werbung 2019

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

  • Zugriff beschränken

    Hallo ihr php-Götter,

    kennt ihr den Knoten, den man manchmal im Kopf hat ? Meiner sieht so aus:

    Ich möchte den Zugriff auf eine Reihe von Pages nur für registrierte Nutzer zulassen. Dafür nutze ich die Dreamweaver-Funktionen "Zugriff beschränken" und relevante, welche nicht registrierte Nutzer oder solche mit den falschen Rechten per header() umleitet.

    Strrukturell betrachtet habe ich eine index.php, welche bei Klick auf einen Link im Menü per Funktion die gewünschte Datei includet (Link-Besispiel: index.php?LinkMe=welcome -> includet dann welcome.php in die index.php).

    Für die beschränkten Seiten funktioniert das nicht, da ich den bekannten "header always sent"-Fehler bekomme. Andererseits kann ich die Datei ja auch nicht am Code-Beginn includen.

    Ich hoffe, ich hab das nachvollziehbar dargestellt.
    Habt ihr eine Lösung?

    Dag


  • #2
    also mal ohne Dreamweaver:

    1. nachdem der Link, und somit die index.php mit Parametern, aufgerufen wird, "weiss" die index.php nach deiner GET-Abfrage, welche Seite zu includen gewünscht ist.

    2. Falls noch nicht geschehen, sollten hier die für den Zugriff relevanten User-Daten aus der DB gelesen werden.

    3. Prüfung: Zugriff erlaubt => includen ausführen; Zugriff nicht erlaubt => nicht includen und ggfs. entsprechende Ausgabe

    Kommentar


    • #3
      aber...

      ...genau, aber da fängt ja mein "Problem" an!

      Für mich sieht es so aus: entweder ich erstelle eine Tabelle mit Seiten und Rechten (was ich vermeiden möchte), lese dann die $_GET-Anfrage aus, vergleiche und include oder eben nicht.

      Oder aber: in den zu includenden Seiten ist ein entsprechender Marker (bei mir noch Dreamweaver). Dann aber habe ich ja schon einen Teil der index.php geladen, nämlich bis zur if(du darfst)-else(du nicht)-Weiche. Das ergibt dann den header-Fehler.

      Sorry, ich vermute, für die meisten hier ist das echt zu dumm, aber als echter Noob.... naja. Danke für Eure Geduld!

      Dag

      Kommentar


      • #4
        Hallo!

        Dieser header Fehler entsteht meistens wenn bevor der header ausgeführt wird schon zum Beipiel Html Code vor der header Anweisung steht. Auch leerzeichen im Code dürfen nicht davor stehen! Das einzige was davor stehen darf ist reine PHP Code! Das heist du müsstest alles mal vergleichen ob da Html Code davor steht!

        mfg der Litter
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        http://www.lit-web.de

        Kommentar


        • #5
          Hi

          naja, darum gehts´s ja: ich WEISS, dass da HTML-Code steht, kanns aber nicht ändern, weil:

          Includet wird in einen DIV-Bereich mitten in der index-Seite. Die header-Anweisung steht momentan allerdings in der einzubindenden Seite, welche ja die Zugriffsbeschränkung hat.

          Kommentar


          • #6
            Zeige am besten mal von den beiden Seiten wo du grad von redest den Code. Ich denke da kann man dir besser helfen. Denn ohne Code Kenntnisse wird das ein Rätzel raten und führt am Ende tortzdem zu keinem Ergebnis!

            Meist ist so was nur das Problem von falscher Strukturierung!

            Ich bin aber net mehr lange am Rechner,weil gehe glei zum Fußball um hoffentlich die gloreiche SGD siegen zu sehen!
            mfg der Litter
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            http://www.lit-web.de

            Kommentar


            • #7
              hi

              ja, ich denke auch, es liegt an der Struktur... vielleicht können wir ja mal per icq o.ä. kommunizieren?

              hier der Code

              includiert wird :
              ********************************
              PHP-Code:
              <?php
              if (!isset($_SESSION)) {
                
              session_start();
              }
              $MM_authorizedUsers "2,1";
              $MM_donotCheckaccess "false";

              // *** Restrict Access To Page: Grant or deny access to this page
              function isAuthorized($strUsers$strGroups$UserName$UserGroup) { 
                
              // For security, start by assuming the visitor is NOT authorized. 
                
              $isValid False

                
              // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
                // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
                
              if (!empty($UserName)) { 
                  
              // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
                  // Parse the strings into arrays. 
                  
              $arrUsers Explode(","$strUsers); 
                  
              $arrGroups Explode(","$strGroups); 
                  if (
              in_array($UserName$arrUsers)) { 
                    
              $isValid true
                  } 
                  
              // Or, you may restrict access to only certain users based on their username. 
                  
              if (in_array($UserGroup$arrGroups)) { 
                    
              $isValid true
                  } 
                  if ((
              $strUsers == "") && false) { 
                    
              $isValid true
                  } 
                } 
                return 
              $isValid
              }

              $MM_restrictGoTo 'index.php?LinkMe=denied';
              if (!((isset(
              $_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
                
              $MM_qsChar "?";
                
              $MM_referrer $_SERVER['PHP_SELF'];
                if (
              strpos($MM_restrictGoTo"?")) $MM_qsChar "&";
                if (isset(
              $QUERY_STRING) && strlen($QUERY_STRING) > 0
                
              $MM_referrer .= "?" $QUERY_STRING;
                
              #$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
                  
              header("Location: $logoutGoTo");
                exit;
              }
              ?>

              includieren soll die index.php per Funktion in einen div-Container: 
              ********************************
              <?php 
                  
              // Funktion LinkIt aufrufen oder Startseite anzeigen
                  
              if (isset($_GET["LinkMe"]))
                  {
                  
              LinkIt($_GET["LinkMe"]); //gibt include(relativer Pfad) wieder
                  
              }
                  else 
                  {
                  include 
              "start.php";
                  }
              ?>

              Kommentar


              • #8
                Kein error_reporting(E_ALL);?

                Weil in dieser Zeile ist schon was komisch finde ich!

                PHP-Code:
                <?php
                //Hier sind Klammern die du glaube ich gar nicht brauchst
                if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup']))))
                 
                //mal geändert das müsste an Klammern reichen
                if (!isset($_SESSION['MM_Username']) && isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup']))
                 
                //auch hier sinnlose klammern
                if (($strUsers == "") && false)
                 
                //geändert
                if ($strUsers == "" && false)
                ?>
                Aber das hat mit dem Fehler denke ich nichts zu tun. Hast den Code selber geschrieben?
                Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                http://www.lit-web.de

                Kommentar


                • #9
                  .... nein, das ist ein Dreamweaver-Snippet, was üblicherweise auch gut funktioniert, nur eben nicht mit der include-Anweisung. Error_reporting ist an, hab ich nur nicht mitkopiert.

                  Kommentar


                  • #10
                    Hallo!

                    Aber diese Klammern sind vollkommen unnötig!

                    Ich empfehle dir umzusteigen auf PSPad. Habe ich auch getan und bereue es nicht!

                    Und wie gesagt vor dem header steht Html und da kann der header nicht funktionieren!
                    Aber bei dem Code dir zu helfen ist mir leider nicht möglich tut mir leid. Mir ist der Code zu wuselig!

                    Ich weis nicht ob das jetzt richtig ist! Aber tausche das mal!

                    PHP-Code:
                    <?php
                    //So steht es bei dir
                    $MM_restrictGoTo 'index.php?LinkMe=denied';
                    if (!((isset(
                    $_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
                      
                    $MM_qsChar "?";
                      
                    $MM_referrer $_SERVER['PHP_SELF'];
                      if (
                    strpos($MM_restrictGoTo"?")) $MM_qsChar "&";
                      if (isset(
                    $QUERY_STRING) && strlen($QUERY_STRING) > 0
                      
                    $MM_referrer .= "?" $QUERY_STRING;
                      
                    #$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
                        
                    header("Location: $logoutGoTo");
                      exit;
                    }
                    //Und mache mal so
                    if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
                      
                    $MM_qsChar "?";
                      
                    $MM_referrer $_SERVER['PHP_SELF'];
                      if (
                    strpos($MM_restrictGoTo"?")) $MM_qsChar "&";
                      if (isset(
                    $QUERY_STRING) && strlen($QUERY_STRING) > 0
                      
                    $MM_referrer .= "?" $QUERY_STRING;
                      
                    #$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
                        
                    header("Location: $logoutGoTo");
                      exit;
                    }
                    $MM_restrictGoTo 'index.php?LinkMe=denied';
                    ?>
                    mfg der Litter.
                    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                    http://www.lit-web.de

                    Kommentar

                    Lädt...
                    X