Problem mit "<" in Flash-Gästebuch

FAD

Mitglied
Hi.
Ich hab ein Flashgästebuch was über php in einer sql Datenbank gespeichert wird.
Das ganze funktioniert auch, außer wenn in einem Textfeld zB.ein < steht.

PHP:
<?php
$unix_zeit = time(); 
$zeit = date("d.m.Y - G.H.s", $unix_zeit); 
$datum = "Eintrag vom: ".$zeit."Uhr";
    require 'mysql.connect.php'; 
    if( !empty($_POST) ) { 
        $query = ' 
            INSERT INTO 
                    `gaestebuch` 
              SET 
                    `Name`     = "'.mysql_real_escape_string($_POST['Name']).'", 
                    `Email`    = "'.mysql_real_escape_string($_POST['Email']).'", 
                    `Comments` = "'.mysql_real_escape_string($_POST['Comments']).'", 
                    `date`     = "'.$datum.'" 
            '; 
        mysql_query($query) 
            or die('Error: '.mysql_error()); 
    } 
?>
<?php   
    require 'mysql.connect.php';   
    if( !empty($_POST) ) {  
mysql_query("INSERT INTO gaestebuch SET  Name= '".mysql_real_escape_strin($_POST['Name'])."',  Email   = '".mysql_real_escape_string($_POST['Email'])."',  Comments = '".mysql_real_escape_string($_POST['Comments'])."',  date     = '".time()."'  ");  
    }   
$gbook = array(); 
$result = mysql_query("SELECT * FROM gaestebuch ORDER BY ID DESC");  
while($daten = mysql_fetch_assoc($result)) { 
$gbook[] = "<b>Name: ".$daten['Name']."</b><br><i>Email:<u> <a href=\"mailto:".$daten['Email']."\">".$daten['Email']."</a></u></i><br>".$daten['Comments'] ."<br><font size=\"-3\">".$daten['date']."</font><br><br>";  
}  
$NumEntries = count($gbook);
	print "&TotalEntries=$NumEntries&NumLow=$NumLow&NumHigh=$NumHigh&GuestBook=";
	for ($i = $NumLow; $i < $NumHigh; $i++) {
	print $gbook[$i];
		if (!$gbook[$i]) {
		Print "<br><b>= E N D E =</b>";
		exit;
		}
	}
?>
Andere Sonderzeichen wie ÖÄÜöäüé... werden umgewandelt. Kann man das nicht auch irgendwie mit <>=.. machen?
 
Sorry, aber kannst du mir das an meinem Beispiel kurz erklären. Bin noch relativ dumm was php angeht. Weis nicht wo genau ich das einsetzen muss.
 
Naja, eigentlich müsstest du nur den Link anklicken und dir das durchlesen (und vielleicht auch noch ein bisschen mehr) was da im PHP-Manual steht.

Die Umsetzung erfolgt ähnlich wie bei der Funktion mysql_real_escape_string(), die ja bei dir bereits Verwendung findet.
 
Ich hab mir das durchgelesen. Und auch schon einiges mehr. Hab das auch verstanden. Nur in der Umsetzung leigt bei mir noch das Problem.
Kann ich den mysql_real_escape_string() einfach durch htmlentities() erstetzen?

Das Problem ist auch das bei mir kein Fehler ausgegeben wird da ich das ganze ja aus Flash raus steuere. Das heist wenn ein Zeichen fehlt oder falsch ist, geht einfach nichts und das grosse raten geht los.
 
mysql_real_escape_string würd ich auf jeden Fall drinlassen, probiers mal so:
PHP:
mysql_real_escape_string (htmlspecialchars($_POST['bla']))
 
Habs überall hinzugefügt, jedoch ist das Ergebniss das gleiche ;(
Alles was nach < steht wird in Flash nicht angezeigt.
 
Hast du die Möglichkeit, dir das Ganze erst mal in HTML ausgeben zu lassen anstatt gleich in Flash ? Das würde das Debugging vereinfachen.

Welche Werte werden denn in die DB geschrieben ? Kannst du das mit z.B. phpmyadmin mal überprüfen ?
 
In die Datenbank werden die Werte: Name, Email, Comments und Date geschrieben. Das klappt auch. Dort steht dann auch alle was nach dem < kommt. Nur Flash gibt das dann nicht wieder, weil es danach auch ein > erwartet. Der Text ist html formatiert.
Also bin in die Datenbank funktioniert alle einwandfrei.

Die php Datei müsste so Zeichen eigentlich beim auslesen erst umwandeln und dann müsste Flash die Zeichen wieder zurück umwandeln. Dabei sich aber merken, was html code und was ein Zeichen ist. Voll kompliziert.
 
Zurück