ä usw wird nicht beachtet
cr
- html
0 Olaf Schneider0 ce0 wahsaga0 cr0 cr0 Der Martin
hallo,
ich habe diverse php script, die texte von besuchern (z.b. gästebuch) in eine textdatei schreiben.
nun sind die meisten besucher natürlich nicht html bewandert und kennen die regel nicht, dass ä zu ä usw. wird.
die darstellung ist im ie6, aktuellen opera und firefox ohne probleme.
da ich auf anderen seiten im quelltext auch schon gesehen habe, dass sowas nicht beachtet wird, die frage, in wie weit dies zu einem problem werden kann bzw. wie problematisch das ist?
danke fü eure mails
der cr
Hallo cr,
wenn Du – was ich vermute – von Usern eingegebene Texte ohne irgendeine Validierung auf Deiner Website wieder ausgibst, wirst Du ganz andere Probleme bekommen: Jeder kann beliebig HTML-Code, Stylesheets und vor allem Javascript schreiben und damit Alertboxen aufspringen lassen, auf Sexseiten umleiten, versuchen, Cookies auszuspionieren etc. pp.
Strichpunkt: Cross-Site Scripting (XSS)
Die Umlaute selbst sollten erhalten bleiben, wenn Du Dich für eine Codierung entscheidest (iso 8859-1 oder utf-8 oder …) und diese durchgängig beibehältst. Umlaute als benannte Zeichen (ä → ä) notieren ist dann nicht nötig.
Gruß Olaf Schneider
wenn Du – was ich vermute – von Usern eingegebene Texte ohne irgendeine Validierung auf Deiner Website wieder ausgibst
:-) stimmt
wirst Du ganz andere Probleme bekommen
:-(
d.h. entweder mit strip_tags den kompletten html und php code entfernen oder nur die zeichen, damit der text dazwischen weider gegeben werden kann...(htmlspecialchars)
richtig?
ahc und dass mit dem 2. teil den umlauten habe ich nicht so ganz geblickt?
hi,
d.h. entweder mit strip_tags den kompletten html und php code entfernen
Nein, bitte nicht die Wildsau.
oder nur die zeichen, damit der text dazwischen weider gegeben werden kann...(htmlspecialchars)
htmlspecialchars entfernt keine Zeichen, sondern wandelt HTML-eigene Zeichen in ihre Entity-Schreibweise um, so dass sie "ungefährlich" sind.
ahc und dass mit dem 2. teil den umlauten habe ich nicht so ganz geblickt?
Wenn du eine Zeichenkodierung für deine Seite(n) wählst, die gebräuchliche Sonderzeichen wie die Umlaute bereits enthält, dann brauchst du sie nicht in irgendwas umwandeln.
gruß,
wahsaga
htmlspecialchars entfernt keine Zeichen, sondern wandelt in ihre Entity-Schreibweise um, so dass sie "ungefährlich" sind.
also damit wäre die gefahr gebannt?
noch eine frage dann dazu:
ich habe eine seite, wo besucher ihre eigenen lieblingslinks eintragen können. es gibt 3 hauptfelder: name, link, beschreibung
bei name und beschreibung habe ich das nun mit dem obigen code entschärft, aber wie mach ich das am besten bei links, denn da sollen ja echte links da sein.
die ausgabe in php ist etwa so:
echo "$name.....<a href='http://$link' target='_blank'>link</a>.......$beschreibung";
ich habe eine seite, wo besucher ihre eigenen lieblingslinks eintragen können. es gibt 3 hauptfelder: name, link, beschreibung
problem gelöst, auch mit code von vorhin...spricht etwas dagegen?
ich habe aber noch ein letztes problem(wenn wir einmal bei problemen sind)
ich habe eine textdatei mit eingabewerte:
testuser|22.09.2005|blabal anfudhg
testuser2324|20.09.2005|blabal anfudhg
php öffnet die datei mit fopen, (a+)
schreibt eine neue zeile rein nach dem schema wie oben und speichert und schliest...
wenn ich nun manuell aus dieser txt datei etwas lösche und den curser an den anfang der dati setzte (ohne php), wo er auch ist wenn ich sie öffne, dann schreibt er mir bei einem neuen eintrag mit php den neuen text einfach dahinter (aber unregelmäßig manchmal auch nicht)
woran liegt das?
Hallo cr!
dann schreibt er mir bei einem neuen eintrag mit php den neuen text einfach dahinter (aber unregelmäßig manchmal auch nicht)
woran liegt das?
Ich vermute mal, dass es dann passiert, wenn Du eine Textzeile löschst, welche die letzte der Datei ist. Dann löschst Du sicherlich auch die letzte "Leerzeile", die immer vorhanden sein muss, wenn untereinander geschrieben werden muss. Fehlt eine leere Zeile am Dateiende, so wird der Text am Ende der letzten vorhanden dran gehängt, erst dann generiert Dein Script die neue Leerzeile.
Manchmal ist es auch notwendig, die lokal "per Hand" verarbeitete Datei, falls Du sie von Deinem Server gedownloadet hast, vor dem erneuten Hochladen in Unix-Format umzuwandeln: Ein Perl-Script für ein GB, dass Einträge nach Bad Words gegen eine als .txt gespeicherte Liste prüfen sollte, verweigert regelmäßig den Dienst, wenn ich ein neues Wort hinzufüge und vor dem Hochladen vergesse, ins Unix-Format zu konvertieren. "Gute" Text-Editoren bieten eine solche Funktion.
Viele Grüße aus Frankfurt/Main,
Patrick
Moin,
ich habe eine seite, wo besucher ihre eigenen lieblingslinks eintragen können. es gibt 3 hauptfelder: name, link, beschreibung
die ausgabe in php ist etwa so:
echo "$name.....<a href='http://$link' target='_blank'>link</a>.......$beschreibung";
das ist aber nicht fein. Wenn ich also eine korrekte, vollständige URL eingebe, etwa "http://de.selfhtml.org/", dann verstümmelt deine echo-Anweisung das zu einem ungültigen Link, indem es einfach nochmal das Protokoll-Präfix http:// davorklatscht.
Nee, da solltest du besser die eingegebene URL in ihre Bestandteile zerlegen und _nur die fehlenden Komponenten_ ergänzen.
So long,
Martin