PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Stringvergleich klappt nicht bei Umlauten (http://www.selfphp.de/forum/showthread.php?t=18106)

Gorgonz 24.11.2007 15:33:15

Stringvergleich klappt nicht bei Umlauten
 
Hi zusammen,

um meine Formulare etwas sicherer zu machen, habe ich eine kleine Klasse für den Objekttyp "select" Feld spendiert. Ziel ist es bei der Antwort zu prüfen, ob der String tatsächlich einem der Select-Strings entspricht. Obwohl ich mit urldecode() arbeite gelingt es nicht mit Umlauten. Vielleicht hat jemand einen Tipp, wo mein Fehler liegt. Hier die Snippets:

Initphase: Ablage der Optionen in einem Array mit einer Member AddOption($optString) {
$optString = urldecode($optString);
$this->options[] = strip_tags ($optString);
}

Dieses String-Array options[] gebe ich dann im Formular bei der Option aus.

Nachdem der Benutzer die Antwort zurück geschickt hat, wird sie
- mit $OptionAnswer = $_POST['optionName'] übernommen und
- wieder gereinigt mit
$OptionAnswer = urldecode($OptionAnswer);
$OptionAnswer = strip_tags ($OptionAnswer);

Wenn ich jetzt das $options[idx] Element mit $OptionAnswer vergleiche, schlägt der Vergleich bei Umlauten fehl, <seufz>.Das ich meine eigenen Strings in der Initphase reinige, liegt daran, dass ich Strings mit Umlauten definieren können will.

rambi 24.11.2007 15:46:41

AW: Stringvergleich klappt nicht bei Umlauten
 
Wozu ist das urldecode ??

Wenn PHP Script, DB, HTML, Formular,.... alle auf den gleichen Zeichensatz FESTGELEGT werden, sollte das kein Problem sein.

Glaskugel: Du würfelst irgendwo die Zeichensätze....

Gorgonz 24.11.2007 16:04:13

AW: Stringvergleich klappt nicht bei Umlauten
 
urldecode(): so genau kann ich das auch nicht mehr sagen. Ich hatte gelesen, dass es mehr Sicherheit bei der Stringverarbeitung bietet. Wenn Alles klappt, möchte ich die Antworten eventuell in eine Datenbank speichern und ich hab schon mitbekommen, dass es da ziemlich raffinierte Strings gibt, um die mySQL-Abfragen zu sabotieren. Das ist der Hauptgrund. Ist das Unsinn im Zusammenhang mit urldecode()?

Das mit dem Doppelten muss ich nochmal überlegen, die Denke war: Der Benutzer macht eine Eingabe und ich auch (beim Definieren der Optionen). Beides wird auf die gleiche Art konvertiert und müsste deshalb vergleichbar sein.

rambi 24.11.2007 16:13:55

AW: Stringvergleich klappt nicht bei Umlauten
 
Zitat:

Ist das Unsinn im Zusammenhang mit urldecode()?
Jain!
Gegen SQL Injections wurde mysql_real_escape_string() erfunden!!
Und damit es im Browser keinen Mist baut (XSS), gibts: htmlentities()+strip_tags()

urlencode() ist für urls gedacht! Und urldecode() kommt fast nie zum Einsatz, wozu auch..?
In Grenzen sind natürlich Zeitung und Toilettenpapier austauschbar. Aber das eine bereitet beim Lesen Probleme und das andere beim anderen.. ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:45:35 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.