Das Deutsche PHP Forum

Einklappen
Keine Ankündigung bisher.

Das Deutsche PHP Forum

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

  • Adminbereich

    Hallo,
    Ich wollte bald anfangen einen Adminbereich zu Erstellen in denen sich eingetragene Benutzer mit ihrem Passwort anmelden können die sich in einer Datenbank befinden.
    Dabei soll der Admin natürlich Zusatzfunktionen haben.
    Wie soll ich damit am besten anfangen? Könnt ihr mir Tipps geben auf was ich achten muss, wie ich die die Benutzerinformationen aus der Datenbank auslese und evtl. ein paar hilfreiche Seiten posten?

  • #2
    Zu Anfang überleg dir, wie deine User Tabelle aussehen soll.

    Username | firstname | lastname | ... | admin
    Muster | Hans | Wurst | ... | 1

    Und dann musst du die Extrafunktionen für den Admin mit einer if-Abfrage umhüllen, damit das auch nur ein Admin sehen kann.

    Aber zuerst würde ich mich um die Grundlagen kümmern...
    ACHTUNG!!! SIGNATUR!!!
    :
    var_dump($gehirn); exit; 
    0 ??? WTF ? nervtag.de | freutag.net | friendmetr.com

    Kommentar


    • #3
      Danke für die Hilfe, jetzt kommt gleich das nächste Problem

      Ich bekomme als die Fehler:

      Code:
      Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files\xampp\htdocs\Kursverwaltung\php\login.php on line 16
      
      Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\htdocs\Kursverwaltung\php\intern.php:16) in C:\Program Files\xampp\htdocs\Kursverwaltung\php\login.php on line 30

      PHP-Code:
      <?php 
      session_start 
      ();


      $connect mysql_connect ("localhost""root""dieap"); 
          
          if (!
      mysql_select_db ("loginSystem"$connect)) { 
              echo (
      "Keine Verbindung zur Datenbank m&ouml;glich"); 
          } 

      $sql "SELECT "."id, Vorname, Nachname, Nickname "."FROM "."user "
          
      "WHERE "."(Nickname like '".$_REQUEST["name"]."') AND "."(Kennwort = '".($_REQUEST["pwd"])."')"
          
      $result mysql_query($sql); 

      if (
      mysql_num_rows($result) > 0) { 

        
      $data mysql_fetch_array ($result); 


        
      $_SESSION["user_id"] = $data["id"]; 
        
      $_SESSION["user_nickname"] = $data["Nickname"]; 
        
      $_SESSION["user_nachname"] = $data["Nachname"]; 
        
      $_SESSION["user_vorname"] = $data["Vorname"]; 

        
      header ("Location: login.php"); 

      else 

        
      header ("Location: ../index.html"); 


      ?>
      Aber ich habe keine Ahnung was er mir mit dem ersten Fehler sagen will. Kann mir da mal jemand helfen?
      Zuletzt geändert von Aske; 04.12.2009, 23:08.

      Kommentar


      • #4
        Ja, das hier: mysql_error
        --
        ^^ O.O
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Jetzt funktioniert mein Login script. Nun möchte ich aber einen Adminbereich. Dafür habe ich in meine DB "user" das feld "admin" eingefügt bei usern mit adminrechten steht es auf 1, bei usern ohne auf 0, und ich möchte das nach der Anmeldung usern mit adminrechten gleich auf die administrationsoberfläche geleitet werden.

          Dazu habe ich mir diesen code ausgedacht
          PHP-Code:
          <?php
          include("checkuser.php");

          if (isset (
          $_SESSION["admin"]) == 1) {
                  echo 
          "Hallo Admin";
              }
              
              else {
                  echo 
          "Hallo user";
              }
                  
          ?>
          funktioniert aber nicht, jeder wird mit "Hallo Admin" begrüßt. Liegt wohl daran das er mit dem == 1 nichts anfangen kann oder? Das Feld "admin" ist vom Typ tinyint(1).

          Ausserdem habe ich bedenken das jeder mit einer gültigen session den adminbereich über die adresszeile aufrufen kann.
          Wäre es also sinnvoll eine include("checkadmin.php"); in die admin-seiten mit einzubinden und in dieser überprüft wird ob der user adminrechte hat?

          Kommentar


          • #6
            Ausserdem habe ich bedenken das jeder mit einer gültigen session den adminbereich über die adresszeile aufrufen kann.
            Dann machste am Anfang eine if-Abfrage
            PHP-Code:
            if($_SESSION["admin"]) != '1'){
              
            header("location: irgendwas.php");
              exit;

            Das denn bei jeder "Adminseite" und Zack, kommen nur Admins auf die Seite
            ACHTUNG!!! SIGNATUR!!!
            :
            var_dump($gehirn); exit; 
            0 ??? WTF ? nervtag.de | freutag.net | friendmetr.com

            Kommentar


            • #7
              Das hat auch keinen anderen Effekt als eine Bedingung.
              --
              ^^ O.O
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Wie sollte man es dann am besten lösen?

                Kommentar


                • #9
                  Oben vermisse ich das session_start, ansonsten sehe ich das Problem nicht.
                  --
                  ^^ O.O
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    Das session_start(); ist in checkuser.php

                    PHP-Code:
                    session_start (); 

                    if (!isset (
                    $_SESSION["user_id"])) { 
                      
                    header ("location: ../index.php"); 

                    Jetzt bekomme ich den Fehler das er die header informationen nicht ändern kann weil es ja schon in checkphp.php vorkommt und zusätzlich in meinem code

                    PHP-Code:
                    include("checkuser.php");
                        if (
                    $_SESSION["admin"] != 1) {
                            
                    header("location: blx.php");
                            exit;
                        } 
                    und ich alle nicht admins auf eine andere seite verweisen möchte.
                    Gibt es keine möglichkeit den Code in dem Gedanken unverändert zu lassen und nicht bei allen nicht-admins den fehler auszugeben?

                    Kommentar


                    • #11
                      Gibt es keine möglichkeit den Code in dem Gedanken unverändert zu lassen und nicht bei allen nicht-admins den fehler auszugeben?
                      Und was soll das bedeuten?
                      --
                      ^^ O.O
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar


                      • #12
                        Zitat von Aske Beitrag anzeigen
                        PHP-Code:
                        if (isset ($_SESSION["admin"]) == 1) { 
                        funktioniert aber nicht, ...
                        Doch das funktioniert bestens.

                        Wenn $_SESSION["admin"] gleich 0 ist, ist es auch gesetzt.

                        Jetzt klar?

                        Wenn Du einen geschützten Bereich haben willst, mußt Du Dich schon entscheiden, was Du tun willst:
                        Die Admin-Seite soll nur für Admins zugänglich sein? Dann muß jeder andere weg - zum Beispiel auf die öffentliche Startseite.

                        Wenn Du keine eigene Admin-Seite hast, sondern der nur ein Teil Deines Gesamt-Skriptes ist (Dein echo "Hallo Admin";), kann den auch niemand über die Adresszeile aufrufen.
                        Saubere Programmierung vorausgesetzt.
                        Zuletzt geändert von Optimist; 06.12.2009, 07:31.

                        Kommentar

                        Lädt...
                        X