Mailinglisten-Archive |
Hallo, (hoffe, die Zeichen (utf-8) kommen an) wie kann man ein Mail-Formular DAU-sicher machen? $mailheader = "From: $Vorname $Name<$Mail>\n"; $mailheader .= "Content-Type: text/xml; charset=\"utf-8\"\n"; $mailheader .= "Content-Transfer-Encoding: 8bit\n"; Wenn hier jemand unzulässige Zeichen eingibt, kann der Header unbrauchbar werden. Das ist auch abhängig vom Mailserver. So ist beispielsweise mein "Hamster" viel toleranter als der Mailserver meines Providers. Kennt jemand eine Liste zulässiger Zeichen für "From: $Vorname $Name..."? Habe jetzt eine funktionierende Lösung erstellt: $Name = preg_replace("/[!\"§\$%&\/\(\)=\?#'\+\*~\|<>°\^\{\[\]\}\\\,\.-;:_µ¡¢£¤¥¦§¨©«¬®¯±²³´µ¶·¸¹»¼½¾¿×÷]/", "", $_POST["name"]); Ich glaube jedoch, daß es besser wäre, per preg_replace die zulässigen Zeichen zu definieren und den Rest zu entfernen. Kennt jemand ein Script dafür oder kann mir sagen, wie das realisiere? Auch der Mail-Text wird von mir sehr umständlich verarbeitet, so daß in der Mail einmal alles in "utf-8" umgewandelt wird, um alle Zeichen darstellen zu können und zusätzlich wird alles in reine ASCII-Form umgewandelt (für Simple-Mail-Clients). Auch hier gibt es sicher bessere Lösungen als (bitte nicht lachen): $textutf-8=ersatzmailutf-8(htmlentities($text)); $textascii=ersatzmailascii(htmlentities($text)); wobei ich mit ersatzmailutf-8 alles wieder in die ursprünglich eingegeben Zeichen zurückverwandle und mit ersatzmailascii pures ASCII erzeuge: function ersatzmailutf-8($ersatz) { $suche = array( "'¡'", "'¢'", "'£'", ... "'¡'", "'¢'", "'£'", ... "'ä'", "'Ä'", "'ö'", "'Ö'", "'ü'", "'Ü'", "'ß'"); $ersetze = array( "¡", "¢", "£", ... "¡", "¢", "£", ... "ä", "Ä", "ö", "Ö", "ü", "Ü", "ß"); $ersatz = preg_replace($suche, $ersetze, $ersatz); return $ersatz; } function ersatzmailascii($ersatz) { $suche = array( "'¡'", "'¢'", "'£'", ... "'¡'", "'¢'", "'£'", ... "'ä'", "'Ä'", "'ö'", "'Ö'", "'ü'", "'Ü'", "'ß'"); $ersetze = array( "i", " Cent ", " Pound ", ... "i", " Cent ", " Pound ", ... "ae", "AE", "oe", "OE", "ue", "UE", "ss"); $ersatz = preg_replace($suche, $ersetze, $ersatz); return $ersatz; } Wer hat sich damit schon einmal erfolgreich beschäftigt oder kann mir einen Link nennen? PS: mit html_entity_decode hatte ich keinen Erfolg... Gruß René Thiel (Rennkuckuck) mailto:reti at rennkuckuck.de -- http://rennkuckuck.de - Die Rumänien-Seiten http://karpatenferien.de - Ferien in Rumänien!!!
php::bar PHP Wiki - Listenarchive