PLZ Suchformular verfeinern

Dieses Thema im Forum "Datenbanksysteme für das Web" wurde erstellt von tuxie, 03.04.2007.

  1. tuxie

    tuxie Thread Starter MacUser Mitglied

    Beiträge:
    73
    Zustimmungen:
    0
    MacUser seit:
    16.07.2004
    Hallo alle zusammen,

    ich habe eine kleine Anzeigen Datenbank, wo ich ein Websuchformular via PHP angebunden habe. Dieses Funktioniert seit 1 1/2 Jahren einwandfrei. Jetzt habe ich aber bei der Suche in den PLZ folgendes festgestellt.

    Wenn ich z.B.: nur nach einem gebiet suchen will wie 09 dann kommen auch ergebnis, aber eben auch welche die nicht so sein sollen.

    Beispiel

    Suche 09
    Ergebnis
    09123
    09124
    12096
    13409

    Also es kommen auch ergebise wo das Suchargument in der Mitte ist.
    Gesucht habe ich in der MySql Datenbank mit

    userdata.plz LIKE '%".$_POST["plz"]."%'";
    wobei $_POST["plz"] das Suchargument aus dem Formular ist.

    Wie könnte ich das am besten optimiere, so das ich zum Ergebnis komme.

    Tschau Ingo
     
    Zuletzt bearbeitet: 03.04.2007
  2. gishmo

    gishmo MacUser Mitglied

    Beiträge:
    812
    Zustimmungen:
    23
    MacUser seit:
    16.03.2004
    Entferne das erste "%", dann solltest Du nur Ergebnisse erhalten, die mit "09" beginnen.
     
  3. tuxie

    tuxie Thread Starter MacUser Mitglied

    Beiträge:
    73
    Zustimmungen:
    0
    MacUser seit:
    16.07.2004
    Dankeschön, jetzt Funktioniert es.

    TSchau Ingo
     
  4. mr660

    mr660 MacUser Mitglied

    Beiträge:
    294
    Zustimmungen:
    22
    MacUser seit:
    28.08.2006
    die antwort zur frage kam ja schon. ABER: das ist schlechter stil und völlig unsicher! stichwort "SQL Injection"! ein böser user im inet kann hier alles moegliche in der DB anstellen.
    man sollte übergebene parameter aus formularen nie ungefiltert weiter verwenden. weder in einem SQL ausdruck noch z.b. in einem system aufruf. immer prüfen, ob in "plz" wirklich nur gute zeichen stehen. oder ob dort z.b. so was wie

    Code:
    1%'; weiterer befehl #
    steht. das "#" ist kommentar. das würde dazu führen, dass erst alles gesucht wird, wo eine 1 vorkommt und dann wird "weiterer befehl" ausgeführt. koennte ggs. auch ein delete oder drop database oder sowas sein...

    markus
     
  5. gishmo

    gishmo MacUser Mitglied

    Beiträge:
    812
    Zustimmungen:
    23
    MacUser seit:
    16.03.2004
    php halt ...
     
  6. mr660

    mr660 MacUser Mitglied

    Beiträge:
    294
    Zustimmungen:
    22
    MacUser seit:
    28.08.2006
    nein, nicht nur! das kann mit jeder anderen programmier- bzw. skript-sprache auch passieren. php macht es einem hier eventuell einfach nur "einfacher"...
     

Diese Seite empfehlen