+ Antworten
Ergebnis 1 bis 5 von 5

Thema: Ein Fehler in diesem Quelltext ?

  1. #1
    TP-Member veil macht alles soweit korrekt
    Registriert seit
    Aug 2009
    Beiträge
    53

    Ein Fehler in diesem Quelltext ?

    Hallo,

    ich habe hier ein kleinen Quelltext für eine Umkreissuche, welches ich im Internet gefunden habe. Leider erhalte ich diese Fehlermeldung beim Ausführen.

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\POSTSUCHE.php on line 40

    oder 15 oder 44, je nachdem was ich verändere.

    Weiss jemand von euch wo hier der Fehler liegt. Ich hab da schon alles ausprobiert aber ich weiss nicht weiter.

  2. #2
    TP-Member veil macht alles soweit korrekt
    Registriert seit
    Aug 2009
    Beiträge
    53
    PHP-Code:
    <?php 
    // Zuerst eine Verbindung zur Datenbank aufbauen!
     
    $connect=@mysql_connect("localhost""user""pass"
    or die(
    "Cant connect to Database");
     @
    mysql_select_db("geo_plz"$connect)or die("Cant select Database");

    // die PLZ nach der wir suchen
    $plz '45143';

    // der Umkreis in Km
    $umkreis 5;

    // Erdradius (geozentrischer Mittelwert) in Km
    $radius 6368;

    /* -------------------------- */

    $sql_rad mysql_query("SELECT lon, lat FROM `plz_at` WHERE `plz` = '$plz' ");
    $erg_rad mysql_fetch_object($sql_rad);

    // Umrechnung von GRAD IN RAD

    $lon $erg_rad->lon 180 M_PI;
    $lat $erg_rad->lat 180 M_PI;

    // jetzt erfolgt die eigentliche Abfrage

    $query "SELECT ort, plz, (
     "
    .$radius." * SQRT(2*(1-cos(RADIANS(lat)) * 
     cos("
    .$lat.") * (sin(RADIANS(lon)) *
     sin("
    .$lon.") + cos(RADIANS(lon)) * 
     cos("
    .$lon.")) - sin(RADIANS(lat)) * sin(".$lat.")))) AS Distance 
     FROM plz_at WHERE 
     "
    .$radius." * SQRT(2*(1-cos(RADIANS(lat)) * 
     cos("
    .$lat.") * (sin(RADIANS(lon)) * 
     sin("
    .$lon.") + cos(RADIANS(lon)) * 
     cos("
    .$lon.")) - sin(RADIANS(lat)) * sin(".$lat."))) <= ".$umkreis.
     ORDER BY Distance
    "
    ;

    // die Ausgabe (vereinfacht)

    $sql mysql_query($query);
    while( 
    $erg mysql_fetch_object($sql) ) {

     echo 

    <pre>'
    print_r($erg), '</pre> 
    '
    ;
    }
    ?>

  3. #3
    TP-Moderator maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User Avatar von maxi89
    Registriert seit
    Nov 2004
    Ort
    Mulpe an der Tunke
    Beiträge
    2.538
    Da scheint der mehrzeilige SQL-Select wohl fehlzuschlagen. Warum und weshalb habe ich gerade nicht nachgeprüft (ohne Werte für die Variablen geht das auch ohnehin schlecht).
    Bau doch mal vor der while-Schleife ein
    var_dump(mysql_error($sql));
    ein und versuche, die ausgegebenen Fehler zu korrigieren. Vielleicht hast du dich ja irgendwo in den ganzen Klammern verlaufen...


    Btw: Du solltest dir bei Zeiten auch Gedanken um SQL-Injections machen bzw. wie man diese verhindern kann.

  4. #4
    TP-Member veil macht alles soweit korrekt
    Registriert seit
    Aug 2009
    Beiträge
    53
    es läuft jetzt, ich habe den Radius in die SELECT Abfrage gepackt und nun geht es.
    Das mit den SQL-Injections kenne ich. Du meinst man soll lieber mit myreal_escape_string() arbeiten, richtig ?

    Ist denn der Code so wie ihn Dreamweaver erstellt eigentlich sicher ?
    Dreamweaver erstellt den Code auch immer mit myreal_escape_string().

    Kennst Du eine Webseite auf der alle oder möglichst viele Sicherheitslücken
    gennant werden ? Wäre gut mal einen Überblick zu haben.

  5. #5
    TP-Moderator maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User Avatar von maxi89
    Registriert seit
    Nov 2004
    Ort
    Mulpe an der Tunke
    Beiträge
    2.538
    Ob Dreamweaver sicheren Code produziert, weiß ich nicht - ich nutze es nicht
    Aber mit mysql_real_escape_string bist du eigentlich schon gut bedient.


    Auf der Wikipedia-Seite werden eigentlich schon einige Angriffsmöglichkeiten genannt, aber ich kann dir ja gerne mal ein Beispiel nennen, was mir letztens noch persönlich über den Weg gelaufen ist:

    Dieser Code ist Teil eines Login-Systems. In der Datenbank gibt es ein Feld für den Benutzernamen und eines für ein MD5-Kennwort.
    Um Benutzername und Kennwort zu validieren, gibt es diesen SQL-String:
    PHP-Code:
    $sql 'SELECT * FROM `userdaten` WHERE `username` = "' $_POST ['name'] . '" AND `password` = "' md5 $_POST ['passwort'] ) . '";';

    $ergebnis mysql_query $sql ); 
    Wie du siehst, wird da nichts gefiltert *schauder*.
    Da es sich um ein Loginsystem handelt, könnte man sich so zum Beispiel Zugang verschaffen, wenn man nur einen existierenden Benutzernamen kennt.

    Man trägt nämlich einfach in das Feld für den Benutzernamen folgendes ein:
    Code:
    testheimer" OR "1" = "1
    Das war's, schon ist man eingeloggt (vorausgesetzt, es existiert ein Benutzer mit dem Namen testheimer)!
    Warum das so ist, erkennt man leicht an dem zusammengesetzten SQL-String - der sieht nämlich bei dieser Abfrage so aus:

    SELECT * FROM `userdaten` WHERE `username` = "testheimer" OR "1" = "1" AND `password` = "(irgendeinmd5hash)";

    MySQL reicht es hierbei, wenn `username` = "testheimer" zutrifft, danach kommt ja eine OR-Anweisung, die das richtige Passwort damit optional macht.
    Wir finden damit also entweder einen existenten Benutzer oder irgendeinen Benutzer mit zufällig diesem Passwort.

    Hätten wir das durch mysql_real_escape_string() gejagt, hätte diese SQL-Injection nicht mehr funktioniert, denn dann hätte der SQL-String so ausgesehen:

    SELECT * FROM `userdaten` WHERE `username` = "testheimer\" OR \"1\" = \"1" AND `password` = "(irgendeinmd5hash)";

    Alle Zeichen, die MySQL in seiner Syntax verwendet sind damit escaped worden und werden von MySQL nicht weiter beachtet

+ Antworten

Ähnliche Themen

  1. Fehler im HTML-Quelltext
    Von Micha Koko im Forum TYPO3
    Antworten: 3
    Letzter Beitrag: 03.02.2009, 10:49
  2. Fehler im Quelltext
    Von Tiefkühlhamster im Forum HTML & CSS
    Antworten: 4
    Letzter Beitrag: 14.01.2004, 17:12
  3. +HTML - Wo steckt in diesem Tag der Fehler
    Von stallone im Forum HTML & CSS
    Antworten: 11
    Letzter Beitrag: 20.08.2003, 17:41
  4. Fehler bei diesem Flashvideo
    Von GeneralGehrig im Forum Flash & Multimedia
    Antworten: 7
    Letzter Beitrag: 21.03.2002, 16:12

Stichworte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51