Gästebuch das auf einer Textdatenbank aufbaut

Ich danke euch schon mal, nur hab ich jetzt nur noch ein kleines Problem^^ also das alles in einer Zeile steht funktioniert jetzt nur leider schreibt er das ganze nicht so in die Text datei

test <br />test <br />test

sondern das wird in etwa so
in die Textdatei geschrieben

text<br />
<br>tet<br />
<br>test

also vor dem <br /> wird ein unix Zeilenumbruch eingefügt
mach ich das ganze das ich es so reinschreibe \r\n dann schreibt er zwei <br /> ein
ich schreibe das ganze so in die Textdatei, sofern das euch was hilft

PHP:
<?php
		include("functions.php");
		$text=$_POST["text"];
		$text=htmlentities($text);
		$text=replacetags($text);
		$text=nl2br($text);


$today = date('j-m-y, g:i a'); 
$datei = "GS/files/guestbook.master";
$rein = str_replace("\r\n","<br />", $text);  
$fp = fopen($datei,"a");
fputs($fp,"$today|-|$name|-|$email|-|$homepage|-|$titelicon|-|$titel|-|$rein\n");
fclose($fp);

?>
 
Zuletzt bearbeitet:
Hi,
was ist denn replacetags() ?

Also, bei mir funktioniert das!
PHP:
include("functions.php");
$text = str_replace("\r\n","<br />",htmlentities(stripslashes($_POST['text'])));
$today = date('j-m-y, g:i a'); 
$datei = "GS/files/guestbook.master"; 
$fp = fopen($datei,"a");
$rein = $today."|-|".$name."|-|".$email."|-|".$homepage."|-|".$titelicon."|-|".$titel."|-|".$text."\r\n";
fputs($fp,$rein);
fclose($fp);

@Dau: War mit meinen Gedanken wohl woanders ;-)

schiese
 
replacetags() duerfte das hier sein:
PHP:
function replacetags($messagetext)
{
	while ((strpos($messagetext,"[url=")>-1) && (strpos($messagetext,"[ /url ]")>-1))
		{
			$startpos=strpos($messagetext,"[url=")+5;
			$endpos=strpos($messagetext,"]",$startpos);
			$url=substr($messagetext,$startpos,$endpos-$startpos);
			$startpos=$endpos+1;
			$endpos=strpos($messagetext,"[ /url ]",$startpos);
			$urltext=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[url='.$url.']'.$urltext.'[ /url ]';
			$urlstring='<a href="'.$url.'" target="_blank">'.$urltext.'</a>';
			$messagetext=str_replace($codestring,$urlstring,$messagetext);
		}
	while ((strpos($messagetext,"[color=")>-1) && (strpos($messagetext,"[ /color ]")>-1))
		{
			$startpos=strpos($messagetext,"[color=")+7;
			$endpos=strpos($messagetext,"]",$startpos);
			$color=substr($messagetext,$startpos,$endpos-$startpos);
			$startpos=$endpos+1;
			$endpos=strpos($messagetext,"[ /color ]",$startpos);
			$colortext=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[color='.$color.']'.$colortext.'[ /color ]';
			$colorstring='<font color="'.$color.'">'.$colortext.'</font>';
			$messagetext=str_replace($codestring,$colorstring,$messagetext);
		}
	while ((strpos($messagetext,"[ b ]")>-1) && (strpos($messagetext,"[ /b ]")>-1))
		{
			$startpos=strpos($messagetext,"[ b ]")+3;
			$endpos=strpos($messagetext,"[ /b ]",$startpos);
			$text=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[ b ]'.$text.'[ /b ]';
			$formatstring='<b>'.$text.'</b>';
			$messagetext=str_replace($codestring,$formatstring,$messagetext);
		}
	while ((strpos($messagetext,"[ i ]")>-1) && (strpos($messagetext,"[ /i ]")>-1))
		{
			$startpos=strpos($messagetext,"[ i ]")+3;
			$endpos=strpos($messagetext,"[ /i ]",$startpos);
			$text=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[ i ]'.$text.'[ /i ]';
			$urlstring='<i>'.$text.'</i>';
			$messagetext=str_replace($codestring,$urlstring,$messagetext);
		}
	while ((strpos($messagetext,"[ u ]")>-1) && (strpos($messagetext,"[ /u ]")>-1))
		{
			$startpos=strpos($messagetext,"[ u ]")+3;
			$endpos=strpos($messagetext,"[ /u ]",$startpos);
			$text=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[ u ]'.$text.'[ /u ]';
			$formatstring='<u>'.$text.'</u>';
			$messagetext=str_replace($codestring,$formatstring,$messagetext);
		}
	while ((strpos($messagetext,"[ s ]")>-1) && (strpos($messagetext,"[ /s ]")>-1))
		{
			$startpos=strpos($messagetext,"[ s ]")+3;
			$endpos=strpos($messagetext,"[/s ]",$startpos);
			$text=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[ s ]'.$text.'[ /s ]';
			$formatstring='<s>'.$text.'</s>';
			$messagetext=str_replace($codestring,$formatstring,$messagetext);
		}
	return $messagetext;
}
 
Hallo,

Dennis Wronka hat gesagt.:
replacetags() duerfte das hier sein:
PHP:
function replacetags($messagetext)
{
	/* sehr viel Code */
}
Holy ****! Das sieht mir nach jeder Menge unnötiger Codeduplikation aus.

@-GS-Master: [phpf]nl2br[/phpf] brauchst du jetzt nicht mehr. In der Form ersetzt du nur alle Zeilenumbrüche doppelt. Übrigens solltest du dir auch schon mal überlegen, was passiert wenn jemand ein |-| in seinen Namen schreibt oder spaßeshalber bei der Angabe der E-Mail-Adresse einen Zeilenumbruch eingibt…

Grüße,
Matthias
 
Ja, die Funktion hat schon ein paar Tage auf dem Buckel und ich hab sie seit Fertigstellung auch noch nicht ueberarbeitet. Auch wenn das im Grunde laengst ueberfaellig ist. RegEx war zu dem Zeitpunkt auch noch ein Buch mit sieben Siegeln fuer mich.
Im Zuge des Code-Updates fuer meine Website wird wohl auch diese Funktion mal einer kosmetischen OP unterzogen werden, aber wohl eher zum Schluss. Zur Zeit wuehl ich mich durch den Code um diversen Injections vorzubeugen. Und danach kommen dann solche "nebensaechlichen" Ausbesserungen.
 
Am besten benutzt du ein Zeichen oder einer Zeichensequenz, die nicht so einfach per Tastatur eingegeben werden kann. Als Separator der einzelnen Daten würde sich das „Unit Separator“-Zeichen (U+001F) anbieten. Zusätzlich solltest du noch die Zeilenumbruchzeichen durch entsprechende, maskierte Schreibweisen ersetzen, etwa:
PHP:
$trans = array(
	chr(0x0A) => '\n',
	chr(0x0C) => '\r',
	chr(0x5C) => '\\\\'
);

// Zum Eintragen
$string = strtr($string, $trans);

// Zur Ausgabe
$string = strtr($string, array_flip($trans));
 
Zurück