Formular Eingabe und Umlaute
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgabe
benutzen
code
datei
datenbank
deutsche umlaute
durchsuchen
eingabe
empfehlen
feld
http
mache
manual
normalwert
statement
string
suche
text
umlaut
webseite
-
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" /> <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ö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ü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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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
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.mysql_real_escape_string()
MySQLi
(http://php.net/manual/de/mysqli.real-escape-string.php)mysqli_real_escape_string()
PDO_MySQL
(http://php.net/manual/de/pdo.quote.php) -> fügt auch einfache Anführungszeichen an.quote()
-
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:
öäü
öäü
öäü
Ich bekomme diese ö etc. nur, wenn ich zweimal htmlentities verwende.
Ansonsten bekomme ich den Normalwert ö
Hoffe ich konnte einwenig helfen
mfG
FoK -
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 -
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 Ö.
-
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. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage