Ist ja schön viel los hier ^^.
Glaube hab BBCode 2.0 drauf.
Meine gbook.htm
<table width="100%">
<tr>
<td width="50%" align="right">
{EINTRAGE} {_lang_entries}
</td>
<td width="50%" align="center">
<a href="index.php?gbook-1">{_lang_insert}</a>
</td>
</tr>
</table>
<br>
{EXPLODE}
<table width="100%" cellpadding="4" cellspacing="0" border="0" class="rand">
<tr class="Cmite">
<td width="30%"><b>{NAME}</b></td>
<td width="20%">{MAIL}{PAGE}</td>
<td width="20%">{IP}</td>
<td width="30%" align="right">{DATE}</td>
</tr>
<tr class="Cnorm">
<td colspan="4">{TEXT}</td>
</tr>
</table>
{koms}
<br />
<br />
{EXPLODE}
<br />
<br />
<div align="center">{SITELINK}</div>
{EXPLODE}
<!-- G ä S T E B U C H E N T E R F O R M U L A R -->
<script language="JavaScript" type="text/javascript">
<!--
var ErlaubteAnzahl={TXTL};
function checkg ( ) {
if ( document.form.txt.value.length > ErlaubteAnzahl ) {
alert('Du hast mehr als ' + ErlaubteAnzahl + ' Zeichen verwendet');
return false;
} else {
var fehler = '';
if ( document.form.txt.value.length == 0 ) {
fehler += 'Bitte einen Text eingeben';
}
if ( document.form.name.value.length == 0 ) {
if ( fehler != '' ) {
fehler += "\n";
}
fehler += 'Bitte einen Namen eingeben';
}
if ( fehler != '' ) {
alert ( fehler );
return false;
} else {
return true;
}
}
}
function RestlicheZeichenErmitteln(d)
{
Laenge=document.form.txt.value.length;
if(Laenge>ErlaubteAnzahl)
{
document.form.txt.value=document.form.txt.value.substring(0,ErlaubteAnzahl);
RestlicheZeichen=0;
}
else
{
RestlicheZeichen=ErlaubteAnzahl-Laenge;
}
document.form.Laenge.value=RestlicheZeichen;
}
//-->
</script>
<script type='text/javascript' src='include/includes/js/bbcode.js'></script>
<form action="index.php?gbook-2" onsubmit="return checkg()" method="POST" name="form">
<table width="100%" class="border" cellspacing="1" border="0" cellpadding="5">
<tr>
<td class="Chead" colspan="2"><b>{_lang_insert}</b></td>
</tr><tr>
<td class="Cmite" width="100"><b>{_lang_name}</b></td>
<td class="Cnorm"><input type="text" value="{uname}" tabindex="1" name="name"></td>
</tr><tr>
<td class="Cmite"><b>{_lang_mail}</b> *</td>
<td class="Cnorm"><input type="text" name="mail" tabindex="2"></td>
</tr><tr>
<td class="Cmite"><b>{_lang_homepage}</b> *</td>
<td class="Cnorm"><input type="text" name="page" tabindex="3"></td>
</tr><tr>
<td class="Cmite" valign="top"><b>{_lang_message}</b><br><br>{SMILIES}</td>
<td class="Cnorm">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="100%">
<!-- BB Code START -->
{__BBCodeButtons__}
<!-- BB Code START -->
</td>
</tr><tr class="Cnorm">
<td width="100%"><textarea style="width: 98%" onblur="RestlicheZeichenErmitteln(this);" onchange="RestlicheZeichenErmitteln(this);" onfocus="RestlicheZeichenErmitteln(this);" onkeydown="RestlicheZeichenErmitteln(this);" onkeyup="RestlicheZeichenErmitteln(this);" cols="50" rows="10" tabindex="4" name="txt"></textarea><br />Noch <input size="3" name="Laenge" value="{TXTL}"> {_lang_signs}</td>
</tr>
</table></td>
</tr>{ANTISPAM}<tr class="Cdark">
<td></td><td><input type="submit" value="{_lang_formsub}" tabindex="5" accesskey="s"></td>
</tr></table></form>
{EXPLODE}
<table width="100%" cellpadding="4" cellspacing="0" border="0" class="rand">
<tr class="Cmite">
<td width="40%"><b>{name}</b></td>
<td width="20%">{mail}{page}</td>
<td width="30%" align="right">{datum}</td>
</tr>
<tr class="Cnorm">
<td colspan="3">{text}</td>
</tr>
</table>
<br />
<table width="100%" cellpadding="4" cellspacing="0" border="0" class="rand">
<tr class="Cnorm">
<td>
<form action="index.php?gbook-show-{id}" method="POST">
<fieldset>
<legend>{_lang_writecomment}</legend>
<input type="text" name="name" value="{uname}" /> {ANTISPAM} <input type="submit" value="{_lang_enter}"><br />
<textarea style="width: 98%" cols="50" rows="2" name="text"></textarea><br />
</fieldset>
</form>
<br />
{EXPLODE}
<span class="Cmite"># <b>{zahl}</b> von {name}</span>
<br />{text}<br /><br />
{EXPLODE}
</td>
</tr>
</table>
gbook.php
<?php
# Copyright by: Manuel
# Support: www.ilch.de
defined ('main') or die ( 'no direct access' );
$title = $allgAr['title'].' :: Gästebuch';
$hmenu = 'Gästebuch';
$design = new design ( $title , $hmenu );
$design->header();
# time sperre in sekunden
$timeSperre = $allgAr['Gsperre'];
/*
gbook
id , name , mail , page , ip , time , txt
*/
switch($menu->get(1)) {
case 1 :
$tpl = new tpl ( 'gbook.htm' );
$ar = array (
'uname' => $_SESSION['authname'],
'SMILIES' => getsmilies(),
'ANTISPAM' => get_antispam ('gbook', 1),
'TXTL' => $allgAr['Gtxtl']
);
$tpl->set_ar_out($ar,3);
if (!isset($_SESSION['klicktime_gbook'])) { $_SESSION['klicktime_gbook'] = 0; }
break;
case 2 :
$dppk_time = time();
if (($_SESSION['klicktime_gbook'] + $timeSperre) < $dppk_time
AND isset($_POST['name'])
AND isset($_POST['txt'])
AND trim($_POST['name']) != ""
AND trim($_POST['txt']) != ""
AND chk_antispam ('gbook' )
AND strlen ($_POST['txt']) <= $allgAr['Gtxtl'] ) {
$txt = escape($_POST['txt'], 'textarea');
$name = escape($_POST['name'], 'string');
$mail = escape($_POST['mail'], 'string');
$page = escape($_POST['page'], 'string');
db_query("INSERT INTO prefix_gbook VALUES (
null,
'".$name."',
'".$mail."',
'".$page."',
'".time()."',
'".getip()."',
'".$txt."'
)
");
$_SESSION['klicktime_gbook'] = $dppk_time;
wd('index.php?gbook',$lang['insertsuccessful']);
} else {
echo '- '.$lang['donotpostsofast'];
echo '<br />- '.sprintf($lang['gbooktexttolong'], $allgAr['Gtxtl']);
echo '<br />- '.$lang['plsfilloutallfields'];
}
break;
case 'show' :
if ($allgAr['gbook_koms_for_inserts'] == 1) {
$id = escape($menu->get(2), 'integer');
if (chk_antispam('gbookkom') AND isset($_POST['name']) AND isset($_POST['text'])) {
$name = escape($_POST['name'], 'string');
$text = escape($_POST['text'], 'string');
db_query("INSERT INTO prefix_koms (name,text,uid,cat) VALUES ('".$name."', '".$text."', ".$id.", 'GBOOK')");
}
if ($menu->getA(3) == 'd' AND is_numeric($menu->getE(3)) AND has_right(-7, 'gbook')) {
$did = escape($menu->getE(3), 'integer');
db_query("DELETE FROM prefix_koms WHERE uid = ".$id." AND cat = 'GBOOK' AND id = ".$did);
}
$r = db_fetch_assoc(db_query("SELECT time, name, mail, page, txt as text, id FROM prefix_gbook WHERE id = ".$id));
$r['datum'] = date('d.m.Y', $r['time']);
if ($r['page'] != '') {
$r['page'] = get_homepage($r['page']);
$r['page'] = ' <a href="'.$r['page'].'" target="_blank"><img src="include/images/icons/page.gif" border="0" alt="Homepage '.$lang['from'].' '.$r['name'].'"></a>';
}
if ($r['mail'] != '') {
$r['mail'] = ' <a href="mailto:'.escape_email_to_show($r['mail']).'"><img src="include/images/icons/mail.gif" border="0" alt="E-Mail '.$lang['from'].' '.$r['name'].'"></a>';
}
$tpl = new tpl ( 'gbook.htm' );
$r['ANTISPAM'] = get_antispam('gbookkom', 0);
$r['uname'] = $_SESSION['authname'];
$r['text'] = bbcode($r['text']);
$tpl->set_ar_out($r, 4);
$i = 1;
$erg = db_query("SELECT id, name, text FROM prefix_koms WHERE uid = ".$id." AND cat = 'GBOOK' ORDER BY id DESC");
$anz = db_num_rows($erg)+1;
while ($r1 = db_fetch_assoc($erg)) {
$r1['zahl'] = $anz - $i;
$r1['text'] = bbcode($r1['text']);
if (has_right(-7, 'gbook')) { $r1['text'] .= '<a href="index.php?gbook-show-'.$id.'-d'.$r1['id'].'"><img src="include/images/icons/del.gif" alt="'.$lang['delete'].'" border="0" title="'.$lang['delete'].'" /></a>'; }
$tpl->set_ar_out($r1, 5);
$i++;
}
$tpl->out(6);
}
break;
default :
$limit = $allgAr['gbook_posts_per_site']; // Limit
$page = ( $menu->getA(1) == 'p' ? escape($menu->getE(1), 'integer') : 1 );
$MPL = db_make_sites ($page , "" , $limit , "?gbook" , 'gbook' );
$anfang = ($page - 1) * $limit;
$tpl = new tpl ( 'gbook.htm' );
$ei1 = @db_query("SELECT COUNT(ID) FROM prefix_gbook");
$ein = @db_result($ei1,0);
$ar = array ('EINTRAGE' => $ein );
$tpl->set_ar_out($ar,0);
$erg = db_query("SELECT * FROM prefix_gbook ORDER BY time DESC LIMIT ".$anfang.",".$limit) or die (db_error());
while ($row = db_fetch_object($erg)) {
$page = '';
$mail = '';
if ($row->page) {
$row->page = get_homepage($row->page);
$page = ' <a href="'.$row->page.'" target="_blank"><img src="include/images/icons/page.gif" border="0" alt="Homepage '.$lang['from'].' '.$row->name.'"></a>';
}
if ($row->mail) {
$mail = ' <a href="mailto:'.escape_email_to_show($row->mail).'"><img src="include/images/icons/mail.gif" border="0" alt="E-Mail '.$lang['from'].' '.$row->name.'"></a>';
}
$koms = '';
if ($allgAr['gbook_koms_for_inserts'] == 1) {
$koms = db_result(db_query("SELECT COUNT(*) FROM prefix_koms WHERE uid = ".$row->id." AND cat = 'GBOOK'"),0,0);
$koms = '<a href="index.php?gbook-show-'.$row->id.'">'.$koms.' '.$lang['comments'].'</a>';
}
if(is_admin() and !empty($row->ip)) //oder halt has_right(recht) :-)
{
$IP = $row->ip;
}
elseif(!empty($row->ip))
{
$IP = "IP: gespeichert!";
}
else
{
$IP = "IP: nicht vorhanden!";
}
$ar = array ( 'NAME' => $row->name,
'DATE' => date("d.m.Y",$row->time),
'koms' => $koms,
'MAIL' => $mail,
'ID' => $row->id,
'IP' => $IP,
'PAGE' => $page,
'TEXT' => BBCode($row->txt)
);
$tpl->set_ar_out($ar,1);
}
$tpl->set_out('SITELINK', $MPL, 2 );
break;
}
//-----------------------------------------------------------|
$design->footer();
?>
Hab noch vorsichtshalber etwas dazugemacht, für den Fall, dass keine Ip vorhanden ist ;-)