Login mit Adminrechte

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

  • Login mit Adminrechte

    Hallo zusammen,

    ich habe folgendes Problem. Habe eine Webseite erstellt, bei der man sich einloggen kann. Dies funktioniert auch alles.
    Die Benutzerverwaltung habe ich in einer MySQL Datenbank abgelegt. In dieser gibt es eine Spalte "recht" die mit "admin" oder "benutzer" belegt ist.
    Ich möchte gerne beim Login darauf prüfen ob derjenige, der sich einloggt ein "admin" oder "benutzer" ist. Da ein "admin" mehr Funktionen später haben soll.

    Wie schon gesagt das normale Login funktioniert. Könnte mir jemand sagen, was ich am unteren Quellcode ändern muss, dass das Login noch unterscheidet zwischen "admin" und "benutzer"

    Formular:
    HTML-Code:
    <form method="post" action="./../controller/c_login.php">
       <table>
       	<tr>
       	<th algin="left">Benutzername:</th>
       	   <td><input type="text" name="username"></td>
       	</tr>
       	<tr>
       	<th algin="left">Passwort:</th>
      	   <td><input type="password" name="password" id"password"></td>
      	</tr>
      	<tr>
      	<th></th>
       	   <td><button name="login" type="submit" id="login" value="login">Login<button>&nbsp;&nbsp;
       	   <button type="reset" value="reset">Eingabe l&ouml;schen</button></td>
       	</tr>
     </form>
    Überprüfung:
    PHP-Code:
    session_start();
    include 
    '../../anwendungskern/benutzerverwaltung.php'

    if (isset(
    $_POST['login'])) 

        
    $id=check_user($_POST['username'], $_POST['password']); 
        if (
    $id!=false
        {
            
    login($id); 
        }
        else 
        {
             include 
    './../seiten/login_false.php'
        }

    if (!
    logged_in()) 
    {
       include 
    './../seiten/login_false.php'
    }  
    else 
    {
        include 
    './../seiten/logged_in.php'

    Funktion:
    PHP-Code:
    function check_user($username$password$recht

        
    $sql="SELECT id 
        FROM benutzer  
        WHERE username='"
    .$username."' AND password=MD5('".$password."')
        LIMIT 1"

        
    $resultmysql_query($sql) or die(mysql_error()); 
        if ( 
    mysql_num_rows($result)==1
        { 
            
    $benutzer=mysql_fetch_assoc($result); 
            return 
    $benutzer['id']; 
        } 
        else 
        {
            return 
    false
        }



    function 
    login($id

        
    $sql="UPDATE benutzer
        SET session='"
    .session_id()."' 
        WHERE id="
    .$id
         
    mysql_query($sql); 


    function 
    logged_in() 

        
    $sql="SELECT id 
        FROM benutzer
        WHERE session='"
    .session_id()."' 
        LIMIT 1"

        
    $resultmysql_query($sql); 
          return ( 
    mysql_num_rows($result)==1); 

    Vielen Dank im Voraus.

    Gruß
    Nano

  • #2
    Hi,

    schreib den Status in die Session und prüfe diesen an den relevanten Stellen.

    LG

    Kommentar


    • #3
      Da gibt es so einige Methoden, simplere sowie komplizierte. Wenn es keine Notwendigkeit für eine aufwendigere Benutzerverwaltung geben sollte, dann könntest du deine Benutzer-Tabelle um eine Spalte "is_admin" erweitern, in der dann je nachdem, ob es sich bei Benutzer X um einen Admin handelt oder nicht auf 1 oder 0 steht.
      Nieder mit der Camel Case-Konvention

      Kommentar


      • #4
        Hi,

        kann man nicht so etwas programmieren, das auf "admin" oder "benutzer" prüft?

        Kommentar


        • #5
          Natürlich kann man, ich habe Dir doch schon gesagt, wie Du das machen kannst.

          Kommentar


          • #6
            verdammt noch eins...

            Hey Leute,
            ich weiss, dieser Post ist iwie dämlich, aber aus irgendeinem Grund finde ich den Fehler nicht, mein Script greift das obige auf und ergäntzt es um einige Teile!

            PHP-Code:
            <?php
            include("../includes/config.inc.php"); // die datenbankverbindung
            include ("../includes/user_check.inc.php");
            if (isset(
            $_POST['submit'])) 

                
            // no injection start
                
            $benutzer stripslashes($_POST['login_name']);
                
            $benutzer mysql_real_escape_string($benutzer);
                
            $passwort stripslashes($_POST['login_pw']);
                
            $passwort mysql_real_escape_string($passwort);
                
            $id check_user($benutzer$passwort); 
                if (
            $id != false
                {
                    
            login($id); 
                }
                else 
                {
                     echo 
            "Bitte versuchen Sie es erneut!<br>";
                     echo 
            "<a href=\"$PHP_SELF\"><b></b></a>";
                }
            }

            elseif (!
            logged_in()) 
            {
               echo <<<LOGINFORM
                <td valign="middle" align="center" width="746px">
                    <div id="MainCell">
                        <form action="
            $PHP_SELF" method="post" name="form1" runat="server">
                            <h5>Benutzername:</h5><input class="search" type="text" size="30" maxlength="40" name="login_name" /><br /></br />
                            <h5>Passwort:</h5><input class="search" type="password" size="30" maxlength="40" name="login_pw" /><br /><br />
                            <input name="submit" type="submit" class="searchSubmit" value="&nbsp;Login&nbsp;" />&nbsp;<a class="miniLink" href="lostPW.php">Passwort vergessen?</a>
                        </form>
                    </div>
                </td>
                LOGINFORM;
            } else {
            echo <<<LOGINFORMELSE
            <td valign="top" align="justify" width="746px">
                <div id="MainCell">
                    <a href="edit.php">Weiter</a>
                       <a href="logout.php">logout </a>
                </div>
            </td>
            LOGINFORMELSE;
            }
            ?>
            Ich habe die Datei, welche die UserFunktionen enthält angepasst...erst spuckte der mir ne Fehlermeldungsreihe aus, das hab ich dann behoben bekommen und nu zeigt der mir nen PARSE_ERROR an..

            Parse error: syntax error, unexpected $end in D:\Programme\xampp\htdocs\private\index.php on line 249

            Im Header steht halt der übliche session_start()

            sieht iwer den Fehler, such mich seit Stunden dumm und dämlich..

            Danke im Vorraus,
            Dennis
            Musik beflügelt unseren Geist

            Kommentar


            • #7
              Du kannst die heredoc-Syntax nicht.
              Das End-"Tag" muss am Anfang der Zeile stehen, uneingerückt, deshalb hasse ich diese Syntax.

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

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

              Kommentar


              • #8
                Damned, danke...

                können schon, programmier seit einiger Zeit gerne damit, son Fehler ist mir aber auch noch nie passiert

                Naja, danke schön..

                Dennis
                Musik beflügelt unseren Geist

                Kommentar

                Lädt...
                X