Ankündigung

Einklappen
Keine Ankündigung bisher.

PHPBB Modul

Einklappen

Neue Werbung 2019

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

  • PHPBB Modul

    Hallo,
    Hab ne Frage. Was ist an diesem Code falsch?
    PHP-Code:
    Hier hast du die Möglichkeit andere Freundescodes anzusehen oder dein Freundescode einzutragen.<br>
    <a href=freundelist.php>Freundescodes-Liste</a><br>
    <a href=newfriend.php>Freundescode eintragen </a>
    <?php
    define
    ('IN_PHPBB'true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH './';
    $phpEx substr(strrchr(__FILE__'.'), 1);
    include(
    $phpbb_root_path 'common.' $phpEx);
    include(
    $phpbb_root_path 'includes/functions_display.' $phpEx);
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();
    if (isset(
    $_GET["user" ])) {
    $id $_GET["user"];
    $sql0 "SELECT username from phpbb_users where user_id ='$id'";
    $result0 mysql_query($sql0);
    $name = @mysql_fetch_assoc($result0);
    $sql "SELECT * FROM freundescode where von='$name[username]";
    $result mysql_query($sql);
    echo 
    "<table border='1' cellspacing='0'>";
    echo 
    "<tr><th>Benutzer</th><th>Spiel</th><th>Freundescode</th><th>Name</th></tr>";
    while (
    $row mysql_fetch_assoc($result)) {
    echo 
    "<tr>";
    foreach (
    $row as $key => $value) {
    echo 
    "<td>$value&nbsp;</td>";
    }
    echo 
    "</tr>";
    }
    echo 
    "</table>\n";
    mysql_close();
    }
    ?>
    Es kommt folgende Fehlermeldung:
    [phpBB Debug] PHP Notice: in file /freundescode.php on line 24: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
    Aber das Argument in mysql_fetch_assoc ist richtig..
    Danke im Vorraus
    Gruß

  • #2
    Nein ist es nicht. Die Syntax der SQL Abfrage ist falsch.

    Im übrigen sind wir hier kein "schaut ihr mal bitte was falsch ist Forum".

    Kommentar


    • #3
      Zitat von vTasker Beitrag anzeigen
      Aber das Argument in mysql_fetch_assoc ist richtig..
      Da vertraue ich PHP mehr als dir!

      Und wieso sehe ich da keinerlei Fehlerbehandlung?
      PHP-Code:
      $result mysql_query($sql)
         or die (
      "MySQL-Error: " mysql_error()); 

      Kommentar


      • #4
        joa, ein ' vergessen!
        Thx.. habs grad am Laptop mit dem normalen Editor programmiert :O. Mein mein PC kaputt ist...

        Kommentar


        • #5
          Was ist ein "normaler Editor". Mein Notepad++ ist auch nur ein Editor und ich arbeite nur am Laptop. Mit anderen Worten: schlechte Ausrede.

          Kommentar


          • #6
            Aua.
            Sicherheitslücke

            PHP-Code:
            $id $_GET["user"];
            $sql0 "SELECT username from phpbb_users where user_id ='$id'"

            Kommentar


            • #7
              Als Ergänzung zum Vorposter mal die folgenden Stichworte: SQL-Injection, fehlende Validierung.
              Es gilt beim Programmieren grundsätzlich folgendes: Alles, was vom Clienten kommt, also vom Benutzer der Software geändert werden kann, muss einer Prüfung unterzogen werden, bevor es genutzt wird.
              In deinem Beispiel würde ich den Parameter so annehmen:
              PHP-Code:
              $id intval($_GET['user']); //wenn der Parameter eine Zahl ist
              $id trim($_GET['user']); //Wenn der Parameter ein String ist

              $sql "SELECT username FROM phpbb_users WHERE userID = ".$id.""//Zahl
              $sql "SELECT username FROM phpbb_users WHERE userID = '".mysql_real_escape($id)."'"//String 
              Damit hättest du gleich 2 Fehlerquellen behoben:
              1. Durch die Umwandlung des Parameters in das gewünschte Format passieren schonmal keine Fehler aufgrund von unerwarteten Typen.
              2. Durch das "escapen" des Strings (Fall String) vermeidest du, dass der Benutzer aus der Syntax ausbrechen kann. Z.B. durch sowas:
              Code:
              index.php?user=' OR 1=1
              Ohne Prüfung würden nun alle Usernames zurückgegeben werden.
              Mit freundlichen Grüßen
              Jim Martens

              Kommentar


              • #8
                Danke für die genaue Erklärung

                Kommentar

                Lädt...
                X