Mysql Tabelle ausgeben problem

  • ich habs so gemacht:

    PHP
    $trainer = $_SESSION['username'];
    
    
    $lo = mysql_real_escape_string($trainer); 
    
    
    $abfrage = "SELECT verein, budget, budgetaktuel, icq FROM User WHERE username = '$lo' ";
    $ergebnis = mysql_query($abfrage);


    Sollte auch stimmen oder?
    Und das muss ich überall da machen wo ich etwas aus der Datenbank abfrage?

    Hier der quellcode

  • Wenn du es aus einer Session nimmst, musst du es nur dann prüfen, wenn es in die Session gschreiben wird, also beim login. Angenommen, in deiner login-php steht als SQL-Befehl

    PHP
    $sql="SELECT password FROM users WHERE username='".$username."'";

    und der user gibt ein

    PHP
    "Tobse' AND SELECT password FROM users WHERE username='Admin";

    dann sieht unser SQL-Befehl wie folg aus:

    PHP
    $sql="SELECT password FROM users WHERE username='Tobse' AND SELECT password FROM users WHERE username='Admin'";

    und unter umständen kannd as natürlich richtig böse ausgehen. Aber wenn du jetzt schreibst:

    PHP
    $sql="SELECT password FROM users WHERE username='".mysql_real_escape_string($username)."'";

    dann sieht bei einer gleichen gefärlichen eingabe der SQL (hab nicht getestetwie genau $username dann aussieht) so aus:

    PHP
    $sql="SELECT password FROM users WHERE username='TobseAdmin'";

    und ist damit komplett ungefährlich für dich. Wenn du jetzt also viele usereingaben renderst, die über POST kamen, schreibst du einfach an den anfang (natürlich muss die funktion auch iwo hin):

    PHP
    $_POST=escape_array($_POST);

    und damit hat sichs. Mehr dazu bei Google unter Mysql injections

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • das ist meine login.php hier schau mal habs mit deiner function gemacht:

    Einmal editiert, zuletzt von gombol (23. Januar 2010 um 13:57)

  • Is schon fast gut :P, aber des mysql_real_escape_string(); brauchste nich, wenn du vorher alles mit der funktion gemacht hast. in diesem Fall würde ich die Funktion weglassen und das im Query drinstehen lassen, dafür aber bei der registreirung wo mehr daten dabei sind einsetzten. Die funktion spart aber alles in allem nur schreibarbeit. Wenn du aber noch sicherer gehen möchtest, kannst du in deine user-Tabelle noch das Feld "username_hash" hinzufügen und die Daten mit JavaScript MD5 gleich verschlüsselt senden und dann eben mit username_hash vergleichen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • ja ich möchte jetzt keine Seite schreiben die öffentlich ist also die Seite wird bloß an 15 Leute gesendet und bleibt auch unter denen und ich werde den Leuten mitteilen das sie nicht ihr Standard Pw dort eingeben sollen was sie überall benutzen ...

  • Dann kannstes lassen wies is.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Wie kann ich das hier nach der id sortieren?

    PHP
    $abfrage2 = "SELECT User.username, User.verein, Spieler.name, Spieler.pos, Spieler.fuss, Spieler.staerke, Spieler.oldverein, Spieler.verein, Spieler.Marktwert, Spieler.sonstiges, Spieler.bearbeiten , Spieler.mindest, Spieler.hoechst FROM User LEFT JOIN Spieler ON Spieler.verein=User.verein WHERE username = '$trainer' ";
    $ergebnis2 = mysql_query($abfrage2);

    bekomme nen fehler wenn ich Order BY id ASC
    hinten dran hänge

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/virtual/http://gomble.areahost.de/htdocs/transfermarkt/myclub.php on line 76

    zeile 76:

    PHP
    while($row = mysql_fetch_object ($ergebnis2))
       {    ....
  • Du wählst `id` auch nicht aus oder? Probiers mal mit... (SELECT User.id, ...). Am besten gibst du auch den MYSQL error aus bei der query! (mysql_query() or echo mysql_error(); )

  • und wenn du was in der selectabfrage nach der id sortieren willst musste des wie grevas sagte auch mit ner abfrage von id machen und dann order by id ASC oder DESC (aufsteigend oder absteigend eben)

  • hier:

  • Hab ich dir doch schon gesagt.....

    PHP
    "'$trainer'";
    // Gibt den string: $trainer
    "~".$trainer."~";
    // Gibt den string ~der_inhalt_aus_$trainer~


    und mysql_error(); ist immer dein Freund.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Aso... Is super easy

    PHP
    "SELECT ~ ORDER BY feldname";

    ;)

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • habe noch eine frage was ist hier falsch er sagt mir das an der syntax was nicht stimme:

    PHP
    $betabfrage = "SELECT Angebote.id,Angebote.spielerid, Angebote.kaufenleihen, Angebote.gebotzeit,Angebote.Zeit, Angebote.hoechsbietender, Angebote.sofortkaufbieten, Angebote.angebotsende, Spieler.mindest, Spieler.hoechst, Spieler.name, Spieler.Marktwert, Spieler.verein FROM Angebote LEFT JOIN Spieler ON Angebote.spielerid = Spieler.id Order BY Angebote.id WHERE Angebote.id = '$angebotid' ";
  • was stimmt denn nicht? (msql_error() oder $db->error)

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE Angebote.id = '20'' at line 1