Zur Navigation

geht $_POST['test'] = htmlentities($_POST['test'], ENT_QUOTES);?

1 Anonym (Gast)

Hallo,

nur eine kurze Frage:

ist das

$_POST['test'] = htmlentities($_POST['test'], ENT_QUOTES);

gültiges html?
also dass die gleiche Variable auf beiden Seiten vom = vorkommt?

14.10.2011 18:40

2 Jörg

Das geht schon. Ich persönlich vermeide das bei $_POST, $_GET etc., weil ich erwarte, dass diese Arrays die originären Werte enthalten, die von außen übermittelt wurden. Bei Erweiterung von fremden Scripten stellt es sich aber immer wieder mal heraus, dass der Inhalt dieser Arrays schon manipuliert wurde.

In dem vorliegenden Fall würde ich das htmlentities() erst dort anwenden, wo der Inhalt der Variable ins HTML eingefügt werden soll, z.B.:

<?php echo htmlentities($_POST['test'], ENT_QUOTES); ?>

An anderer Stelle könnte man irgendwann vielleicht noch das "rohe" $_POST['test'] gebrauchen, z.B. um es in eine E-Mail oder in eine Datenbank einzufügen (in letzterer würde man den Inhalt dann stattdessen z.B. mit mysql_real_escape_string() behandeln)

14.10.2011 18:56 | geändert: 14.10.2011 18:58

3 Anonym (Gast)

Ich merke gerade, dass htmlentities aus irgendeinem Grund bei mir nicht funktioniert :(

"<" und ">" werden zwar "entschärft", Anführungszeichen jedoch trotz ENT_QUOTES nicht.

wenn ich den htmlentities-Befehl komplett aus dem Script entferne, werden die spitzen Klammern trotzdem geändert.

Daraus schließe ich, dass htmlentities nicht geht.

Woran könnte das liegen?

14.10.2011 19:03

4 Anonym (Gast)

Es funktioniert doch!

Ich habe nur ich Firebug statt im direkten Quelltext nachgesehen. Und Firebug zeigt "&#039;" selbst als "richtiges" Hochkomma an.

14.10.2011 19:15

... 3 Jahre und 3 Monate später ...

5 ha (Gast)

ist der code so korrekt - danke für die Hilfe


<?php
		if(isset($_POST['submit'])) {
		$Familienname = htmlentities($_POST['Familienname']);
		$Vorname = htmlentities($_POST['Vorname']);
		$StrasseNr = htmlentities($_POST['StrasseNr']);
		$PLZ = htmlentities($_POST['PLZ']);
		$Ort = htmlentities($_POST['Ort']);
		$TelNr = htmlentities($_POST['TelNr']);
		$Mail = htmlentities($_POST['Mail']);
		
		
		$sql = "INSERT INTO kontakte VALUES(
				NULL,
				"$Familienname",
				"$Vorname",
				"$StrasseNr",
				"$PLZ",
				"$Ort",
				"$TelNr",
				"$Mail"
		       )";
			   
			$query = mysql_query($sql) or die(mysql_error());
			if($query == TRUE){
				echo "Datensatz wurde eingefügt";
			} else {
				echo "Datensatz konnte nicht eingefügt werden";
			}
		}
		?>

18.01.2015 19:51

6 Jörg

Wenn du Strings in eine Datenbank einfügst, dann musst du diese gegen SQL-Injection schützen. Dafür gibt es die Funktion mysql_real_escape_string(). htmlentities() schützt nicht vor SQL-Injection!

18.01.2015 23:04

Beitrag schreiben (als Gast)

Beim Verfassen des Beitrages bitte die Forenregeln beachten.





[BBCode-Hilfe]