Ankündigung

Einklappen
Keine Ankündigung bisher.

Adminbereich

Einklappen

Neue Werbung 2019

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

  • DerTyp
    hat ein Thema erstellt Adminbereich.

    Adminbereich

    Hi, ich bin eigentlich ein absoluter Newbie in dem Bereich PHP, aber versuche gerade trotzdem soviel zu realisieren wie nur geht.. das Script wird ohne hin erstmal nicht Online gehen, also interessiert es mich auch gerade nicht obs nun valide ist oder nicht.

    Ich habe im Navigationsscript eine Zeile hinzugefuegt, die aus einem Cookie heraus berechtigungen abfragt, weil mir dafuer ein mySQL Abruf zu bloed ist, wenn ich Ihn sowieso beim Aufruf einbaue.

    Nur gerade dass, scheitert irgendwie..
    Die nachvollgenden Befehle habe ich alle kennengelernt im laufe meiner Einarbeitung und in meinem Kopf muesste das ganze auch funktionieren:

    admin.inc:
    Code:
    <?php 
    if(isset($_GET['n']) AND ("useredit" == $_GET['n'])) { 
    echo "<form action=\"index.php?m=edit\" method=\"post\">";
    $sql = "SELECT                                                     
                        ID,
                        Name,
                        pwd,
                        flevel
                        FROM
                        mitglieder";
    $result = mysql_query($sql) OR die(mysql_error());
    while($row = mysql_fetch_assoc($result)) {
    
    if(isset($_COOKIE['name']) AND ($row['Name'] != $_COOKIE['name'])) echo "Der angegebene Benutzername exestiert nicht.";
    
    else if(isset($_COOKIE['pwd']) AND ($row['pwd'] != $_COOKIE['pwd'])) echo "Das angegebene Password stimmt leider nicht mit dem password fuer ".$_COOKIE['name']." ueberein.";
    
    else if ($row['flevel'] != "2") echo "Sie besitzen nicht die noetigen Rechte fuer diese Operation";
    
    else echo "<input type=\"checkbox\" value=\"".$row['ID']."\">".$row['Name'].";
    }
    } 
    ?>
    Wenn Getvar n enthaellt und n "useredit" ist, dann erstelle ein Forumlar, indem die Mitgliedernamen in einem Checkbox Design dargestellt werden, dessen Namen die Mitgliedsnamen sind und die Werte der eingetragenen ID's beinhalten und angezeigt soll das ganze werden, wenn die jeweiligen Cookie Eintraege mit einem aus der Datenbank eingetragenen Benutzer entspricht, zeige diese an ^^ so hab ich mir das vorgestellt.. Was mache ich falsch?

    Ich bekomme als Fehler Parse error: syntax error, unexpected $end in /test/admin.inc on line 20

    Waere sehr nett wenn da ma jemand drueber fliegen koennte

  • DerTyp
    antwortet
    sorry fuer Doppelpost, aber ich habe mich scheinbar geirrt.. habe mal den Cookie geloescht.. bin also ausgeloggt, habe einfach index.php?n=useredit eingebenen und mir wird ebenfalls die Liste angezeigt.. Aber wieso? der duerfte doch an die Abfragen nicht vorbeikommen bis sie uebereinstimmen, ansonsten gibs Fehlermeldung?

    Einen Kommentar schreiben:


  • DerTyp
    antwortet
    Cookie wird jedesmal abgefragt wenn man eine Seite aus der Navigation (die nur angezeigt wird, wenn im Cookie eine bestimmte 5 stellige Nummer eingetragen ist) auswaehlt, die Administrative Vorgaenge beinhalten.
    In den dadurch aufgerufen Includes, befindet sich die erneute Abfrage aus der Datenbank.
    Deshalb sagte ich auch, es ist scheiss egal, dass das Cookie veraendert werden kann.. Weil selbst wenn man das Feld Flags mit der richtigen 5 stelligen Nummer in dem Cookie faelscht. Wird zwar die Navigation fuer einen Admin eingeblendet, aber man hat dennoch keinen Zugriff.

    PHP-Code:
    <?php 
    if(isset($_GET['n']) AND ("useredit" == $_GET['n'])) { 
        echo 
    "<form action=\"index.php?m=edit\" method=\"post\">";
        
    $sql "SELECT                                                     
                        ID,
                        Name,
                        pwd,
                        flevel
                        FROM
                        mitglieder"
    ;
        
    $result mysql_query($sql) OR die(mysql_error());
        while(
    $row mysql_fetch_assoc($result)) {

            if(isset(
    $_COOKIE['name']) AND ($row['Name'] != $_COOKIE['name'])) { 
                echo 
    "Der angegebene Benutzername exestiert nicht.";
            } else if(isset(
    $_COOKIE['pwd']) AND ($row['pwd'] != $_COOKIE['pwd'])) {
                echo 
    "Das angegebene Password stimmt leider nicht mit dem password fuer ".$_COOKIE['name']." ueberein.";
            } else if (
    $row['flevel'] != "2") {
                echo 
    "Sie besitzen nicht die noetigen Rechte fuer diese Operation";
            } else {
                
    $sql "SELECT                                                     
                        ID,
                        Name,
                        pwd,
                        flevel
                        FROM
                        mitglieder"
    ;
        
    $result mysql_query($sql) OR die(mysql_error());
        while(
    $row mysql_fetch_assoc($result)) {
    echo 
    "<br><input type=\"checkbox\" value=\"".$row['ID']."\">".$row['Name'];
                 }
            }
        }

    ?>
    so siehts momentan aus und aehm ja.. funktioniert auch .. Zumindest soweit das mir eingeloggt alles angezeigt wird.

    Einen Kommentar schreiben:


  • dex
    antwortet
    Kostenloser (und meiner Meinung nach bester) Editor:
    PSPad
    => Google PSPad

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Ähm ja dein Cookie wird aber nur 1 mal mit der Datenbank überprüft oder? Ich kann Cookies aber jederzeit ändern, auch nach dem Login und irgenwelchen anderen Aktionen.

    Einen Kommentar schreiben:


  • DerTyp
    antwortet
    ok sehr nice!
    sorry ^^ ich hab mir ja irgendwie gedacht, dass es was dummes sein muss.. Ich benutze leider den Editor von WinSCP ^^ da hab ich keine Farben!
    Aber vielen dank, fuer die Schnelle Hilfe

    edit: wie gesagt.. ich weiss das man das kann und es ist mir egal, weil der Cookie name und das password doch eh in der Datenbank ueberprueft wird..
    Das Cookie auslesen ob man admin ist, wird halt aus einer Zahl vollzogen, die fuer die Userlevel zustaendig sind..
    Hier in meinem Code ist es die "2" im normalfall ist es eine 5 Stellige andere Zahl, die nirgends in der MySQL vorhanden ist sondern im Script integriert und wenn man kein Admin ist, kann man sie auch ohne ausprobieren nicht wissen..
    Das muss sicher genug sein, weil es sich dabei ja nur um die Anzeige der Navigation handelt.
    Die Anzeige der aufgerufenen Seite dann, wird ja vorher abgefragt aus der MySQL Datenbank, wie im Script zu sehen

    Edit Edit: ich hab versucht das Script am Anfang mit sessions aufzubauen, dass hat nicht so geklappt wie ich mir das Vorgestellt habe, also gibs nun en Cookie.. ^^ Mittlerweile koennte es klappen wo ich weiss, das Session_Start() ganz am Anfang muss, aber das ist mir jetzt grad ma egal xD das Script ist nun was umfangreicher und auch abhaengig.. Is aber egal, ich hab noch ueberblick ^^

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Wenn du deinen Text gescheit einrücken würdest könnte man es besser erkennen

    PHP-Code:
    <?php
    <?php 
    if(isset($_GET['n']) AND ("useredit" == $_GET['n'])) { 
        echo 
    "<form action=\"index.php?m=edit\" method=\"post\">";
        
    $sql "SELECT                                                     
                        ID,
                        Name,
                        pwd,
                        flevel
                        FROM
                        mitglieder"
    ;
        
    $result mysql_query($sql) OR die(mysql_error());
        while(
    $row mysql_fetch_assoc($result)) {

            if(isset(
    $_COOKIE['name']) AND ($row['Name'] != $_COOKIE['name'])) { 
                echo 
    "Der angegebene Benutzername exestiert nicht.";
            } else if(isset(
    $_COOKIE['pwd']) AND ($row['pwd'] != $_COOKIE['pwd'])) {
                echo 
    "Das angegebene Password stimmt leider nicht mit dem password fuer ".$_COOKIE['name']." ueberein.";
            } else if (
    $row['flevel'] != "2") {
                echo 
    "Sie besitzen nicht die noetigen Rechte fuer diese Operation";
            } else {
                echo 
    "<input type=\"checkbox\" value=\"".$row['ID']."\">".$row['Name'].";
            }
        }

    ?>
    Und siehe da, das Syntaxhighlighting zeigt seine Wirkung!
    Arbeitest du bei dir aufm PC ohne Syntaxhighlight? Das wäre schade

    Im übrigen kann man Cookies manipulieren. Du solltest also wichtige Abfragen (ob Admin ja/nein) nicht aus dem Cookie beziehen. Wenn dann aus der Session, denn diese Daten werden auf dem Server gespeichert.

    *edit* WOW da waren aber viele schneller

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Setz den Code mal in PHP- statt in Code-Tags, und du siehst den Fehler schon an den Farben.

    Einen Kommentar schreiben:


  • cycap
    antwortet
    PHP-Code:
    <?php 
    if(isset($_GET['n']) AND ("useredit" == $_GET['n'])) { 
    echo 
    "<form action=\"index.php?m=edit\" method=\"post\">";
    $sql "SELECT                                                     
                        ID,
                        Name,
                        pwd,
                        flevel
                        FROM
                        mitglieder"
    ;
    $result mysql_query($sql) OR die(mysql_error());
    while(
    $row mysql_fetch_assoc($result)) {

    if(isset(
    $_COOKIE['name']) AND ($row['Name'] != $_COOKIE['name'])) echo "Der angegebene Benutzername exestiert nicht.";

    else if(isset(
    $_COOKIE['pwd']) AND ($row['pwd'] != $_COOKIE['pwd'])) echo "Das angegebene Password stimmt leider nicht mit dem password fuer ".$_COOKIE['name']." ueberein.";

    else if (
    $row['flevel'] != "2") echo "Sie besitzen nicht die noetigen Rechte fuer diese Operation";

    else echo 
    "<input type=\"checkbox\" value=\"".$row['ID']."\">".$row['Name'].";
    }

    ?>

    Achte mal auf das Syntax-Highlighting am Ende...

    [edit]
    @dex: Blödmann

    Einen Kommentar schreiben:


  • dex
    antwortet
    PHP-Code:
    else echo "<input type=\"checkbox\" value=\"".$row['ID']."\">".$row['Name']."; // ." am ende muss weg 
    MfG, dex

    Edit:

    Einen Kommentar schreiben:

Lädt...
X