# html verbieten



## visionsign (29. November 2004)

An welcher stelle muss ich was machen, um html im diesen Gästebuch zu verbieten?




```
<p><a href="index.php?site=insertgb">In das G&auml;stebuch Eintragen</a>
    <br />
    <br />
    
  		<?php
 				 include 'include/config.inc.php';
  				 ?>
  					<?
  	  
 			 	$resid = mysql_query ("SELECT * FROM guestbook ORDER BY id DESC"); 
 			 	while ($record = mysql_fetch_array ($resid, MYSQL_ASSOC)) 
  				  { 
 					$ID ="$record[ID]"."";
  			$name ="$record[name]"."";  
 		 		$email ="$record[email]".""; 
 					$www ="$record[www]".""; 
  			$herkunft ="$record[herkunft]"."<br>\n";
  			$datum ="$record[datum]"."<br>\n";
  			$content ="$record[content]"."";
 			 		$content = nl2br($content);
  			echo "
  					   
 		 		<table width=\"580 px\" border=\"0\" align=\"center\" cellpadding=\"2\" cellspacing=\"2\">
  	<tr>
  	<td width=\"30 px\">Nick:&nbsp;$name</td>
  	<td rowspan=\"4\" width=\"330 px\" valign=\"top\">$content</td>
  	</tr>
  	<tr>
  	<td valign=\"top\" width=\"30 px\">
 	<a href=\"mailto:$email\"><img src=\"images/email.gif\" width=\"16\" height=\"16\" border=\"0\"></a></td>
  	</tr>
  	<tr>
  	<td width=\"30 px\">
 	<a href=\"$www\" target=\"blank\"><img src=\"images/home.gif\" width=\"16\" height=\"16\" border=\"0\">
     
  	</tr>
  	<tr>
  	<td width=\"30 px\">aus:&nbsp; $herkunft</td>
  	</tr>
  	<tr>
  	<td width=\"30 px\">Eintrag&nbsp;Nummer:&nbsp;$ID</td>
  	</tr>
  
  
  
  					 
 					 </table>
  				<br>" ;
  					  }
  				  ?>
```
 
  hier die function zum reinschreiben


```
<?php 
   
  include ("include/config.inc.php"); 
  
  if ($_POST["submit"] == "eintragen") { 
  $name = $_POST["name"]; 
  $email = $_POST["email"]; 
  $www = $_POST["www"];
  $herkunft = $_POST["herkunft"];
  $content = $_POST["content"];
  
 if (mysql_query ("INSERT INTO guestbook (name, email, www, herkunft, content) VALUES ('$name', '$email', '$www', '$herkunft', '$content')")) { 
  echo "Daten wurden eingefügt"; 
  } else { 
  echo "Fehler beim einfügen der Daten"; 
  } 
  } else { 
  ?> 
  <div align=center>
  <form action="" method="post">
   <table width="200" border="0" align="center" cellpadding="2" cellspacing="0">
    <tr>
  	<td>Name:</td>
  	<td><input type="text" name="name"></td>
    </tr>
    <tr>
  	<td>EMail:</td>
  	<td><input type="text" name="email"></td>
    </tr>
    <tr>
  	<td>WWW:</td>
  	<td><input type="text" name="www"></td>
    </tr>
    <tr>
  	<td>Herkunft:</td>
  	<td><input type="text" name="herkunft"></td>
    </tr>
    <tr>
  	<td valign="top">Message:</td>
  	<td><textarea name="content" cols="20" rows="5"></textarea></td>
  	</tr>
   
  </table>
  <input type="submit" name="submit" value="eintragen"></input> 
  <input type="reset" name="reset" value="l&ouml;schen"></input>
  </form>
  </div>
  <?php 
  } 
  ?>
```


----------



## Gumbo (29. November 2004)

Verbieten wirst du es nicht können. Du kannst es jedoch so formatieren, dass es vom Browser nicht interpretiert wird.
Schau dir dazu mal die htmlspecialchars() bzw. htmlentities() Funktionen an.


----------



## visionsign (29. November 2004)

geht es so:


```
$content ="$record[content]"."";
  $content = nl2br($content);
  $content = strip_tags($content);
```


----------



## starfoxfs (29. November 2004)

Beim eintragen des Textes in die DB strip_tags benutzen.


----------



## visionsign (29. November 2004)

könnt ihr das schnell einbauen!
 bin noch nich so der php pro


----------



## JohannesR (29. November 2004)

```
// [...]
$content = $record['content']; // Was war denn das fuer ein Quote-Chaos?
$content = nl2br($content);
$content = htmlspecialchars($content);
// [...]
```


----------



## JohannesR (29. November 2004)

starfoxfs hat gesagt.:
			
		

> Beim eintragen des Textes in die DB strip_tags benutzen.


Nein! Man formatiert die Datensaetze bei der Ausgabe, nicht bei der Eingabe!


----------



## starfoxfs (29. November 2004)

Anstatt


```
$content = $_POST["content"];
```

diesen Code benutzen:


```
$content = strip_tags($_POST["content"]);
```


----------



## Lukaro (29. November 2004)

Johannes Röttger hat gesagt.:
			
		

> Nein! Man formatiert die Datensaetze bei der Ausgabe, nicht bei der Eingabe!


hmm, wieso das denn?
bei der eingabe hat man die aktion doch nur einmal, bei der ausgabe jedes mal aufs neue


----------



## hpvw (29. November 2004)

Irgendwann überlegst Du Dir, das doch zuzulassen, oder auf eine andere Weise zu verarbeiten. Der User wollte damit schließlich irgendwas ausdrücken.
Und dann ist es weg...
Oder Du verweigerst das Eintragen mit entsprechendem Hinweis und lässt ihn seinen Text editieren.


----------



## visionsign (29. November 2004)

habe jetzt das hier gemacht:


```
$content ="$record[content]"."";
 			  		$content = nl2br($content);
 			$content = htmlspecialchars($content);
```
 
 NUR wenn ich ein ENTER drücke um in der nächsten Zeile zu schreiben, habe ich später in der ausgabe lauter <br /> die angezeigt aber nicht ausgeführt werden! Ist natürlich doof denn ich möchte ja nl2br


----------



## Gumbo (29. November 2004)

Dann musst du die Reihenfolge ändern:
	
	
	



```
<?php
	[…]
	$content = nl2br(htmlspecialchars($record['content']));
	[…]
?>
```


----------

