Das Löschen des hauptadmins verhinden (Prob)

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

  • Das Löschen des hauptadmins verhinden (Prob)

    Hi, ich habe eine Benutzerverwaltung für meine Seite gebastelt. Nur, damit andere Admins den hauptadmin nicht löschen können, habe ich folgendes gebaut:

    $_GET['id'] ist die ID des benutzers in der DB
    Der hauptAdmin hat die ID "0" bzw ""

    PHP-Code:
    if (isset ($_REQUEST["deleteaccount"])) 

    $id $_GET['id'];
    // Auf operator überprüfen
    if ($_GET['id'] = "0") {
    header ("location: forcelogout.php");
    exit();
    } elseif (
    $_GET['id'] = "") {
    header ("location: forcelogout.php");
    exit();
    } elseif (
    $_POST['deletekey'] == "OK") {
    // Update in die Datenbank eintragen
    $sql "DELETE FROM
        users
    WHERE
        id = '" 
    $id "' ";
    $result mysql_query($sql) OR die(mysql_error());
    header ("location: account/users.php?deletesucess"); // Weiterleitung
    } else {
    header ("location: account/delete.php?deletekeyfail&id=".$id);
    } } 
    Nur leider funktioniert der Script nicht, der Benutzer mit ID "0" wird trozdem gelöscht

    Woran kann das liegen?

  • #2
    omg!

    Was ist der Unterschied zwischen = und ==??

    Richtig, ersteres ist eine zuweisung, nur letzteres ist ein vergleich.

    Kommentar


    • #3
      och nö.. ich weis..

      warum passiert mir dass immer wieder?

      Aber danke


      MIcronax

      Kommentar


      • #4
        Ja, das frage ich mich auch.

        Einigen leuten soll es geholfen haben, die werte zu tauschen:

        if(0 = $_GET[i'd'])

        Dann bekommst du einen Fehler angezeigt.

        Kommentar


        • #5
          Anstatt immer manuell eine ID zuzuweisen und auszuwerten, wäre es doch besser, eine weitere Spalte zu haben:
          Code:
          DELETE FROM users
          WHERE
            id = 5
            AND delete_allowed = 1
          Ist spätestens dann von Vorteil, wenn der Vertreter des Supermegahauptadmins auch nicht gelöscht können werden soll, dem kannst du nämlich nicht auch noch die ID 0 geben...
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Mal ganz davon abgesehen: Informier dich mal über SQL-Injections. Da bist du nämlich gerade dabei dir nen richtig dicken Fehler einzubauen, und das in nem DELETE-Statement...
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar


            • #7
              Hm..

              hab schon ma überflogen.. aber in den Bereich kommen eh nur Admins..

              Micronax

              Kommentar


              • #8
                Wenn du an allen anderen Stellen in deinem Projekt anders programmiert hast
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Hab mir grad ma noch mal alles durchgelsen...

                  So ein kack... was kann man dagegen machen?

                  Micronax

                  Kommentar


                  • #10
                    Original geschrieben von micronax
                    So ein kack... was kann man dagegen machen?
                    Man könnte man das Stichwort nehmen, und sich über google selber informieren ...
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Das war auch das erste was ich getan habe

                      mysql_real_escape_string ist die Lösung..

                      aber.. ach egal..

                      Kommentar


                      • #12
                        Hab das Prob jetzt so gelöst:

                        PHP-Code:
                        function mysql_secure($text)
                          {
                            
                        $text htmlspecialchars($text);
                            
                        $text mysql_escape_string($text);

                            if(!
                        get_magic_quotes_gpc())
                              
                        $text addslashes($text);      // Ausgabe dann mit  stripslashes()

                            
                        RETURN $text;
                          } 
                        Micronax

                        Kommentar


                        • #13
                          Hi,

                          Mysql_real_escape_string() ist sicherer als addslashes().

                          Gruß Thomas

                          Kommentar


                          • #14
                            Original geschrieben von Alrik
                            Mysql_real_escape_string() ist sicherer als addslashes().
                            Und beides zu machen, ist ziemlicher Blödsinn ...
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              wo wir grad dabei sind:

                              $text = addslashes($text); // Ausgabe dann mit stripslashes()
                              warum erst slashen, und dann wieder entslashen? wenn du ne ausgabe machst, wendest du die fkt gar nicht erst an.

                              Kommentar

                              Lädt...
                              X