Zunächst danke für das schöne Modul. Mit kleinen Änderungen müsste man das auch gut für Kurzmeldungen verwenden können. Eingabemodul z. B. in einem geschützten Bereich. Dann muss der Redakteur nicht immer einen neuen Artikel anlegen.
Habe die Version von
www.forseth.de für contenido 4.4.5
Folgende Anpassungen wurden durchgeführt bzw folgende Fehler treten noch auf:
1.
[03-Feb-2005 20:50:34] PHP Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v135893/cms/front_content.php(567) : eval()'d code:9) in /www/htdocs/v135893/cms/front_content.php(567) : eval()'d code on line 431
Die Fehlermeldung kommt nicht mehr wenn man im GB-Eingabe-Modul im Backend die Cookies auf OFF stellt und bei Lifetime nichts einträgt.
Da ich diese Funktion nicht brauche lass ich sie ausgeschaltet, hauptsache das Gästebuch läut jetzt (siehe thread von banjaluka)
Gibt es da keine andere Lösung?
2.
textarea im output des Eingabemoduls geändert, damit cursor in die erste Zeile springt
3.
Eingabefelder waren im backend nicht zu sehen. $a = $_POST["a"]; am Anfang des outputs des Eingabemoduls ergänzt.
4.
bei smileys treten noch Javascriptfehler auf: 'opener' ist Null oder kein Objekt
5.
Bei mir wurde als url immer die url der Eingabeseite des Gästebuches übergeben. Habe deshalb url in urlguest und $url in $urlguest geändert. In der Datenbank muss nichts geändert werden.
6.
Bei mir liegen alle Bilder im Verzeichnis upload/design/gaestebuch/
Hier der geänderte code für das output des Eingabemoduls. Sonst alles wie im download auf
www.forseth.de beschrieben.
Gruß Mc
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Guestbook Eingabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
* Modified : Mar. 1st 2004 by Lars D. Forseth <lars@forseth.de>
************************************************/
$activ = "CMS_VALUE[5]";
if ($activ == "") { $activ = "0";
}
$sperre ="CMS_VALUE[6]";
$links = explode('?',$PHP_SELF);
$link = $links[0];
$link = $link."?idcat=".$idcat; // back-link
$meineseite = $auth->url();
$a = $_POST["a"]; //wurde ergänzt. Ohne sind die Eingabefelder im backend nicht zu sehen
if ($a == "") { $a = "add"; }
/* in diesem Ordner liegen meine smileys für das Gästebuch
(sollte nicht mit "/" beginnen, MUSS aber mit "/" enden!)
*/
$dir = "upload/design/gaestebuch/";
/* end definition v. "$dir" */
echo "
<p><B>Bitte mindestens Name und Kommentar angeben</B>
<div>Um Ihrem Beitrag ein <b>Emoticon</b> hinzuzufügen, einfach auf ein Smiley klicken ! Sie können auch den</div>
<div>Code eingeben, der erste Smiley wäre dann z.B.: :-)</div></p>
";
if ($a == "add") {
echo "
<br>";
echo "
<form name='gb' id='gb' action=".$link." method='post'>";
echo "
<input type=\"hidden\" name=\"a\" value=\"send\">";
echo "
<table border=0 cellpadding=2 cellspacing=0>
<tr class=text>
<td align=right><B> Name: </b></td>
<td><input class=\"feld\" size=\"40\" type=text name=name value='$name'></td>
<td rowspan=8 valign=top>
<table border=0 align=right cellspacing=0 cellpadding=0>
<tr class=text>
<td class=text><strong>Bedeutung</strong></td>
<td class=text><div align=center><strong>Icon </strong></div></td>
<td class=text><strong> Code</strong></td>
</tr>
<tr class=text>
<td>lacht</td>
<td align=center valign=middle><img src=".$dir."smile.gif onClick=insert(':-)');></td>
<td>:-)</td>
</tr>
<tr class=text>
<td>Zunge streckend</td>
<td align=center valign=middle><img src=".$dir."tongue.gif onClick=insert(':-P');></td>
<td>:-P</td>
</tr>
<tr class=text>
<td>zuzwinkernd</td>
<td align=center valign=middle><img src=".$dir."wink.gif onClick=insert(';-)');></td>
<td>;-)</td>
</tr>
<tr class=text>
<td>laut lachend</td>
<td align=center valign=middle><img src=".$dir."laugh.gif onClick=insert(':lol:');></td>
<td>:lol:</td>
</tr>
<tr class=text>
<td>unsicher</td>
<td align=center valign=middle><img src=".$dir."unsure.gif onClick=insert(':unsure:');></td>
<td>:unsure:</td>
</tr>
<tr class=text>
<td>cool</td>
<td align=center valign=middle><img src=".$dir."cool.gif onClick=insert('8-)');></td>
<td>8-)</td>
</tr>
<tr class=text>
<td>nicht versteht</td>
<td align=center valign=middle><img src=".$dir."huh.gif onClick=insert(':huh:');></td>
<td>:huh:</td>
</tr>
<tr class=text>
<td>wütend</td>
<td align=center valign=middle><img src=".$dir."mad.gif onClick=insert(':angry:');></td>
<td>:angry:</td>
</tr>
<tr class=text>
<td>erstaunt</td>
<td align=center valign=middle><img src=".$dir."blink.gif onClick=insert(':blink:');></td>
<td>:blink:</td>
</tr>
<tr class=text>
<td>traurig</td>
<td align=center valign=middle><img src=".$dir."sad.gif onClick=insert(':-(');></td>
<td>:-(</td>
</tr>
<tr class=text>
<td>breit grinsend</td>
<td align=center valign=middle><img src=".$dir."biggrin.gif onClick=insert(':-))');></td>
<td>:-))</td>
</tr>
<tr class=text>
<td>erschrocken</td>
<td align=center valign=middle><img src=".$dir."surprised.gif onClick=insert(':-O');></td>
<td>:-0</td>
</tr>
<tr class=text>
<td>augenrollen</td>
<td align=center valign=middle><img src=".$dir."rolleyes.gif onClick=insert(':rolleyes:');></td>
<td>:rolleyes:</td>
</tr>
</table>
</td>
</tr>
<tr class=text>
<td align=right width=12%> E-Mail: </td>
<td><input class=\"feld\" size=\"40\" type=text name=email value='$email'></td>
</tr>
<tr class=text>
<td align=right width=12%> Homepage: </td>
<td><input type=\"text\" class=\"feld\" size=\"40\" name=\"urlguest\" value=\"$urlguest\"></td>
</tr>
<tr valign=top class=text>
<td align=right width=10%><b> Kommentar: </b></td>
<td>
<textarea class=\"feld\" name=\"comments\" cols=50 rows=11 wrap=physical>$comments</text"."area> <!--cursor springt jetzt in die erste Zeile-->
</td>
</tr>
<tr class=text>
<td align=right width=10%> </td>
<td >
<!-- <a href=$link onClick=gb.submit();>Eintragen</a> -->
<input class=\"feld\" type=\"submit\" value=\"Eintragen\"></td>
</tr>
</table>
</form>
";
} // end "if($a == "add")"
// wenn ein eintrag geschrieben werden soll
if($a == "send") {
// Formatierung des Textes aus dem Kommentarfeld
if($name!="" && $comments!="") { //Abfangen der "leeren" Einträge
/* filter given data */
$error = "no";
$mailkomm = stripslashes($comments);
$comments = trim($comments);
$comments = nl2br($comments);
$comments = str_replace("'","",$comments);
$comments = str_replace(";","",$comments);
$comments = str_replace("--","",$comments);
$comments = htmlentities($comments);
$comments = str_replace("<br />","",$comments);
$comments = str_replace("<br/>","",$comments);
$comments = str_replace("<br>","",$comments);
$comments = str_replace("\n","<br>",$comments);
// filter email
if ($error == "no") {
if ($email) {
if (strlen($email) > 50) {$error = "Emailadresse ist zu lang! (max. 50 Zeichen erlaubt)";}
else {
$valid = (eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]+$",$email));
if (!$valid == 1) {$error = "Emailadresse ist ungültig, bitte überprüfen!";}
else {
$parts = explode("@",$email);
$lasts = explode(".",$parts[1]);
$domain = $lasts[(count($lasts)-2)].".".$lasts[(count($lasts)-1)];
$valid = (int) (checkdnsrr($domain,ANY));
if ($valid == 0) {$error = "Emailadresse ist ungültig, bitte überprüfen!";}
} // end else
} // end else
} // end if email
} // end if no error
// filter name
if ($error == "no") {
if (strlen($name) > 30) {$error = "Name ist zu lang! (max. 30 Zeichen erlaubt)";}
else {
$name = nl2br($name);
$name = str_replace("'","",$name);
$name = str_replace(";","",$name);
$name = str_replace("--","",$name);
$name = htmlentities($name);
}
} // end if
// filter urlguest
if ($error == "no") {
if ($urlguest) {
if (strlen($urlguest) > 100) {$error = "URL ist zu lang! (max. 100 Zeichen erlaubt)";}
else {
$urlguest = str_replace("\n","",$urlguest);
$urlguest = str_replace("'","",$urlguest);
$urlguest = str_replace(";","",$urlguest);
$urlguest = str_replace("--","",$urlguest);
$urlguest = str_replace("\"","",$urlguest);
$urlguest = str_replace("'","",$urlguest);
$urlguest = str_replace("\'","",$urlguest);
$urlguest = str_replace(" ","",$urlguest);
$urlguest = strtolower($urlguest);
$sheme_given = (eregi("^([a-z]+://)",$urlguest));
if ($sheme_given == 0) {$urlguest = "http://".$urlguest;}
$url1 = (parse_url($urlguest));
$host = $url1["host"];
$valid = (eregi("([a-z0-9_\\-\\.])+(\\.)+([a-z]{2,4})",$host));
if (!$valid == 1) {$error = "Homepage ist ungültig, bitte überprüfen!";}
else {
$valid = (int) (checkdnsrr($host,ANY));
if ($valid == 0) {$error = "Homepage ist ungültig, bitte überprüfen!";}
} // end else
} // end else
} // end if url
} // end if
if ($error == "no") {
if (strlen($comments) > 3000) {$error = "Kommentar ist zu lang! (max. 3000 Zeichen erlaubt)";}
else { // no errors in given data yet...
//-------------------- konvertiere Smileys ---------------------------------
$comments = eregi_replace(":-\)\)|:\)\)|:biggrin:",
"<img src=\'".$dir."biggrin.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":-\)|:\)|:smile:",
"<img src=\'".$dir."smile.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":-D|:-D|:lol:",
"<img src=\'".$dir."laugh.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":huh:",
"<img src=\'".$dir."huh.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":rolleyes:",
"<img src=\'".$dir."rolleyes.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":O\)|:o\)",
"<img src=\'".$dir."smile2.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(";-\)|;\)|:wink:",
"<img src=\'".$dir."wink.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":-\(|:\(|:sad:",
"<img src=\'".$dir."sad.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":angry:",
"<img src=\'".$dir."mad.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":-D|:D|:happy:",
"<img src=\'".$dir."happy.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":heart:",
"<img src=\'".$dir."heart.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":-P|:P|:tongue:",
"<img src=\'".$dir."tongue.gif\' border=\'0\'>",$comments);
$comments = eregi_replace("8-\)|8\)|:cool:",
"<img src=\'".$dir."cool.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":-\(|:\(|:weep:",
"<img src=\'".$dir."weep.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":-o|:o|:astonished:",
"<img src=\'".$dir."surprised.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":blink:",
"<img src=\'".$dir."blink.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":wub:",
"<img src=\'".$dir."wub.gif\' border=\'0\'>",$comments);
$comments = eregi_replace(":unsure:",
"<img src=\'".$dir."unsure.gif\' border=\'0\'>",$comments);
// see if there are more smileys than allowed:
$imgs = explode("<img src=",$comments);
$imgs = count($imgs);
if ($imgs > 10) {
$error = "Zu viele Smileys! (max. 10 Stück pro Eintrag)";
$comments = "";
} // end if($imgs > 10)
} // end else no errors
} // end else ("no errors in given data yet")
/* end "filter given data" */
/* if no error was found while filtering */
if ($error == "no") {
/* search for words longer than 50 chars and shorten them + <br> */
$c = 0;
for ($i=0; $i < strlen($comments); $i++) {
$c++;
if (($comments[$i] == " ") or ($comments[$i] == "\n") or
($comments[$i] == "\r")) {$c = 0;}
if ($c > 48) {
$comments = substr_replace($comments, "-<br>", $i, 0);
$i = $i+4;
$c = 0;
} // end if
} // end for
// ---------Abschnitt nach n Zeichen -------------------------------------
//$z = (int) ("CMS_VALUE[7]");
//for ($i=$z; $i < $z+20; $i++) {
// $comments1 = substr($comments , 0, $i);
// $cut = substr($comments, $i);
// if ((ord ($cut) == 32)||(ord ($cut) == 44)||(ord ($cut) == 45)) {
// $comments= substr($comments , 0, $i);
// $comments .= ' .....';
// } // end if
//} // end for
// -------------- IP /Host speichern ----------------------------------
$ip = getenv('REMOTE_ADDR');
$host = gethostbyaddr($ip);
// -------------- Cookie Setzen ---------------------------------------
/* if no cookie lifetime given */
$lifetime = (int) ("CMS_VALUE[8]");
if($lifetime!="0" && $lifetime!=""){setcookie("AJUS-Forumeintrag","ja",time()+ ($lifetime*24*3600));}
/* end if no cookie-lifetime given */
if($HTTP_COOKIE_VARS["AJUS-Forumeintrag"]=="ja" && $sperre ==1){
echo "<br><p><font class=textbold><b>Sie haben sich bereits eingetragen !<br>";
if ($lifetime == 1){echo "Sie können sich Morgen erneut eintragen.";}
else {echo "Sie können sich in CMS_VALUE[8] Tagen erneut eintragen.</b></p>";}
} // end if
else {
$urlguest = str_replace("http://","",$urlguest);
$sql = "INSERT INTO ".$cfg["tab"]["guestbook"]." ".
"(name,email,location,url,date,comments,active,client) ".
"VALUES ('$name','$email','$ip/$host','$urlguest',NOW(),'$comments','$activ',$client)";
$db->query($sql);
if("CMS_VALUE[3]" == 1 && "CMS_VALUE[4]" != "") {
$mailbody = "Von: $name ( $email )\nHomepage: $urlguest\n\nKommentar:\n$mailkomm\n\n http://".getenv("HTTP_HOST")."$meineseite";
mail("CMS_VALUE[4]", "neuer Gaestebuch-Eintrag", $mailbody, "From: Gaestebuch<CMS_VALUE[4]>\nX-Mailer: PHP/" . phpversion(). "\n");
};
echo "<br><p class=text><b>Danke, Ihr Beitrag wurde eingetragen.</b></p><br>";
} // end else
} // end "if no error was found while filtering"
/* errors were found in given data */
else {
$comments = str_replace("<br>","\n",$comments);
echo "
<br><br><br><font color=\"red\"><b><u>Fehler</u><br>".$error."</b></font><br><br>
<form action=\"$link\" method=\"post\">
<input type=\"hidden\" name=\"name\" value=\"$name\">
<input type=\"hidden\" name=\"email\" value=\"$email\">
<input type=\"hidden\" name=\"urlguest\" value=\"$urlguest\">
<input type=\"hidden\" name=\"comments\" value=\"$comments\">
<input type=\"submit\" value=\"« zurück\">
</form>
<br><br><br>";}
// end "errors were found in given data"
} // end "Abfangen von leeren Einträgen
else {
$comments = str_replace("<br>","\n",$comments);
echo "
<br><p><font class=\"text\"><b>Bitte überprüfen Sie ihre Eingaben!</b></p><br><br>
";
echo"
<form action=\"$link\" method=\"post\">
<input type=\"hidden\" name=\"name\" value=\"$name\">
<input type=\"hidden\" name=\"email\" value=\"$email\">
<input type=\"hidden\" name=\"urlguest\" value=\"$urlguest\">
<input type=\"hidden\" name=\"comments\" value=\"$comments\">
<input type=\"submit\" class=\"feld\" value=\"« zurück\">
</form>
";
} // end else
} // end if($a == "send")
?>