Mathetyp: htmlentities? oder doch komplett anders?

Beitrag lesen

Hallo gute Gemeinde

Eigentlich kenne ich mich nur mit html/css aus. Da mir aber die Funktionen ausgehen, beginne ich mich an php heranzutasten.

Als kleine Übungsmaßnahme habe ich mir die Aufgabe gestellt, eine ganz einfache Kommentarfunktion zu schreiben, wie es in Gästebüchern und Foren üblich ist. Hier der Quellcode:

  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">  
  
<head>  
  <!-- ... -->  
</head>  
  
<body>  
  <?php  
    $name = $_POST["name"];  
    $comments = $_POST["comments"];  
  
    if ($name=="" OR $comments=="")  
      {  
        echo "";  
      }  
    else  
      {  
        $posting = "<p>$name schrieb:</p>\n\n  <p>$comments</p>\n\n  ";  
  
        $posts = fopen("posts.txt","a");  
  
        fwrite($posts, $posting);  
  
        fclose($posts);  
      }  
  
    $give = implode("",file("posts.txt"));  
    echo $give;  
  ?>  
  
  <form action="index.php" method="post">  
  
    <label for="name">Name:</label><br />  
    <input type="text" name="name" id="name"/><br />  
  
    <label for="comments">Kommentar:</label><br />  
    <textarea name="comments" id="comments" cols="6" rows="10"></textarea><br />  
  
    <input type="submit" value="Absenden" />  
  </form>  
  
</body>  
</html>  

Das funktioniert auch soweit nur normaler Text geschrieben wird. Werden Sonderzeichen benutzt oder gar html-code, wird dieser logischerweise als solcher vom Browser interpretiert. Ich habe dann den Befehl htmlentities(); gefunden und diesen hier und da eingefügt. Das Problem ist allerdings, dass php beispielsweise " schon beim Absenden in " umwandelt. Da nützt mir das also wenig.

MfG Mathetyp