![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: brockerdocker, 31. 01. 2007, 19:38
Hallo,
ich habe folgendes Problem: Bei einem Formular gibt es bei bestimmten Zeichen einen Fehler beim Verschicken. Es gehen einige Sonderzeichen wie <>@..., aber \ geht zum Beispiel nicht. Ich weiß leider nicht woran dies liegen könnte. Mein Source-Code zur Verarbeitung der Formularanfrage sieht so aus:
$_POST["Sonstiges"] = htmlspecialchars($_POST["Sonstiges"]);
$_POST["Sonstiges"] = stripslashes($_POST["Sonstiges"]);
Danach wird das ganze noch in eine Datenbank geschrieben:
@mysql_connect("localhost", "test", "passwd") or die("Verbindung zu MySQL gescheitert!");
@mysql_select_db("test") or die("Datenbankzugriff gescheitert!");
$sql = "INSERT INTO adressen (id, Sonstiges, V...
Das Feld sonstiges ist vom Typ "text" und hat die Koallition "latin1_general_ci". Die Formularanfrage kommt von einer textarea.
Mich würde interessieren, woran der Fehler liegt. Ich hoffe diese Infos reichen aus.
Vielen Dank schonmal,
viele Grüße brockerdocker
Die folgende Nachricht zum Thema stammt von: Cheatah, 31. 01. 2007, 19:47
Hi,
»» $sql = "INSERT INTO adressen (id, Sonstiges, V...
den interessanten Teil lässt Du natürlich aus, nämlich den, wie Du die Daten in den Kontext des SQL-Statements bringst. Immer (in Worten: *IMMER*) gilt: Wenn Du einen Wert - egal welchen - in einen Kontext - egal welchen - bringst, musst Du diesen Wert kontextspezifisch kodieren.
»» $_POST["Sonstiges"] = htmlspecialchars($_POST["Sonstiges"]);
»» $_POST["Sonstiges"] = stripslashes($_POST["Sonstiges"]);
Für einen SQL-Kontext sind dies übrigens völlig willkürliche Datenveränderungen. Sie nützen Dir nicht das geringste. Genauso gut kannst Du alle Vokale durch lustige Wingdings austauschen.
Cheatah
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Die folgende Nachricht zum Thema stammt von: dedlfix, 31. 01. 2007, 19:52
echo $begrüßung;
»» $_POST["Sonstiges"] = htmlspecialchars($_POST["Sonstiges"]);
Was willst du mit den für HTML aufbereiteten Daten in der Datenbank? Besser ist es, wenn du diesen Vorgang machst, wenn Daten ins HTML geschreiben werden sollen.
»» $_POST["Sonstiges"] = stripslashes($_POST["Sonstiges"]);
Wenn in deinem System Magic Quotes eingeschaltet sind, solltest du versuchen, das generell zu deaktivieren oder einmalig am Scriptanfang mit dem im Beispiel angeführten Code tun.
»» $sql = "INSERT INTO adressen (id, Sonstiges, V...
Den interessanten Teil hast du ausgelassen. Wie werden deine Daten in das Statement eingefügt? Hoffentlich hast du dabei nicht vergessen, mysql_real_escape_string() auf die Daten anzuwenden. In einem SQL-Statement gibt es einige Zeichen mit Sonderbedeutung. Wenn diese Zeichen Daten bleiben sollen, musst du sie mit der angegebenen Funktion maskieren.
echo "$verabschiedung $name";
© 1998-2006
Impressum, Software: Classic Forum