Highscore Anzeige PHP über mySCL connector

  • Hi.

    Ich habe folgendes PHP Script geschrieben um auf meine Homepage über mySQL Highscores zu empfangen. Das funktioniert auch soweit ganz gut.

    Nur möchte ich gerne die Ausgabe auf max 10 Einträge beschränken. Dafür würde sich ja DESC LIMIT 10 anbieten. Aber sobald ich das einfüge funktioniert mein Script nicht mehr. Was mache ich falsch?




    <?php

    $conn = new mysqli('localhost', 'root', 'test', 'test');

    if($conn->connect_error){

    die("Error in DB connection: ".$conn->connect_errno." : ".$conn->connect_error);

    }


    $field = $_GET['sort'];

    if($field == ''){

    $field = 'score';

    }


    $ordertype = ($_GET['order'] == 'desc')? 'asc' : 'desc';


    $select = "SELECT * FROM `players` ORDER BY $field $ordertype" DESC

    LIMIT 10 ;

    $result = $conn->query($select);

    if($result->num_rows > 0){

    echo '<table class="tbl-content" >';

    echo '<tr>';


    echo '</a></th>';

    echo '<th>Username ';


    echo '</a></th>';


    echo '<th>Score</th>';



    echo '</a></th>';

    echo '</tr>';

    while($row = $result->fetch_object()){

    echo '<tr>';


    echo '<td>'.$row->username.'</td>';


    echo '<td>'.$row->score.'</td>';

    echo '</tr>';

    }

    echo '</table>';

    }

    ?>

  • Das HTML ist auch irgendwie falsch.

    Auch wenn mein Browser das laut Konsole richtig angezeigt, kommt der Quelltext aber falsch an.

    Das solltest du auch noch beheben

    zb so

    Bei viel echos, kannst du auch erst sammeln ( so nenne ich das )

  • Bitte nicht direkt in SQL-Abfragen Variabeln einbauen. Das ist ein Sicherheitsrisiko und man kann dadurch z.B. die komplette Datenbank mit 'score ASC; DROP TABLE "players";' als GET Variable "sort" löschen. Stattdessen immer PDO und prepared statements verwenden, da kann das nicht passieren.

  • Was prodev sagt (prepared statements)


    plus alle daten, die Du in HTML ausgibst maskieren.

    Bsp:

    <td>'.htmlspecialchars($row->score).'</td>

    Auch Daten, die aus Deiner db kommen. Alle Daten sind als nicht sicher anzusehen.


    Details auf Anfrage oder im Netz zu fniden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!