html in Gästebuch verbieten, aber wie?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anwenden
benutzername
code
eintrag
eintragen
familie
fasse
funktion
glauben
http
kopieren
manual
parameter
posten
projekt
reichen beitrag
schiffer
string
text
verhindern
-
Wie kann ich es verbieten lassen das html in mein Gästebuch eingetragen wird?
Ml-records meinte den Befeh: htmlentities(\"$object\" , ENT_QUOTES);
Aber ich weiß nicht wohin.
Gibt es noch andere Möglichkeiten?
P.S. Ich weiß das es diesen Theard schon gibt aber ich finde ihn nicht mit der Suchfunktion. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du musst die Funktion natürlich auf den Text,Titel, Namen usw. anwenden. Halt überall da, wo der User eine Eingabe machen kann, in der HTML verboten sein soll.
Schau dir dazu folgende Funktionen an:
Wie schon gesagt htmlentities():
http://de.php.net/manual/de/function.htmlentities.php
Und auch ganz praktisch mysql_real_escape_string():
http://de2.php.net/manual/de/function.mysql-real-escape-string.php -
Da steht jetzt so ein Script auf der Seite:
<?php $orig = \"I\'ll \\\"walk\\\" the <b>dog</b> now\"; $a = htmlentities($orig); $b = html_entity_decode($a); echo $a; // I\'ll "walk" the <b>dog</b> now echo $b; // I\'ll \"walk\" the <b>dog</b> now // Usern mit einer PHP-Version vor 4.3.0 hilft folgender Workaround: function unhtmlentities($string) { // replace numeric entities $string = preg_replace(\'~&#x([0-9a-f]+);~ei\', \'chr(hexdec(\"\\\\1\"))\', $string); $string = preg_replace(\'~&#([0-9]+);~e\', \'chr(\"\\\\1\")\', $string); // replace literal entities $trans_tbl = get_html_translation_table(HTML_ENTITIES); $trans_tbl = array_flip($trans_tbl); return strtr($string, $trans_tbl); } $c = unhtmlentities($a); echo $c; // I\'ll \"walk\" the <b>dog</b> now ?>
Das möchte ichh in die Datei eintragen.php packen, aber wohin?
<?php //die Konfigurationsdateien lesen error_reporting(E_ALL); include \"inc/config.php\"; //Datebnbanklogin @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error()); mysql_select_db(MYSQL_DATABASE) OR die(mysql_error()); //Parameter holen $benutzername = $_POST[\'benutzername\']; $mail = $_POST[\'mail\']; $homepage = $_POST[\'homepage\']; $eintrag = $_POST[\'eintrag\']; $IP = getenv(\"REMOTE_ADDR\"); //Parameter prüfen if($benutzername != \"\" && $eintrag != \"\") { //Eintrag escapen $eintrag = str_replace(\"\\n\", \"<br />\", $eintrag); $eintragen = \"INSERT INTO guestbook (IP, Datum, Benutzername, Mail, Homepage, Eintrag) VALUES( \'$IP\', NOW(), \'$benutzername\', \'$mail\', \'$homepage\', \'$eintrag\' ) \"; $result = mysql_query($eintragen) OR die(mysql_error()); if($result) { header(\"location: http://www.ruanda-projekt.de/?s=auslesen\"); } else { echo \"Eintrag konnte nicht gespeichert werden\"; } } else { if($eintrag == \"\") { echo \"Du musst einen Gästebuch eintrag schreiben.\"; } if($benutzername == \"\") { echo \"Du musst einen Benutzernamen eingeben\"; } } ?>
Beitrag geändert: 24.12.2007 8:14:21 von no-smoke -
Ich fasse es nicht... -.-
Ich werde dir hier _keinen_ Code posten. Du musst schon ein bisschen selbst denken. Kann es sein, dass du noch gar nicht richtig PHP kannst?
Also du musst vor dem Speichern in der Datenbank mysql_real_escape_string() auf $benutzername, $mail etc. anwenden, um SQL-Injections zu verhindern.
http://de2.php.net/manual/de/function.mysql-real-escape-string.php
Erst bei der Ausgabe musst du dann htmlentities() anwenden. -
Ich fasse es nicht... -.-
Ich werde dir hier _keinen_ Code posten. Du musst schon ein bisschen selbst denken. Kann es sein, dass du noch gar nicht richtig PHP kannst?
Also du musst vor dem Speichern in der Datenbank mysql_real_escape_string() auf $benutzername, $mail etc. anwenden, um SQL-Injections zu verhindern.
http://de2.php.net/manual/de/function.mysql-real-escape-string.php
Erst bei der Ausgabe musst du dann htmlentities() anwenden.
Ich kann schon einigermaßen php.
Aber so etwas habe ich noch nie gemacht.
-
kurz gesagt:
<?php $guter_text = htmlentities($boeser_text); ?>
$boeser_text ist dabei der vom User eingegeben, den du dann überprüfen musst.
IMHO dürfte das reichen.
Beitrag geändert: 26.12.2007 1:05:04 von bettcrew -
kurz gesagt:
<?php $guter_text = htmlentities($boeser_text); ?>
$boeser_text ist dabei der vom User eingegeben, den du dann überprüfen musst.
IMHO dürfte das reichen.
Beitrag geändert: 26.12.2007 1:05:04 von bettcrew
Und was ist guter_text? -
xD
Das meinst du doch jetzt nicht ernst...
die funktion nehmt den text den der user eingegeben hat und checkt ihn mit der funktion.
Danach speichert er den text dan in guter_text das ist eben die variable! Diese gebst du dann in dein mysql code...
Naja das muss man schon wissen wenn man php lernt;)
Ich glaube du solltest mit etwas leichterem anfangen. Ein gästebuch von irgentwo zu kopieren hilft reichlich wenig wenn man anfänger ist. -
<?php $guter_text = htmlspecialchars($boeser_text); ?>
$boeser_text
ist die variable mit dem text vom user.
die funktion entfernt alle html-spezifische zeichen und ersetzt sie durch
usw.&qout;
das ist wohl die professionellste funktion die php zu bieten hat.
mfg
Beitrag geändert: 27.12.2007 13:05:11 von familie-schiffer
Beitrag geändert: 27.12.2007 13:06:42 von familie-schiffer -
also bei mir geht nix von den vorschlägen
-
hast du ihn auc richtig eingesetzt oder einfach nur in en datei reingeschrieben und gestartet
Dann kann auch nicht passiert sein xD!
<?php $boeser_text=\"BLABLA <html><br><br> BLABLABLA\"; $guter_text = htmlspecialchars($boeser_text); echo $guter_text; ?>
Gehts dann xD -
xD
Das meinst du doch jetzt nicht ernst...
die funktion nehmt den text den der user eingegeben hat und checkt ihn mit der funktion.
Danach speichert er den text dan in guter_text das ist eben die variable! Diese gebst du dann in dein mysql code...
Naja das muss man schon wissen wenn man php lernt;)
Ich glaube du solltest mit etwas leichterem anfangen. Ein gästebuch von irgentwo zu kopieren hilft reichlich wenig wenn man anfänger ist.
Vielen Dank für deine Hilfe aber das Gästebuch habe ich wirklich selbst geschrieben.
Und jetzt ahbe cih es auch verstanden.
Ich habe die einzelnen Mysql angaben nicht mit dem Formular verbinden können bis mir dann doch ncoh ein Geistesblitz kam.
Das Ergebnis könnt ihr euch auf http://www.ruanda-projekt.de angucken.
Beitrag geändert: 28.12.2007 10:19:42 von no-smoke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage