PLZ Suchformular verfeinern

  1. tuxie

    tuxie Thread Starter MacUser Mitglied

    Mitglied seit:
    16.07.2004
    Beiträge:
    73
    Zustimmungen:
    0
    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
     
  2. gishmo

    gishmo MacUser Mitglied

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

    tuxie Thread Starter MacUser Mitglied

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

    TSchau Ingo
     
  4. mr660

    mr660 MacUser Mitglied

    Mitglied seit:
    28.08.2006
    Beiträge:
    294
    Zustimmungen:
    22
    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

    Mitglied seit:
    16.03.2004
    Beiträge:
    813
    Zustimmungen:
    23
    php halt ...
     
  6. mr660

    mr660 MacUser Mitglied

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