Funktion fürs Gästebuch
Bevor Sie den Beitrag abspeichern, sollten folgendes Beachtet werden. Als erstes sollten HTML- und
PHP-Tags aus den Text mit strip_tags($string); entfernt werden.
Als zweites sollten Anführungszeichen und Backslashes durch ein Backslash mit addslashes($string);
geschütz werden. Zusätzlich habe ich noch BB-Code für das Gästebuch hinzugefügt.
function prepare4sql($string) {
$string = trim($string);
$string = strip_tags($string);
$string = preg_replace("/([ \r\n])http:\/\/(.*) /iUms", "\\1[url]http://\\2[/url] ", $string);
$string = preg_replace("/([ \r\n])https:\/\/(.*) /iUms", "\\1[url]https://\\2[/url] ", $string);
$string = preg_replace("/([ \r\n])ftp:\/\/(.*) /iUms", "\\1[url]ftp://\\2[/url] ", $string);
$string = preg_replace("/([ \r\n])www.(.*) /iUms", "\\1[url]http://www.\\2[/url] ", $string);
$string = preg_replace("/^http:\/\/(.([^ ,\r\n])*) /iUms", "[url]http://\\1[/url] ", $string);
$string = preg_replace("/^https:\/\/(.([^ ,\r\n])*) /iUms", "[url]https://\\1[/url] ", $string);
$string = preg_replace("/^ftp:\/\/(.([^ ,\r\n])*) /iUms", "[url]ftp://\\1[/url] ", $string);
$string = preg_replace("/^www.(.([^ ,\r\n])*) /iUms", "[url]http://www.\\1[/url] ", $string);
$string = str_replace("[hr]", "<hr>", $string); //[hr]
$string = preg_replace("/\[b\](.*)\[\/b\]/iUms", "<span style=\"font-weight: bold;\">\\1</span>", $string); //[fett]
$string = preg_replace("/\[i\](.*)\[\/i\]/iUms", "<span style=\"font-style: italic;\">\\1</span>", $string); //[kursiv]
$string = preg_replace("/\[u\](.*)\[\/u\]/iUms", "<span style=\"text-decoration: underline;\">\\1</span>", $string); //[unterstrichen]
$string = preg_replace("/\[email\](.*)\[\/email\]/msiU", "<a href=\"mailto:\\1\">\\1</a>", $string); //[email]
$string = preg_replace("/\[url\]www.(.*)\[\/url\]/iUms", "<a href=\"http://www.\\1\">http://www.\\1</a>", $string); //[url]
$string = preg_replace("/\[url\](.*)\[\/url\]/iUms", "<a href=\"\\1\">\\1</a>", $string); //[url]
$string = preg_replace("/\[url=(.*)\](.*)\[\/url\]/iUms", "<a href=\"\\1\">\\2</a>", $string); //[url=]
$string = preg_replace("/\[img\](.*)\[\/img\]/iUms", "<img src=\"\\1\" style=\"border:0;\" alt=\"bild\">", $string); //[img]
$string = preg_replace("/\[green\](.*)\[\/green\]/iUms", "<span style=\"color:green\">\\1</span>", $string); //[green]
$string = preg_replace("/\[red\](.*)\[\/red\]/iUms", "<span style=\"color:red\">\\1</span>", $string); //[red]
$string = preg_replace("/\[blue\](.*)\[\/blue\]/iUms", "<span style=\"color:blue\">\\1</span>", $string); //[blue]
$string = preg_replace("/\[white\](.*)\[\/white\]/iUms", "<span style=\"color:white\">\\1</span>", $string); //[white]
$string = addslashes($string);
return $string;
}
Unser Script eintragen.php aus Formular auslesen
ändern wir dann noch wie folgt.
include 'inc/zugriff.php';
include 'inc/_functions.php';
$sql = "INSERT INTO beitrag
(Name, eMail, HP, Beitrag, IP, Zeit)
VALUES
('".addslashes(htmlspecialchars($_POST['realname']))."',
'".addslashes(htmlspecialchars($_POST['email']))."',
'".addslashes(htmlspecialchars($_POST['url']))."',
'".prepare4sql($_POST['body'])."',
'".$_SERVER['REMOTE_ADDR']."',
$zeit)";
$erg = mysqli_query($dblink, $sql);
Und wir haben noch ein Problem. Zeilenumbrüche, die in der Datenbank abgespeichert sind, werden im
Gästebuch nicht übernommen. Um diese richtig anzuzeigen, gibt es in XHTML die Funktion
nl2br($string);. Diesen können wir hier allerdings nicht anwenden, da dieses
Gästebuch in HTML in der strict-Variante geschrieben ist. Daher benutze ich die Funktion
str_replace("\r\n","<br>",$string);. Hier der komplette Code
function prepare4view($string){
$string = str_replace("\r\n","<br>",$string);
// $string = nl2br($string);
$string = stripslashes($string);
$new_text = '';
$string_1 = explode('>',$string);
$sizeof = sizeof($string_1);
for ($i=0; $i<$sizeof; ++$i) {
$string_2 = explode('<',$string_1[$i]);
if (!empty($string_2[0])) {
$new_text .= preg_replace('#([^\n\r .]{50})#i', '\\1 ', $string_2[0]);
}
if (!empty($string_2[1])) {
$new_text .= '<' . $string_2[1] . '>';
}
}
return $new_text;





