kostenloser Webspace werbefrei: lima-city


Formular Eingabe und Umlaute

lima-city: kostenloser WebspaceForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    girowechsel

    Benutzer, kostenlos Webspace Ketzer

    15 Gulden

    0 positive Bewertungen
    0

    girowechsel hat kostenlosen Webspace.

    Hallo

    ich habe ein Such-Formular mit einfachem Text-Feld
    <form name="suchform" method="post" action="" accept-charset="UTF-8"> 
     Suche: <input type="text" name="suche" size="40" maxlength="100" /> 
     &nbsp;&nbsp; <input type="submit" name="go" value="Suchen" /> 
    </form>


    und gegen ungewünschte EIngaben in das Textfeld mache ich u.a. htmlentities():

    $string = $_POST['suche']; 
    
    $string = htmlentities($string);


    wenn ich dann aber Umlaute .... ä ö ü Ä Ö Ü ß .... etc. im Text habe
    dann ist der String anstatt BSP. so ... Löffel .... dannn BSP.so ... L&ouml;ffel

    und deswegen gibt es dann keine Treffer für die Suche, unterschiedlicher "String"

    Wenn z.B. ein Herr "Müller" in der Datei gesucht werden soll
    das geht nicht mit "M&uuml;ller" als Such-String bei Abfrage.

    mir wurde htmlentities() empfohlen, gegen 'böse' Eingaben ins Text-Feld.
    .... doch wie mache ich das dann sonst Eingabe halbwegs sicher mit Umlauten ???




    Beitrag zuletzt geändert: 3.10.2015 11:45:43 von girowechsel
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. stoerchu

    Kostenloser Webspace von stoerchu

    Benutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Bettler

    281 Gulden

    3 positive Bewertungen
    0

    stoerchu hat kostenlosen Webspace.

    Also htmlentitites() würde ich primär für die Ausgabe von Strings benutzen, die "mehr oder weniger gefährlichen" Code enthalten können.

    Um eine Datenbank zu durchsuchen würde ich
    mysql_real_escape_string()
    empfehlen (http://php.net/manual/de/function.mysql-real-escape-string.php), diese Funktion ist aber seit PHP 5.5.0 veraltet und sollte in MySQLi oder PDO_mysql nicht verwendet werden.

    MySQLi
    mysqli_real_escape_string()
    (http://php.net/manual/de/mysqli.real-escape-string.php)

    PDO_MySQL
    quote()
    (http://php.net/manual/de/pdo.quote.php) -> fügt auch einfache Anführungszeichen an.
  4. forceofkingdoms

    Benutzer, kostenlos Webspace Ketzer

    99 Gulden

    0 positive Bewertungen
    0

    forceofkingdoms hat kostenlosen Webspace.

    Könnte es sein, dass du ausversehen zweimal htmlentities für den selben String auswählst?
    Ich hab mal etwas rumgespielt:

    Meine Eingabe:
    öäü

    Mein Script;
    $string = $_POST['suche']; 
    echo $string;
    echo htmlentities($string)."<br>";
    echo htmlentities(htmlentities($string)."<br>";


    Meine Ausgabe:
    öäü
    öäü
    &ouml;&auml;&uuml;


    Ich bekomme diese &ouml; etc. nur, wenn ich zweimal htmlentities verwende.
    Ansonsten bekomme ich den Normalwert ö

    Hoffe ich konnte einwenig helfen

    mfG
    FoK
  5. youwebsite

    Benutzer, kostenlos Webspace Ketzer

    42 Gulden

    0 positive Bewertungen
    0

    youwebsite hat kostenlosen Webspace.

    htmlentities() ist ja nicht so wichtig. Ich habe einfach den String direkt mit $_GET["suche"] abgefragt und in der Datenbank danach gesucht.

    Anmerkung: Du musst "suche" natürlich durch den Namen deines Textfeldes ersetzten
  6. waytogermany

    Benutzer, kostenlos WebspaceBenutzer, kostenlos WebspaceBenutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Haudegen

    5478 Gulden

    53 positive Bewertungen
    0

    waytogermany hat kostenlosen Webspace.

    Eine andere Möglichkeit wäre es, die ganze Webseite und auch die Datenbank in UTF8 zu kodieren. Diese kann dann deutsche Umlaute ganz normal behandeln und für den Suchstring Ö kommt dann auch Ö.
  7. all-in1

    Kostenloser Webspace von all-in1

    Benutzer, kostenlos WebspaceBenutzer, kostenlos WebspaceBenutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Knappe

    6532 Gulden

    67 positive Bewertungen
    0

    all-in1 hat kostenlosen Webspace.

    Oder du nutzt die prepared Statements.

    In mysqli würde da schon mysqli_real_escape_string reichen, um deine Datenbank zu schützen. In PDO gibt es die prepared Statements, die ähnlich funktionieren.


    Dennoch sollte Script, Header, Datenbankverbindung und Datenbank im gleichen Charset/ Koallation laufen.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!