Location: PHPKode > projects > PHP Guestbook > guestbook.php
<?php
// #######################
// ### Guestbook 2.8.5 ###
// #######################

/* *** LIZENZVERTRAG ***

Pflichten und Einschränkungen
-----------------------------

Der Copyright-Vermerk und der Link zu "http://www.gaijin.at/" dürfen nicht
entfernt, verändert oder unkenntlicht gemacht werden und müssen gut sichtbar an
unveränderter Position angezeigt werden.

Der Quellcode des Scripts darf nicht verkauft, oder sonst, kostenlos oder gegen
ein Entgelt weitergegeben, oder in irgendeiner Weise veröffentlicht werden.
Dies gilt speziell für die Veröffentlichung im Internet, auf sog. Heft-CDs oder
anderen Software-Sammlungen.


Benutzungsrechte
----------------

Das Script darf kostenlos für private Zwecke genutzt werden. Die Verwendung des
Scripts auf kommerziellen Seiten oder die kommerzielle Verwendung des Scripts
(z.B. durch Webdesigner) ist verboten.

Alle anderen Rechte, einschließlich des Veröffentlichungsrechts, bleiben beim
Autor.

Es besteht kein Recht auf Support oder sonstige Hilfestellung durch den Autor.

Das Script kann an die persönlichen Erfordernisse angepasst werden. Der
Copyright-Vermerk und der Link zu "http://www.gaijin.at/" müssen in der unter
"Pflichten und Einschränkungen" angegebenen Form erhalten bleiben.

Zuwiderhandlungen gegen Bestimmungen dieses Lizenzvertrages können
strafrechtlich und zivilrechtlich verfolgt werden.


Haftungsausschluss
------------------

Die Verwendung des Scripts erfolgt auf eigene Verantwortung. Der Autor
übernimmt keine Haftung für die Richtigkeit und Funktionsfähigkeit des Scripts.
Der Autor haftet weder für direkte, noch für indirekte Schäden, die durch das
Script entstanden sind. Dies umfasst vor allem, aber nicht ausschließlich,
Schäden an der Hardware, am Betriebssystem oder an anderen Programmen, sowie
die Beeinträchtigung des Geschäftsbetriebes.


Ausnahmen
---------

Die Erteilung einer Ausnahme von den Bestimmungen dieses Lizenzvertrages
erfordert eine ausdrückliche Genehmigung des Autors, die ggf. per E-Mail
erteilt wird.

Wenn Sie Fragen zur Lizenz haben, oder eine Ausnahmegenhemigung wünschen,
senden Sie bitte eine E-Mail an: <hide@address.com>.


Professional Version
--------------------

Einige Funktionen dieses Programms stehen nur in der Professional-Version zur
Verfügung (nur für ausgewählte Übersetzer und sonstige Personen, die das Script
auf andere Weise unterstützt haben). Für eventuelle Fragen wenden Sie sich
bitte an <hide@address.com>.

Features der Professional Version:
  o) Beim Posten kann eine Captcha-Grafik angezeigt oder eine Rechenaufgabe
     gestellt werden, um Spam zu vermeiden.
  o) Postings welche bestimmte Wörter enthalten, können verweigert werden,
     indem Filter (einfacher Textausdrücke oder reguläre Ausdrücke) definiert
     werden können.
  o) Der Administrator/Betreiber kann bei neuen Posts per E-Mail benachrichtigt
     werden.
  o) Vor der Veröffentlichung von Gästebucheinträgen kann der Administrator
     diese Überprüfen und anschließend für die Veröffentlichung im Gästebuch
     freigeben oder löschen.

*/

define('INTERN_CALL', '1');

// *********************
// *** Einstellungen ***
// *********************

// Formelle Anrede (nur bei deutscher Sprachdatei relevant)
$FormalText = false;

// Sprache / Language
include_once('language/german.php');
//include_once('language/english.php');

// Titel des Gästebuches, z.B.: $GuestbookTitle = 'Mein Gästebuch';
$GuestbookTitle = GetLngStr('DefaultGuestbookName');

// Style des Gästebuches ("default" entspricht "default.css").
// (Die Stylesheet-Datei sollte an die eigene Seite angepasst werden.)
$GuestbookStyle = 'default';

// Relativer Pfad zu der Datei, in der die Daten gespeichert werden.
// Sie sollten den Dateinamen (zumindest nach "guestbook_" ändern, damit auf
// diese Datei nicht von anderen Webseiten oder manuell zugegriffen werden kann.
$DataFile = 'guestbook_d4t4f1l3.dat';

// Relativer Pfad zum Verzeichnis, in dem sich die Bilder (space1.gif) befinden.
$ImagesPath = 'images/';

// Relativer Pfad zum Verzeichnis, in dem sich die Smilies befinden.
// Ist kein Pfad angegeben, werden keine Smilies angezeigt. 
$SmiliesPath = $ImagesPath.'smilies/';

// Captcha-Grafik (Sicherheitscode) benutzen?
$UseCaptcha = (extension_loaded('gd') && (function_exists('imagegif') || function_exists('imagepng') || function_exists('imagejpeg'))); 

// Cookies zum Übertragen der Session-ID verwenden
$UseSessionCookies = false;

// Anzahl der Beiträge pro Seite.
$PostsPerSite = 10;

// Angabe des Wohnortes erlauben
$AllowPostCity = true;

// Angabe der Mail-Adresse erlauben
$AllowPostEMail = true;

// Angabe der Homepage erlauben
$AllowPostHomepage = true;

// Administration
$DisableAuth = false;
$AdminLogin = 'admin';     // BITTE ÄNDERN!
$AdminPasswd = 'password'; // BITTE ÄNDERN!

// Zeigt den Link zur Anmeldung als Administrator an.
$ShowAdminLink = true;

// ############################################################################

if ($UseCaptcha || $UseCalculation) session_start();

$ParamCode = GetParam('p_code', 'P');
$CaptchaResult = GetParam('captcha_result', 'Z');
$ParamSDT = GetParam('p_sdt', 'P');

if ($UseCaptcha || $UseCalculation) {
  $CodeValid = 0;
  if (($ParamCode != '') && ($CaptchaResult != '')) {
    if (md5(strtoupper($ParamCode)) == $CaptchaResult) {
			$dt = DecodeDateTime($ParamSDT);
			if ( ($dt >= (time() - 3600)) && ($dt <= time()) ) {
				$CodeValid = 1;
			} else {
			  $CodeValid = -1;
			}
    } else {
      $CodeValid = -1;
    }
  }
}

$action = substr(GetParam('g_action', 'G'), 0, 10);
$entry = substr(GetParam('g_entry', 'G'), 0, 14);
$first = intval(substr(GetParam('g_first', 'G'), 0, 5));

$send = GetParam('p_send', 'P');
$gb_name = GetParam('p_gb_name', 'P');
$gb_mail = GetParam('p_gb_mail', 'P');
$gb_home = GetParam('p_gb_home', 'P');
$gb_text = GetParam('p_gb_text', 'P');
$gb_city = GetParam('p_gb_city', 'P');

$AdminLoggedIn = ( (GetParam('PHP_AUTH_USER', 'S') == $AdminLogin) && (GetParam('PHP_AUTH_PW', 'S') == $AdminPasswd) );

if ($action == 'login') {
  if (!$DisableAuth)
    AuthUser($AdminLoggedIn);
} else if ( ($action == 'del') && GetParam('p_admindeletesend', 'P') && ($DisableAuth || $AdminLoggedIn) ) {
  $delete_post = GetParam('p_delete_post', 'P', array());
  DelPosting($DataFile, $delete_post);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><?php echo htmlspecialchars($GuestbookTitle); ?></title>

<meta name="title" content="<?php echo htmlspecialchars($GuestbookTitle); ?>">
<meta name="description" content="<?php echo htmlspecialchars($GuestbookTitle); ?>">
<meta name="keywords" content="G&auml;stebuch, Guestbook">
<meta name="author" content="http://www.gaijin.at/">
<meta http-equiv="content-language" content="de-at">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<link rel="stylesheet" href="<?php echo $GuestbookStyle; ?>.css" type="text/css">

<script language="javascript" type="text/javascript">
function InsertMailGB(mailnam,mailsvr) {
  document.write('<' + 'a href="mailto:' + mailnam + '@' + mailsvr + '">' + mailnam + '@' + mailsvr + '</' + 'a>');
}
function add_smilie(sn) {
  document.guestbook.p_gb_text.value = document.guestbook.p_gb_text.value + sn;
}
</script>

</head>
<body>

<!-- ########################### -->
<!-- ### Insert header here #### -->
<!-- ########################### -->


<table border="0" cellspacing="0" cellpadding="0" width="620"><tr><td>

<?php

// ******************************
// *** Neuer Gästebucheintrag ***
// ******************************

$err_text = '';

if ($action == 'post') {
  if (strlen($gb_text) > 1000) {
    $gb_text = substr($gb_text, 0, 1000).GetLngStr('TextCutMark');
  }
  $gb_name = str_replace(chr(34), "''", $gb_name);
  $gb_name = stripslashes($gb_name);
  $gb_mail = strtolower(stripslashes($gb_mail));
  $gb_home = strtolower(stripslashes($gb_home));
  $gb_text = stripslashes(trim($gb_text));
  $gb_city = stripslashes(trim($gb_city));

  if(trim($gb_name == '')) $err_text .= GetLngStr('PostErrNoName')."<br>\n";
  if(trim($gb_mail != '')) {
    if (!preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/i', $gb_mail))
      $err_text .= GetLngStr('PostErrInvalidMailAddr')."<br>\n";
  }
  if(trim($gb_home != '') && trim($gb_home != 'http://')) {
    if((!preg_match("/^http:\/\/(.{3,})\.(.{2,})/i", $gb_home)) || (preg_match("/\?/", $gb_home)))
      $err_text .= GetLngStr('PostErrInvalidUrl')."<br>\n";
  }
  
  if (trim($gb_text == '')) $err_text .= GetLngStr('PostErrNoText')."<br>\n";
    
  if ($UseCaptcha) {
    if ($CodeValid == 0) $err_text .= GetLngStr('PostErrNoCode')."<br>\n";
    if ($CodeValid == -1) $err_text .= GetLngStr('PostErrWrongCode')."<br>\n";
  }
}

if ( ($action == 'new') or trim($err_text != '') ) {

echo '<h1>'.$GuestbookTitle.'</h1>'."\n";
echo '<h2>'.GetLngStr('PostAddNewTitle').'</h2>'."\n";

if(($send=='1') && trim($err_text!='')) {
  echo '<div class="errorbox"><b class="red">'.GetLngStr('PostError').'</b><br>';
  echo $err_text."</div>\n";
}
if(trim($gb_home=='') && (!$gb_home)) $gb_home='http://';
?>

<div class="formbox">
<form action="<?php echo GetParam('PHP_SELF', 'S'); ?>?g_action=post" method="post" name="guestbook">

<?php
  $gb_name = str_replace('<', '&lt;', $gb_name);
  $gb_name = str_replace('>', '&gt;', $gb_name);
  $gb_name = str_replace('"', '&quot;', $gb_name);
  
  $gb_home = preg_replace('/(<|>| |\(|\)|\||"|\')/', '', $gb_home);
  
  $gb_text = str_replace('<', '&lt;', $gb_text);
  $gb_text = str_replace('>', '&gt;', $gb_text);
  $gb_text = str_replace('"', '&quot;', $gb_text);
  
  $gb_city = str_replace('<', '&lt;', $gb_city);
  $gb_city = str_replace('>', '&gt;', $gb_city);
  $gb_city = str_replace('"', '&quot;', $gb_city);
?>

<table border=0 cellspacing=2 cellpadding=0 width="100%"><tr>
<td valign="top">

<table border=0 cellspacing=2 cellpadding=0 width="100%">
<tr><td nowrap align="right" class="formtext"><span class=red><b>*</b></span> <?php echo GetLngStr("PostFormName"); ?></td><td nowrap align=right>&nbsp;</td>
<td width="100%"><input type="text" name="p_gb_name" size=50 maxlength=25 value="<?php echo $gb_name; ?>"></td></tr>
<?php
if ($AllowPostCity) {
	echo '<tr><td nowrap align="right" class="formtext">' . GetLngStr("PostFormCity") . '</td><td>&nbsp;</td>';
	echo '<td width="100%"><input type="text" name="p_gb_city" size=55 maxlength=50 value="' . $gb_city . '"></td></tr>';
}
if ($AllowPostEMail) {
	echo '<tr><td nowrap align="right" class="formtext">' . GetLngStr("PostFormMail") . '</td><td>&nbsp;</td>';
	echo '<td width="100%"><input type="text" name="p_gb_mail" size=55 maxlength=50 value="' . $gb_mail . '"></td></tr>';
}
if ($AllowPostHomepage) {
	echo '<tr><td nowrap align="right" class="formtext">' . GetLngStr("PostFormHome") . '</td><td>&nbsp;</td>';
	echo '<td width="100%"><input type="text" name="p_gb_home" size=55 maxlength=65 value="' . $gb_home . '"></td></tr>';
}
?>
<tr><td nowrap align="right" class="formtext" style="vertical-align:top;"><span class=red><b>*</b></span> <?php echo GetLngStr("PostFormText"); ?><br><i><?php echo GetLngStr("PostFormTextMax"); ?></i></td><td></td>
<td width="100%"><textarea cols="50" rows="8" name="p_gb_text"><?php echo $gb_text; ?></textarea></td></tr>

<?php
if ($UseCaptcha) {
  echo '<tr><td nowrap align=right class="formtext">'.GetLngStr('PostFormCode').'</td><td>&nbsp;</td>'."\n";
  echo '<td width="100%">'.CaptchaImageString().'</td></tr>'."\n";
  echo '<tr><td nowrap align=right class="formtext"><span class=red><b>*</b></span> '.GetLngStr('PostFormCodeQuery').'</td><td>&nbsp;</td>'."\n";
  echo '<td width="100%"><input type=text size=3 maxlength=3 name="p_code" value=""></td></tr>'."\n";
  echo '<tr><td nowrap align=right class="formtext">&nbsp;</td><td>&nbsp;</td>'."\n";
  echo '<td width="100%" class="formtext">'.GetLngStr('PostFormCodeQueryInfo').'</td></tr>'."\n";
}
?>

<tr><td class="formtext" nowrap><span class=red><b>*</b><i><?php echo GetLngStr("PostFormObligateFields"); ?></i></span></td><td></td><td>
<input type="hidden" name="p_send" value="1">
<input type="hidden" name="p_sdt" value="<?php echo EncodeDateTime(); ?>">
<?php
if (!$UseSessionCookies) {
	echo '<input type="hidden" name="PHPSESSID" value="'.htmlspecialchars(session_id()).'">';
}
?>
<input type="submit" value="<?php echo GetLngStr('PostFormSubmit'); ?>" name="submit">
<input type="reset" value="<?php echo GetLngStr('PostFormReset'); ?>" name="reset">
</td></tr>
</table>

</td><td>&nbsp;&nbsp;</td><td width="100%" valign=top>

<?php
if($SmiliesPath) {
?>
<b><?php echo GetLngStr("PostFormSmilies"); ?></b><br>
<img src="<?php echo $ImagesPath; ?>space1.gif" width="1" height="3" alt="" border="0"><br>
<a href="javascript:add_smilie(':_smile_:');"><img src="<?php echo $SmiliesPath; ?>smile.gif" border=0 alt=":_smile_:"></a>&nbsp;
<a href="javascript:add_smilie(':_wink_:');"><img src="<?php echo $SmiliesPath; ?>wink.gif" border=0 alt=":_wink_:"></a>&nbsp;
<a href="javascript:add_smilie(':_happy_:');"><img src="<?php echo $SmiliesPath; ?>happy.gif" border=0 alt=":_happy_:"></a>&nbsp;
<a href="javascript:add_smilie(':_sad_:');"><img src="<?php echo $SmiliesPath; ?>sad.gif" border=0 alt=":_sad_:"></a>&nbsp;
<a href="javascript:add_smilie(':_puh_:');"><img src="<?php echo $SmiliesPath; ?>puh.gif" border=0 alt=":_puh_:"></a>&nbsp;
<a href="javascript:add_smilie(':_yummie_:');"><img src="<?php echo $SmiliesPath; ?>yummie.gif" border=0 alt=":_yummie_:"></a>&nbsp;
<a href="javascript:add_smilie(':_coool_:');"><img src="<?php echo $SmiliesPath; ?>coool.gif" border=0 alt=":_coool_:"></a><br>
<a href="javascript:add_smilie(':_pukey_:');"><img src="<?php echo $SmiliesPath; ?>pukey.gif" border=0 alt=":_pukey_:"></a>&nbsp;
<a href="javascript:add_smilie(':_devil_:');"><img src="<?php echo $SmiliesPath; ?>devil.gif" border=0 alt=">:->"></a>&nbsp;
<a href="javascript:add_smilie(':_frown_:');"><img src="<?php echo $SmiliesPath; ?>frown.gif" border=0 alt=":_frown_:"></a>&nbsp;
<a href="javascript:add_smilie(':_redface_:');"><img src="<?php echo $SmiliesPath; ?>redface.gif" border=0 alt=":_redface_:"></a>&nbsp;
<a href="javascript:add_smilie(':_clown_:');"><img src="<?php echo $SmiliesPath; ?>clown.gif" border=0 alt=":_clown_:"></a>&nbsp;
<a href="javascript:add_smilie(':_cry_:');"><img src="<?php echo $SmiliesPath; ?>cry.gif" border=0 alt=":_cry_:"></a>&nbsp;
<a href="javascript:add_smilie(':_idea_:');"><img src="<?php echo $SmiliesPath; ?>idea.gif" border=0 alt=":_idea_:"></a><br>
<a href="javascript:add_smilie(':_cwink_:');"><img src="<?php echo $SmiliesPath; ?>cwink.gif" border=0 alt=":_cwink_:"></a>&nbsp;
<a href="javascript:add_smilie(':_grrr_:');"><img src="<?php echo $SmiliesPath; ?>grrr.gif" border=0 alt=":_grrr_:"></a>&nbsp;
<a href="javascript:add_smilie(':_ill_:');"><img src="<?php echo $SmiliesPath; ?>ill.gif" border=0 alt=":_ill_:"></a>&nbsp;
<a href="javascript:add_smilie(':_tooth_:');"><img src="<?php echo $SmiliesPath; ?>tooth.gif" border=0 alt=":_tooth_:"></a>&nbsp;
<a href="javascript:add_smilie(':_psycho_:');"><img src="<?php echo $SmiliesPath; ?>psycho.gif" border=0 alt=":_psycho_:"></a>&nbsp;
<a href="javascript:add_smilie(':_monster_:');"><img src="<?php echo $SmiliesPath; ?>monster.gif" border=0 alt=":_monster_:"></a>&nbsp;
<a href="javascript:add_smilie(':_halt_:');"><img src="<?php echo $SmiliesPath; ?>halt.gif" border=0 alt=":_halt_:"></a><br>
<a href="javascript:add_smilie(':_glass_:');"><img src="<?php echo $SmiliesPath; ?>glass.gif" border=0 alt=":_glass_:"></a>&nbsp;
<a href="javascript:add_smilie(':_seek_:');"><img src="<?php echo $SmiliesPath; ?>seek.gif" border=0 alt=":_seek_:"></a>&nbsp;
<a href="javascript:add_smilie(':_super_:');"><img src="<?php echo $SmiliesPath; ?>super.gif" border=0 alt=":_super_:"></a>&nbsp;
<a href="javascript:add_smilie(':_help_:');"><img src="<?php echo $SmiliesPath; ?>help.gif" border=0 alt=":_help_:"></a>&nbsp;
<a href="javascript:add_smilie(':_boxer_:');"><img src="<?php echo $SmiliesPath; ?>boxer.gif" border=0 alt=":_boxer_:"></a><br>
<a href="javascript:add_smilie(':_dance_:');"><img src="<?php echo $SmiliesPath; ?>dance.gif" border=0 alt=":_dance_:"></a>&nbsp;
<a href="javascript:add_smilie(':_alcohol_:');"><img src="<?php echo $SmiliesPath; ?>alcohol.gif" border=0 alt=":_alcohol_:"></a><br>
<img src="<?php echo $ImagesPath; ?>space1.gif" width="1" height="10" alt="" border="0"><br>

<b><?php echo GetLngStr("PostFormEmoticons"); ?></b><br>
<img src="<?php echo $ImagesPath; ?>space1.gif" width="1" height="3" alt="" border="0"><br>
<a href="javascript:add_smilie('>:->');"><img src="<?php echo $SmiliesPath; ?>evilgrin.png" border=0 alt="Evil grin"></a>
<a href="javascript:add_smilie(':->');"><img src="<?php echo $SmiliesPath; ?>grin.png" border=0 alt="Grin"></a>
<a href="javascript:add_smilie(':-)))');"><img src="<?php echo $SmiliesPath; ?>happy.png" border=0 alt="Happy"></a>
<a href="javascript:add_smilie(':-)');"><img src="<?php echo $SmiliesPath; ?>smile.png" border=0 alt="Smile"></a>
<a href="javascript:add_smilie(':-O');"><img src="<?php echo $SmiliesPath; ?>surprised.png" border=0 alt="Surprised"></a>
<a href="javascript:add_smilie(':-P');"><img src="<?php echo $SmiliesPath; ?>tongue.png" border=0 alt="Tongue"></a>
<a href="javascript:add_smilie(':-(');"><img src="<?php echo $SmiliesPath; ?>unhappy.png" border=0 alt="Unhappy"></a>
<a href="javascript:add_smilie(';-)');"><img src="<?php echo $SmiliesPath; ?>wink.png" border=0 alt="Wink"></a><br>
<img src="<?php echo $ImagesPath; ?>space1.gif" width="1" height="10" alt="" border="0"><br>
<?php
}
?>

<b><?php echo GetLngStr("PostFormTags"); ?></b><br>
<table border=0 cellspacing=0 cellpadding=0>
<tr><td align="center" class="formtext"><b class="red">:b:</b></td><td align="center" class="formtext">&nbsp;<?php echo GetLngStr('PostFormTagAnd'); ?>&nbsp;</td><td align="center" class="formtext"><b class="red">:/b:</b></td><td class="formtext" nowrap>&nbsp;<?php echo GetLngStr('PostFormTagBold'); ?></tr>
<tr><td align="center" class="formtext"><b class="red">:i:</b></td><td align="center" class="formtext">&nbsp;<?php echo GetLngStr('PostFormTagAnd'); ?>&nbsp;</td><td align="center" class="formtext"><b class="red">:/i:</b></td><td class="formtext" nowrap>&nbsp;<?php echo GetLngStr('PostFormTagItalic'); ?></tr>
<tr><td align="center" class="formtext"><b class="red">:u:</b></td><td align="center" class="formtext">&nbsp;<?php echo GetLngStr('PostFormTagAnd'); ?>&nbsp;</td><td align="center" class="formtext"><b class="red">:/u:</b></td><td class="formtext" nowrap>&nbsp;<?php echo GetLngStr('PostFormTagUnderline'); ?></tr>
</table>

</td>
</tr></table>

</form>
</div>

<?php
echo '<center><span class="buttonborder"><a href="'.GetParam('PHP_SELF', 'S').'" class="button">'.GetLngStr('BackToGB').'</a></span></center>';
PrintPageBottom();
exit;
}

// **************************
// *** Gästebuch anzeigen ***
// **************************

echo '<h1>'.$GuestbookTitle.'</h1>'."\n";

// *** Wenn Posting "gesendet" wurde und kein Fehlertext ausgegeben wurde ***
if (($send == '1') && trim($err_text == '')) {
  $gb_date = date('YmdHis'); // Datum setzen
  $m_date = date('d.m.Y, H:i:s'); // Datum für E-Mail-Benachrichtigung
  $line = file($DataFile); // Daten in Array einlesen
  rsort($line);  // Array in umgekehrter Reihenfolgen sortieren

  $gb_name = str_replace('<', '&lt;', $gb_name);
  $gb_name = str_replace('>', '&gt;', $gb_name);
  $gb_name = str_replace('"', '&quot;', $gb_name);
  $gb_name = str_replace('~', '-', $gb_name);
  $gb_name = str_replace('  ', ' &nbsp;', $gb_name);
  $gb_name = strip_tags($gb_name, '<b><i><u><a><img>');
  
  $gb_home = preg_replace('/(<|>| |\(|\)|\||"|\')/', '', $gb_home);
  $gb_home = str_replace('~','-', $gb_home);
  $gb_home = urlencode($gb_home);
  if (trim($gb_home == 'http://')) $gb_home = '';
  
  $gb_text = str_replace('<', '&lt;', $gb_text);
  $gb_text = str_replace('>', '&gt;', $gb_text);
  $gb_text = str_replace('"', '&quot;', $gb_text);
  $gb_text = str_replace('~', '-', $gb_text);
  $gb_text = str_replace('  ', ' &nbsp;', $gb_text);
  $gb_text = str_replace("\r\n", "<br>", $gb_text);
  $gb_text = urlencode($gb_text);
  $gb_text = strip_tags($gb_text, '<b><i><u><a><img>');

  $gb_city = str_replace('<', '&lt;', $gb_city);
  $gb_city = str_replace('>', '&gt;', $gb_city);
  $gb_city = str_replace('"', '&quot;', $gb_city);
  $gb_city = str_replace('~', '-', $gb_city);
  $gb_city = str_replace('  ', ' &nbsp;', $gb_city);
  $gb_city = strip_tags($gb_city, '<b><i><u><a><img>');

  // *** Datei öffnen und mit neuem Eintrag überschreiben ***
  $fp = fopen($DataFile, 'w');
  flock($fp, 2);
  fputs($fp, "$gb_date|~#~|$gb_name|~#~|$gb_mail|~#~|$gb_home|~#~|$gb_text|~#~|$gb_city\r\n");
  
  // *** Alte Einträge anhängen ***
  for($i = 0; $i < count($line); $i++) {
    fputs($fp, $line[$i]);
  }
  flock($fp, 3);
  fclose($fp);
  
  echo '<p align="center" class="green"><big><b>'.GetLngStr('PostThankYou').'</b></big></p><br>';
  
  $gb_name = '';
  $gb_mail = '';
  $gb_home = '';
  $gb_text = '';
  $gb_city = '';
  $send = '';
  $err_text = '';
}

echo '<center><span class="buttonborder"><a href="'.GetParam('PHP_SELF', 'S').'?g_action=new" class="button">'.GetLngStr('PostAddNewEntry').'</a></span></center>';

$line = @file($DataFile);
if ($line) {
	// *** Startwert überprüfen und ggf. setzen ***
	if ($first < 0) $first = 0;
	if ($first > count($line) - 1) $first = count($line) - 1;
	// *** Anzahl der Postings/Seite überprüfen und ggf. setzen ***
	if ($PostsPerSite > count($line)) $PostsPerSite = count($line);

	// *** Postings nach Startwert und Anzahl/Seite anzeigen ***
	$c = $first + $PostsPerSite;
	if ($c > count($line)) $c = count($line);
	echo '<div class="itemsbox">';
	
	if ($DisableAuth || $AdminLoggedIn ) {
		echo '<form action="'.GetParam('PHP_SELF', 'S').'?g_action=del" method="post" name="admin">';
	}

	for($i = $first; $i < $c; $i++) {
		$p = explode('|~#~|', trim($line[$i]), 6);
		if((isset($p[0])) && ($i < count($line))) {
			if (!isset($p[5])) $p[5] = '';
			PrintPosting(count($line) - $i, $p[1], $p[2], $p[3], $p[0], $p[4], $p[5]);
			
  	  if ($DisableAuth || $AdminLoggedIn ) {
				echo '<table><tr>';
				echo '<td><input type="checkbox" name="p_delete_post[]" value="'.$p[0].'"></td><td class="admin">'.GetLngStr('AdminDelete').'</td>';
				echo '</tr></table>';
			}
			
			if ($i < $c - 1) PrintPostingSpace();
		}
	}
	
	if ($DisableAuth || $AdminLoggedIn ) {
		echo '<input type="hidden" name="p_admindeletesend" value="1">';
		echo '<p align="center"><input type="submit" name="submit" value="'.GetLngStr('AdminDeleteSend').'"></p>';
		echo '</form>';
	}

  echo "</div>\n";

  // Navigationslinks generieren
  $i = count($line) + $PostsPerSite;
  $j = $i;
  echo '<div class="pagenavbox"><span class="pagenumbertext">'.GetLngStr('ViewPostings').'</span> ';
  while ($j > 1) {
    // Startwert für Link
    $i -= $PostsPerSite;
    if ($i < 1) $i = 1;
    // Endwert für Link
    $j = $i - $PostsPerSite + 1;
    if ($j < 1) $j = 1;
    // Umgekehrte Reihenfolge der Postings
    $k = count($line) - $i;
    // Navigationslinks ausgeben
    echo '<span style="white-space:nowrap;">';
    if($first == $k) {
      echo '<span class="pagenumbercurrent">';
			if ($i != $j) echo $i.'-'.$j; else echo $i;
			echo '</span>';
    }else{
      echo '<a href="'.GetParam('PHP_SELF', 'S').'?g_first='.$k.'" class="pagenav">';
      if ($i != $j) echo $i.'-'.$j; else echo $i;
      echo "</a>";
    }
    if ($j > 1) echo ' <span class="pagenumberdelim">|</span>';
    echo '</span> ';
  }
  echo "</div>";

  echo '<center><span class="buttonborder"><a href="'.GetParam('PHP_SELF', 'S').'?g_action=new" class="button">'.GetLngStr('PostAddNewEntry').'</a></span></center>';

}

if (!($DisableAuth || $AdminLoggedIn) && $ShowAdminLink) {
  echo '<p align="center" class=admin>'.GetLngStr('AdminLinkTitle').' <b><a href="'.GetParam('PHP_SELF', 'S').'?g_action=login" class=admin>'.GetLngStr('AdminLink').'</a></b><p>';
}

PrintPageBottom();
exit;

// ############################################################################

function PrintPosting($PostNo, $PostName, $PostMail, $PostHome, $PostTime, $PostMsg, $PostCity) {
  global $ImagesPath, $SmiliesPath;
  
  $PostTime = substr($PostTime,6,2).'.'.substr($PostTime,4,2).'.'.substr($PostTime,0,4).', '.substr($PostTime,8,2).':'.substr($PostTime,10,2).':'.substr($PostTime,12,2);
  $PostHome = urldecode($PostHome);
  $PostMsg = urldecode($PostMsg);
  $PostMsg = stripslashes(trim($PostMsg));

  // Smilies ersetzen
  if ($SmiliesPath) {
    $PostMsg = preg_replace("/(\:\_)(.{1,8})(\_\:)/i", " <img src=\"".$SmiliesPath."\\2.gif\" border=\"\" alt=\"\\2\"> ", $PostMsg);
    $PostMsg = str_replace(":-)))", "<img src=\"".$SmiliesPath."happy.png\" border=\"\" alt=\"Happy\">", $PostMsg);
    $PostMsg = str_replace(":)))", "<img src=\"".$SmiliesPath."happy.png\" border=\"\" alt=\"Happy\">", $PostMsg);
    $PostMsg = str_replace(":-))", "<img src=\"".$SmiliesPath."grin.png\" border=\"\" alt=\"Grin\">", $PostMsg);
    $PostMsg = str_replace(":))", "<img src=\"".$SmiliesPath."grin.png\" border=\"\" alt=\"Grin\">", $PostMsg);
    $PostMsg = str_replace(":&gt;", "<img src=\"".$SmiliesPath."grin.png\" border=\"\" alt=\"Grin\">", $PostMsg);
    $PostMsg = str_replace(":-&gt;", "<img src=\"".$SmiliesPath."grin.png\" border=\"\" alt=\"Grin\">", $PostMsg);
    $PostMsg = str_replace(":-)", "<img src=\"".$SmiliesPath."smile.png\" border=\"\" alt=\"Smile\">", $PostMsg);
    $PostMsg = str_replace(":)", "<img src=\"".$SmiliesPath."smile.png\" border=\"\" alt=\"Smile\">", $PostMsg);
    $PostMsg = str_replace(";-)", "<img src=\"".$SmiliesPath."wink.png\" border=\"\" alt=\"Wink\">", $PostMsg);
    $PostMsg = str_replace(";)", "<img src=\"".$SmiliesPath."wink.png\" border=\"\" alt=\"Wink\">", $PostMsg);
    $PostMsg = str_replace(":-(", "<img src=\"".$SmiliesPath."unhappy.png\" border=\"\" alt=\"Unhappy\">", $PostMsg);
    $PostMsg = str_replace(":(", "<img src=\"".$SmiliesPath."unhappy.png\" border=\"\" alt=\"Unhappy\">", $PostMsg);
    $PostMsg = str_replace("&gt;:-&gt;", "<img src=\"".$SmiliesPath."evilgrin.png\" border=\"\" alt=\"Evil grin\">", $PostMsg);
    $PostMsg = str_replace("&gt;:&gt;", "<img src=\"".$SmiliesPath."evilgrin.png\" border=\"\" alt=\"Evil grin\">", $PostMsg);
    $PostMsg = str_replace(":-P", "<img src=\"".$SmiliesPath."tongue.png\" border=\"\" alt=\"Tongue\">", $PostMsg);
    $PostMsg = str_replace(":-p", "<img src=\"".$SmiliesPath."tongue.png\" border=\"\" alt=\"Tongue\">", $PostMsg);
    $PostMsg = str_replace(":P", "<img src=\"".$SmiliesPath."tongue.png\" border=\"\" alt=\"Tongue\">", $PostMsg);
    $PostMsg = str_replace(":p", "<img src=\"".$SmiliesPath."tongue.png\" border=\"\" alt=\"Tongue\">", $PostMsg);
    $PostMsg = str_replace(":-O", "<img src=\"".$SmiliesPath."surprised.png\" border=\"\" alt=\"Surprised\">", $PostMsg);
    $PostMsg = str_replace(":-o", "<img src=\"".$SmiliesPath."surprised.png\" border=\"\" alt=\"Surprised\">", $PostMsg);
    $PostMsg = str_replace(":O", "<img src=\"".$SmiliesPath."surprised.png\" border=\"\" alt=\"Surprised\">", $PostMsg);
    $PostMsg = str_replace(":o", "<img src=\"".$SmiliesPath."surprised.png\" border=\"\" alt=\"Surprised\">", $PostMsg);
  }
  // Tags ersetzen
  $PostMsg = preg_replace('/(:)(b|\/b)(:)/i', '<\\2>', $PostMsg);
  $PostMsg = preg_replace('/(:)(i|\/i)(:)/i', '<\\2>', $PostMsg);
  $PostMsg = preg_replace('/(:)(u|\/u)(:)/i', '<\\2>', $PostMsg);

  if ($PostMail != '') {
    $em = explode('@', $PostMail);
    $m = str_replace('@', ' [at] ', $PostMail);
    $m = str_replace('.', ' [dot] ', $m);
    $PostMail = 'mailto:'.$m;
  }

	if ($PostHome == 'http://') $PostHome = '';

	include('inc_item.php');
}

// ############################################################################

function PrintPostingSpace() {
  global $ImagesPath;
  // HTML-Code der zwischen den Postings ausgegeben wird
}

// ############################################################################

function PrintPageBottom() {
  global $ImagesPath;
  
  // Das Entfernen oder Unkenntlichmachen des Links zu www.gaijin.at ist ein
  // Verstoß gegen das Urheberrecht und die Lizenzbestimmungen.

  // Für weitere Fragen sowie für eine Genehmigung zum Entfernen des Links
  // wenden Sie sich bitte an <hide@address.com>

  echo '<p align="center"><b>Powered by <a href="http://www.gaijin.at/">Gaijin.at</a></b></p>'."\n";
  echo "</td></tr></table>\n";
  echo "\n</body>\n";
  echo "</html>\n";
}

// ############################################################################

function DelPosting($DataFile, $delete_post) {
  if (!file_exists($DataFile)) return 0;
	$linenew = array();
	$line = @file($DataFile);
	if ($line ) {
		$c = count($line );
		for($i = 0; $i < $c; $i++) {
			$p = explode('|~#~|', trim($line[$i]), 6);
			if((isset($p[0])) && ($i < count($line ))) {
				// Neue Daten zusammenstellen
				if (!in_array($p[0], $delete_post)) {
					array_push($linenew, $line[$i]);
				}
			}
		}
		// Neuen Inhalt der Datendatei schreiben
		$fp = fopen($DataFile, 'w');
		flock($fp, 2);
		for($i = 0; $i < count($linenew); $i++) {
			fputs($fp, $linenew[$i]);
		}
		flock($fp, 3);
		fclose($fp);
	}
	return 1;
}

// ############################################################################

function CaptchaImageString() {
	global $UseSessionCookies;
	
	if ($UseSessionCookies) {
		return '<img src="captchaimg.php" alt="Captcha">';
	} else {
		return '<img src="captchaimg.php?'.htmlspecialchars(SID).'" alt="Captcha">';
	}
}

// ############################################################################

function GetParam($ParamName, $Method = 'P', $DefaultValue = '') {
  if ($Method == 'P') {
    if (isset($_POST[$ParamName])) return $_POST[$ParamName]; else return $DefaultValue;
  } else if ($Method == 'G') {
    if (isset($_GET[$ParamName])) return $_GET[$ParamName]; else return $DefaultValue;
  } else if ($Method == 'S') {
    if (isset($_SERVER[$ParamName])) return $_SERVER[$ParamName]; else return $DefaultValue;
  } else if ($Method == 'Z') {
    if (isset($_SESSION[$ParamName])) return $_SESSION[$ParamName]; else return $DefaultValue;
  }
}

// ############################################################################

function EncodeDateTime() {
  $DateCodeChars = '6YpFuzh7c1LVfQIte8PvgUsnqX3SGmk4TAjM9wEJyWxBlZrNCKRoibHOa5dD2';
	$dtY = intval(date('Y')) - 2000;
	$dtM = intval(date('n'));
	$dtD = intval(date('j'));
	$dtH = intval(date('G'));
	$dtN = intval(date('i'));
	$dtS = intval(date('s'));
	return substr($DateCodeChars, $dtD, 1) . substr($DateCodeChars, $dtY, 1) .
				 substr($DateCodeChars, $dtM, 1) . substr($DateCodeChars, $dtN, 1) .
				 substr($DateCodeChars, $dtH, 1) . substr($DateCodeChars, $dtS, 1);
}

// ############################################################################

function DecodeDateTime($DateTimeCode) {
  $DateCodeChars = '6YpFuzh7c1LVfQIte8PvgUsnqX3SGmk4TAjM9wEJyWxBlZrNCKRoibHOa5dD2';
	$dtD = strpos($DateCodeChars, substr($DateTimeCode, 0, 1));
	$dtY = strpos($DateCodeChars, substr($DateTimeCode, 1, 1)) + 2000;
	$dtM = strpos($DateCodeChars, substr($DateTimeCode, 2, 1));
	$dtN = strpos($DateCodeChars, substr($DateTimeCode, 3, 1));
	$dtH = strpos($DateCodeChars, substr($DateTimeCode, 4, 1));
	$dtS = strpos($DateCodeChars, substr($DateTimeCode, 5, 1));
	return mktime($dtH, $dtN, $dtS, $dtM, $dtD, $dtY);
}

// ############################################################################

function AuthUser($bAdminLoggedIn) {
  if (!$bAdminLoggedIn) {
    header('WWW-Authenticate: Basic realm="Gaijin Guestbook - '.GetLngStr('AdminAuthTitle').'"');
    header('HTTP/1.0 401 Unauthorized');
    echo '<html><head></head><body>'.GetLngStr('AdminAuthText').'<br><br>';
    echo '<a href="'.GetParam('PHP_SELF', 'S').'">'.GetLngStr('BackToGB').'</a><br></body></html>';
    exit;
  }
}

// ############################################################################

function GetLngStr($sId, $sParams = '') {
	global $Lang;
    
	if (isset($Lang[$sId]))
		$sResult = $Lang[$sId];
	else
		$sResult = '{Missing string "'.$sId.'"}';

  $aParams = explode("\t", $sParams);
  for ($i = 0; $i < count($aParams); $i++) {
    $sResult = str_replace('%s'.($i + 1).'%', $aParams[$i], $sResult);
  }
  
  return $sResult; 
}

// ############################################################################

?>
Return current item: PHP Guestbook