1.2k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von computerfreaki Mitglied (219 Punkte)
Hallo,

habe folgendes Problem:
Ich habe auf meiner HP eineShoutbox (Chatroom). Diese funktioniert auch prima, aber heute ist mir aufgefallen, wenn ich bei der Nachricht oder beim Namen ein & eingebe wird dieses und die Zeichen dahinter nicht ausgegeben.
Also wenn ich jetzt eingebe:
Also ich & hr. Mustermann
wird dann nur
Also ich
in der DB gespeichert

Hier der Code für das PHP-Skript, das die Daten in die DB schreibt:

<?php
// Einstellungen laden
include("config.php");

// Verbindung zu mySQL aufbauen
$dblink = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$dblink) {
die('Keine Verbindung zur Datenbank möglich.');
}

// Datenbank auswählen
$dbselected = mysql_select_db($db, $dblink);
if (!$dbselected) {
die ('Kann Datenbank nicht erreichen.');
}

// Neuen Datensatz speichen
$name = htmlentities(mysql_real_escape_string($_POST["name"]));
$nachricht = htmlentities(mysql_real_escape_string($_POST["message"]));
$browser = $_SERVER['HTTP_USER_AGENT'];
$ip_adress =$_SERVER['REMOTE_ADDR'];
$result = mysql_query("INSERT INTO $dbtable (name, message, ip, browser) VALUES ('$name','$nachricht','$browser','$ip_adress')");
if (!$result) {
die('Ungueltige SQL-Query');
}

// Verbindung zur Datenbank schließen
mysql_close($dblink);

?>

Einfach selbst mal ausprobiern...

mfg
computerfreaki

2 Antworten

0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Warum speicherst du die Daten nicht ohne die Umwandlung mittels htmlentities() in der DB und führst die Umwandlung erst bei der Ausgabe durch?

Und wenn schon würde ich die Reihenfolge umdrehen, also
$name = mysql_real_escape_string(htmlentities($_POST["name"]));
$nachricht = mysql_real_escape_string(htmlentities($_POST["message"]));
0 Punkte
Beantwortet von computerfreaki Mitglied (219 Punkte)
Danke für die Antwort.
Problem gerade eben gelöst. Ich muss die Daten mit Javascript escapen und dann in die DB schreiben.
...