0)
{
$start = ($page*10)-9;
$end = $start+9;
}
else
{
$page = 1;
$start = 1;
$end = 10;
}
$lines = file($settings['logfile']);
$total = count($lines);
if ($total > 0)
{
if ($end > $total)
{
$end = $total;
}
$pages = ceil($total/10);
$settings['number_of_entries'] = sprintf($lang['t01'],$total,$pages);
$settings['number_of_pages'] = ($pages > 1) ? sprintf($lang['t75'],$pages) : '';
if ($pages > 1)
{
$prev_page = ($page-1 <= 0) ? 0 : $page-1;
$next_page = ($page+1 > $pages) ? 0 : $page+1;
if ($prev_page)
{
$settings['pages_top'] .= ''.$lang['t02'].' ';
if ($prev_page != 1)
{
$settings['pages_top'] .= ''.$lang['t03'].' ';
}
}
for ($i=1; $i<=$pages; $i++)
{
if ($i <= ($page+5) && $i >= ($page-5))
{
if ($i == $page)
{
$settings['pages_top'] .= ' '.$i.' ';
}
else
{
$settings['pages_top'] .= ' '.$i.' ';
}
}
}
if ($next_page)
{
if ($next_page != $pages)
{
$settings['pages_top'] .= ' '.$lang['t04'].'';
}
$settings['pages_top'] .= ' '.$lang['t05'].'';
}
} // END If $pages > 1
} // END If $total > 0
printTopHTML();
if ($total == 0)
{
include($settings['tpl_path'].'no_comments.php');
}
else
{
printEntries($lines,$start,$end);
}
printDownHTML();
exit();
/***** START FUNCTIONS ******/
function approveEntry()
{
global $settings, $lang;
$approve = intval($_GET['do']);
$hash = gbook_input($_GET['id'],$lang['e24']);
$hash = preg_replace('/[^a-z0-9]/','',$hash);
$file = 'apptmp/'.$hash.'.txt';
/* Check if the file hash is correct */
if (!file_exists($file))
{
problem($lang['e25']);
}
/* Reject the link */
if (!$approve)
{
define('NOTICE',$lang['t87']);
}
else
{
$addline = file_get_contents($file);
$links = file_get_contents($settings['logfile']);
if ($links === false)
{
problem($lang['e18']);
}
$addline .= $links;
$fp = fopen($settings['logfile'],'wb') or problem($lang['e13']);
fputs($fp,$addline);
fclose($fp);
define('NOTICE',$lang['t86']);
}
/* Delete the temporary file */
unlink($file);
} // END approveEntry()
function showEmail()
{
global $settings, $lang;
$error_buffer = '';
$num = isset($_POST['num']) ? intval($_POST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
/* Check password */
if (empty($_POST['pass']))
{
$error_buffer .= $lang['e09'];
}
elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
{
$error_buffer .= $lang['e12'];
}
/* Any errors? */
if ($error_buffer)
{
confirmViewEmail($error_buffer);
}
/* All OK, show the IP address */
$lines = file($settings['logfile']);
$myline = explode("\t",$lines[$num]);
define('NOTICE', $lang['t65'].' '.$myline[2].'');
} // END showEmail
function confirmViewEmail($error='')
{
global $settings, $lang;
$num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
$task = $lang['t63'];
$task_description = $lang['t64'];
$action = 'showEmail';
$button = $lang['t63'];
printTopHTML();
require($settings['tpl_path'].'admin_tasks.php');
printDownHTML();
} // END confirmViewEmail
function showIP()
{
global $settings, $lang;
$error_buffer = '';
$num = isset($_POST['num']) ? intval($_POST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
/* Check password */
if (empty($_POST['pass']))
{
$error_buffer .= $lang['e09'];
}
elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
{
$error_buffer .= $lang['e12'];
}
/* Any errors? */
if ($error_buffer)
{
confirmViewIP($error_buffer);
}
/* All OK, show the IP address */
$lines = file($settings['logfile']);
$myline = explode("\t",$lines[$num]);
if (empty($myline[8]))
{
$ip='IP NOT AVAILABLE';
}
else
{
$ip=rtrim($myline[8]);
if (isset($_POST['addban']) && $_POST['addban']=='YES')
{
gbook_banIP($ip);
}
$host=@gethostbyaddr($ip);
if ($host && $host!=$ip)
{
$ip.=' ('.$host.')';
}
}
define('NOTICE', $lang['t69'] . '
' . $ip);
} // END showIP
function confirmViewIP($error='')
{
global $settings, $lang;
$num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
$task = $lang['t09'];
$task_description = $lang['t10'];
$action = 'showIP';
$button = $lang['t24'];
$options = '';
printTopHTML();
require($settings['tpl_path'].'admin_tasks.php');
printDownHTML();
} // END confirmViewIP
function postReply()
{
global $settings, $lang;
$error_buffer = '';
$num = isset($_POST['num']) ? intval($_POST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
/* Check password */
if (empty($_POST['pass']))
{
$error_buffer .= $lang['e09'] . '
';
}
elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
{
$error_buffer .= $lang['e12'];
}
/* Check message */
$comments = (isset($_POST['comments'])) ? gbook_input($_REQUEST['comments']) : false;
if (!$comments)
{
$error_buffer .= $lang['e10'];
$comments = '';
}
/* Any errors? */
if ($error_buffer)
{
writeReply($error_buffer, $comments);
}
/* All OK, process the reply */
$comments = wordwrap($comments,$settings['max_word'],' ',1);
$comments = preg_replace('/\&([#0-9a-zA-Z]*)(\s)+([#0-9a-zA-Z]*);/Us',"&$1$3; ",$comments);
$comments = preg_replace('/(\r\n|\n|\r)/','
',$comments);
$comments = preg_replace('/(
\s*){2,}/','
',$comments);
if ($settings['smileys'] == 1 && !isset($_REQUEST['nosmileys']) )
{
$comments = processsmileys($comments);
}
$myline = array(0=>'',1=>'',2=>'',3=>'',4=>'',5=>'',6=>'',7=>'',8=>'');
$lines = file($settings['logfile']);
$myline = explode("\t",$lines[$num]);
foreach ($myline as $k=>$v)
{
$myline[$k]=rtrim($v);
}
$myline[7] = $comments;
$lines[$num] = implode("\t",$myline)."\n";
$lines = implode('',$lines);
$fp = fopen($settings['logfile'],'wb') or problem($lang['e13']);
fputs($fp,$lines);
fclose($fp);
/* Notify visitor? */
if ($settings['notify_visitor'] && strlen($myline[2]))
{
$name = unhtmlentities($myline[1]);
$email = $myline[2];
$char = array('.','@');
$repl = array('.','@');
$email=str_replace($repl,$char,$email);
$message = sprintf($lang['t76'],$name)."\n\n";
$message.= sprintf($lang['t77'],$settings['gbook_title'])."\n\n";
$message.= "$lang[t78]\n";
$message.= "$settings[gbook_url]\n\n";
$message.= "$lang[t79]\n\n";
$message.= "$settings[website_title]\n";
$message.= "$settings[website_url]\n";
mail($email,$lang['t80'],$message,"From: $settings[admin_email]\nReply-to: $settings[admin_email]\nReturn-path: $settings[admin_email]\nContent-type: text/plain; charset=".$lang['enc']);
}
define('NOTICE', $lang['t12']);
} // END postReply
function writeReply($error='', $comments='')
{
global $settings, $lang;
$num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
$nosmileys = isset($_REQUEST['nosmileys']) ? 'checked="checked"' : '';
printTopHTML();
require($settings['tpl_path'].'admin_reply.php');
printDownHTML();
} // END writeReply
function check_secnum($secnumber,$checksum)
{
global $settings, $lang;
$secnumber.=$settings['filter_sum'].date('dmy');
if ($secnumber == $checksum)
{
unset($_SESSION['checked']);
return true;
}
else
{
return false;
}
} // END check_secnum
function filter_bad_words($text)
{
global $settings, $lang;
$file = 'badwords/'.$settings['filter_lang'].'.php';
if (file_exists($file))
{
include_once($file);
}
else
{
problem($lang['e14']);
}
foreach ($settings['badwords'] as $k => $v)
{
$text = preg_replace("/\b$k\b/i",$v,$text);
}
return $text;
} // END filter_bad_words
function showPrivate()
{
global $settings, $lang;
$error_buffer = '';
$num = isset($_POST['num']) ? intval($_POST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
/* Check password */
if (empty($_POST['pass']))
{
$error_buffer .= $lang['e09'];
}
elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
{
$error_buffer .= $lang['e15'];
}
/* Any errors? */
if ($error_buffer)
{
confirmViewPrivate($error_buffer);
}
/* All OK, show the private message */
define('SHOW_PRIVATE',1);
$lines=file($settings['logfile']);
printTopHTML();
printEntries($lines,$num+1,$num+1);
printDownHTML();
} // END showPrivate
function confirmViewPrivate($error='')
{
global $settings, $lang;
$num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
$task = $lang['t35'];
$task_description = $lang['t36'];
$action = 'showprivate';
$button = $lang['t35'];
printTopHTML();
require($settings['tpl_path'].'admin_tasks.php');
printDownHTML();
} // END confirmViewPrivate
function processsmileys($text)
{
global $settings, $lang;
/* File with emoticon settings */
require($settings['tpl_path'].'emoticons.php');
/* Replace some custom emoticon codes into GBook compatible versions */
$text = preg_replace("/([\:\;])\-([\)op])/ie","str_replace(';p',':p','\\1'.strtolower('\\2'))",$text);
$text = preg_replace("/([\:\;])\-d/ie","str_replace(';D',':D','\\1'.'D')",$text);
foreach ($settings['emoticons'] as $code => $image)
{
$text = str_replace($code,'
',$text);
}
return $text;
} // END processsmileys
function doDelete()
{
global $settings, $lang;
$error_buffer = '';
$num = isset($_POST['num']) ? intval($_POST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
/* Check password */
if (empty($_POST['pass']))
{
$error_buffer .= $lang['e09'];
}
elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
{
$error_buffer .= $lang['e16'];
}
/* Any errors? */
if ($error_buffer)
{
confirmDelete($error_buffer);
}
/* All OK, delete the message */
$lines=file($settings['logfile']);
/* Ban poster's IP? */
if (isset($_POST['addban']) && $_POST['addban']=='YES')
{
gbook_banIP(trim(array_pop(explode("\t",$lines[$num]))));
}
unset($lines[$num]);
$lines = implode('',$lines);
$fp = fopen($settings['logfile'],'wb') or problem($lang['e13']);
fputs($fp,$lines);
fclose($fp);
define('NOTICE', $lang['t37']);
} // END doDelete
function confirmDelete($error='')
{
global $settings, $lang;
$num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
if ($num === false)
{
problem($lang['e02']);
}
$task = $lang['t38'];
$task_description = $lang['t39'];
$action = 'confirmdelete';
$button = $lang['t40'];
$options = '';
printTopHTML();
require($settings['tpl_path'].'admin_tasks.php');
printDownHTML();
} // END confirmDelete
function check_mail_url()
{
global $settings, $lang;
$v = array('email' => '','url' => '');
$char = array('.','@');
$repl = array('.','@');
$v['email']=htmlspecialchars($_POST['email']);
if (strlen($v['email']) > 0 && !(preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$v['email'])))
{
$v['email']='INVALID';
}
$v['email']=str_replace($char,$repl,$v['email']);
if ($settings['use_url'])
{
$v['url']=htmlspecialchars($_POST['url']);
if ($v['url'] == 'http://' || $v['url'] == 'https://') {$v['url'] = '';}
elseif (strlen($v['url']) > 0 && !(preg_match("/(http(s)?:\/\/+[\w\-]+\.[\w\-]+)/i",$v['url'])))
{
$v['url'] = 'INVALID';
}
}
elseif (!empty($_POST['url']))
{
$_SESSION['block'] = 1;
problem($lang['e01'],0);
}
else
{
$v['url'] = '';
}
return $v;
} // END check_mail_url
function addEntry()
{
global $settings, $lang, $myfield;
/* This part will help prevent multiple submissions */
if ($settings['one_per_session'] && $_SESSION['add'])
{
problem($lang['e17'],0);
}
/* Check for obvious SPAM */
if (!empty($_POST['name']) || isset($_POST['comments']) || !empty($_POST[$myfield['bait']]) || ($settings['use_url']!=1 && isset($_POST['url'])) )
{
gbook_banIP(gbook_IP(),1);
}
$name = gbook_input($_POST[$myfield['name']]);
$from = gbook_input($_POST['from']);
$a = check_mail_url();
$email = $a['email'];
$url = $a['url'];
$comments = gbook_input($_POST[$myfield['cmnt']]);
$isprivate = ( isset($_POST['private']) && $settings['use_private'] ) ? 1 : 0;
$sign_isprivate = $isprivate ? 'checked="checked"' : '';
$sign_nosmileys = isset($_REQUEST['nosmileys']) ? 'checked="checked"' : 1;
$error_buffer = '';
if (empty($name))
{
$error_buffer .= $lang['e03'].'
';
}
if ($email=='INVALID')
{
$error_buffer .= $lang['e04'].'
';
$email = '';
}
if ($url=='INVALID')
{
$error_buffer .= $lang['e05'].'
';
$url = '';
}
if (empty($comments))
{
$error_buffer .= $lang['e06'].'
';
}
else
{
/* Check comment length */
if ($settings['max_comlen'])
{
$count = strlen($comments);
if ($count > $settings['max_comlen'])
{
$error_buffer .= sprintf($lang['t73'],$settings['max_comlen'],$count).'
';
}
}
/* Don't allow flooding with too much emoticons */
if ($settings['smileys'] == 1 && !isset($_REQUEST['nosmileys']) && $settings['max_smileys'])
{
$count = 0;
$count+= preg_match_all("/[\:\;]\-*[\)dpo]/i",$comments,$tmp);
$count+= preg_match_all("/\:\![a-z]+\:/U",$comments,$tmp);
unset($tmp);
if ($count > $settings['max_smileys'])
{
$error_buffer .= sprintf($lang['t74'],$settings['max_smileys'],$count).'
';
}
}
}
/* Use a logical anti-SPAM question? */
$spamanswer = '';
if ($settings['spam_question'])
{
if (isset($_POST[$myfield['answ']]) && strtolower($_POST[$myfield['answ']]) == strtolower($settings['spam_answer']) )
{
$spamanswer = $settings['spam_answer'];
}
else
{
$error_buffer .= $lang['t67'].'
';
}
}
/* Use security image to prevent automated SPAM submissions? */
if ($settings['autosubmit'])
{
$mysecnum = isset($_POST['mysecnum']) ? intval($_POST['mysecnum']) : 0;
if (empty($mysecnum))
{
$error_buffer .= $lang['e07'].'
';
}
else
{
require('secimg.inc.php');
$sc=new PJ_SecurityImage($settings['filter_sum']);
if (!($sc->checkCode($mysecnum,$_SESSION['checksum'])))
{
$error_buffer .= $lang['e08'].'
';
}
}
}
/* Any errors? */
if ($error_buffer)
{
printSign($name,$from,$email,$url,$comments,$sign_nosmileys,$sign_isprivate,$error_buffer,$spamanswer);
}
/* Check the message with JunkMark(tm)? */
if ($settings['junkmark_use'])
{
$junk_mark = JunkMark($name,$from,$email,$url,$comments);
if ($settings['junkmark_ban100'] && $junk_mark == 100)
{
gbook_banIP(gbook_IP(),1);
}
elseif ($junk_mark >= $settings['junkmark_limit'])
{
$_SESSION['block'] = 1;
problem($lang['e01'],0);
}
}
/* Everthing seems fine, let's add the message */
$delimiter="\t";
$m = date('m');
if (isset($lang['m'.$m]))
{
$added = $lang['m'.$m] . date(" j, Y");
}
else
{
$added = date("F j, Y");
}
/* Filter offensive words */
if ($settings['filter'])
{
$comments = filter_bad_words($comments);
$name = filter_bad_words($name);
$from = filter_bad_words($from);
}
/* Process comments */
$comments_nosmileys = unhtmlentities($comments);
$comments = wordwrap($comments,$settings['max_word'],' ',1);
$comments = preg_replace('/\&([#0-9a-zA-Z]*)(\s)+([#0-9a-zA-Z]*);/Us',"&$1$3; ",$comments);
$comments = preg_replace('/(\r\n|\n|\r)/','
',$comments);
$comments = preg_replace('/(
\s*){2,}/','
',$comments);
/* Process emoticons */
if ($settings['smileys'] == 1 && !isset($_REQUEST['nosmileys']))
{
$comments = processsmileys($comments);
}
/* Create the new entry and add it to the entries file */
$addline = $name.$delimiter.$from.$delimiter.$email.$delimiter.$url.$delimiter.$comments.$delimiter.$added.$delimiter.$isprivate.$delimiter.'0'.$delimiter.$_SERVER['REMOTE_ADDR']."\n";
/* Prepare for e-mail... */
$name = unhtmlentities($name);
$from = unhtmlentities($from);
/* Manually approve entries? */
if ($settings['man_approval'])
{
$tmp = md5($_SERVER['REMOTE_ADDR'].$settings['filter_sum']);
$tmp_file = 'apptmp/'.$tmp.'.txt';
if (file_exists($tmp_file))
{
problem($lang['t81']);
}
$fp = fopen($tmp_file,'w') or problem($lang['e23']);
if (flock($fp, LOCK_EX))
{
fputs($fp,$addline);
flock($fp, LOCK_UN);
fclose($fp);
}
else
{
problem($lang['e22']);
}
$char = array('.','@');
$repl = array('.','@');
$email=str_replace($repl,$char,$email);
$message = "$lang[t42]\n\n";
$message.= "$lang[t82]\n\n";
$message.= "$lang[t17] $name\n";
$message.= "$lang[t18] $from\n";
$message.= "$lang[t20] $email\n";
$message.= "$lang[t19] $url\n";
$message.= "$lang[t44]\n";
$message.= "$comments_nosmileys\n\n";
$message.= "$lang[t83]\n";
$message.= "$settings[gbook_url]?id=$tmp&a=approve&do=1\n\n";
$message.= "$lang[t84]\n";
$message.= "$settings[gbook_url]?id=$tmp&a=approve&do=0\n\n";
$message.= "$lang[t46]\n";
mail($settings['admin_email'],$lang['t41'],$message,"Content-type: text/plain; charset=".$lang['enc']);
/* Let the first page know a new entry has been submitted for approval */
define('NOTICE',$lang['t85']);
}
else
{
$links = file_get_contents($settings['logfile']);
if ($links === false)
{
problem($lang['e18']);
}
$addline .= $links;
$fp = fopen($settings['logfile'],'wb') or problem($lang['e13']);
fputs($fp,$addline);
fclose($fp);
if ($settings['notify'] == 1)
{
$char = array('.','@');
$repl = array('.','@');
$email=str_replace($repl,$char,$email);
$message = "$lang[t42]\n\n";
$message.= "$lang[t43]\n\n";
$message.= "$lang[t17] $name\n";
$message.= "$lang[t18] $from\n";
$message.= "$lang[t20] $email\n";
$message.= "$lang[t19] $url\n";
$message.= "$lang[t44]\n";
$message.= "$comments_nosmileys\n\n";
$message.= "$lang[t45]\n";
$message.= "$settings[gbook_url]\n\n";
$message.= "$lang[t46]\n";
mail($settings['admin_email'],$lang['t41'],$message,"Content-type: text/plain; charset=".$lang['enc']);
}
/* Let the first page know a new entry has been submitted */
define('NOTICE',$lang['t47']);
}
/* Register this session variable */
$_SESSION['add']=1;
/* Unset Captcha settings */
if ($settings['autosubmit'])
{
$_SESSION['secnum']=rand(10000,99999);
$_SESSION['checksum']=crypt($_SESSION['secnum'],$settings['filter_sum']);
gbook_session_regenerate_id();
}
} // END addEntry
function printSign($name='',$from='',$email='',$url='',$comments='',$nosmileys='',$isprivate='',$error='',$spamanswer='')
{
global $settings, $myfield, $lang;
$url=$url ? $url : 'http://';
/* anti-SPAM logical question */
if ($settings['spam_question'])
{
$settings['antispam'] =
'
'.$settings['spam_question'].'
';
}
else
{
$settings['antispam'] = '';
}
/* Visual Captcha */
if ($settings['autosubmit'] == 1)
{
$_SESSION['secnum']=rand(10000,99999);
$_SESSION['checksum']=crypt($_SESSION['secnum'],$settings['filter_sum']);
gbook_session_regenerate_id();
$settings['antispam'] .=
'
!['.$lang['t62'].' '.$lang['t62'].'](print_sec_img.php)
'.$lang['t56'].'
';
}
elseif ($settings['autosubmit'] == 2)
{
$_SESSION['secnum']=rand(10000,99999);
$_SESSION['checksum']=crypt($_SESSION['secnum'],$settings['filter_sum']);
gbook_session_regenerate_id();
$settings['antispam'] .=
'
'.$_SESSION['secnum'].'
'.$lang['t56'].'
';
}
printTopHTML();
require($settings['tpl_path'].'sign_form.php');
printDownHTML();
} // END printSign
function printEntries($lines,$start,$end)
{
global $settings, $lang;
$start = $start-1;
$end = $end-1;
$delimiter = "\t";
$template = file_get_contents($settings['tpl_path'].'comments.php');
for ($i=$start;$i<=$end;$i++)
{
$lines[$i]=rtrim($lines[$i]);
list($name,$from,$email,$url,$comment,$added,$isprivate,$reply)=explode($delimiter,$lines[$i]);
if (!empty($isprivate) && !empty($settings['use_private']) && !defined('SHOW_PRIVATE'))
{
$comment = '
'.$lang['t58'].'
';
}
else
{
$comment = str_replace('##GBOOK_TEMPLATE##',$settings['tpl_path'],$comment);
}
if (!empty($reply))
{
$comment .= '
'.$lang['t30'].' '.str_replace('##GBOOK_TEMPLATE##',$settings['tpl_path'],$reply).'';
}
if ($email)
{
if ($settings['hide_emails'])
{
$email = ''.$lang['t27'].'';
}
else
{
$email = ''.$email.'';
}
}
if ($settings['use_url'] && $url)
{
$url = ''.$url.'';
}
else
{
$url = '';
}
eval(' ?>'.$template.''.$lang['t59'].'' : '';
printTopHTML();
require($settings['tpl_path'].'error.php');
printDownHTML();
} // END problem
function printNoCache()
{
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
} // END printNoCache
function printTopHTML()
{
global $settings, $lang;
require_once($settings['tpl_path'].'overall_header.php');
} // END printTopHTML
function printDownHTML()
{
global $settings, $lang;
$settings['pj_license']('QokbGluaz10cnVlOw0KaWYgKGZpbGVfZXhpc3RzKCdnYm9va19saWNl
bnNlLnBocCcpKSB7aW5jbHVkZSgnZ2Jvb2tfbGljZW5zZS5waHAnKTsNCmlmIChAaXNfYXJyYXkoJHNl
dHRpbmdzWydnYm9va19saWNlbnNlJ10pKSB7JGxpbms9ZmFsc2U7fX0NCmlmICgkbGluaykge2VjaG8g
JzxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+UG93
ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGp1bmt5YXJkLmNvbS9waHAtZ3Vlc3Rib29rLXNj
cmlwdC5waHAiICcuJHNldHRpbmdzWyd0YXJnZXQnXS4nIHRpdGxlPSJHdWVzdGJvb2siPlBIUCBHdWVz
dGJvb2s8L2E+IC0gYnJvdWdodCB0byB5b3UgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBqdW5reWFy
ZC5jb20vIiAnLiRzZXR0aW5nc1sndGFyZ2V0J10uJyB0aXRsZT0iRnJlZSBQSFAgU2NyaXB0cyI+UEhQ
IFNjcmlwdHM8L2E+PC9kaXY+Jzt9DQpyZXF1aXJlX29uY2UoJHNldHRpbmdzWyd0cGxfcGF0aCddLidv
dmVyYWxsX2Zvb3Rlci5waHAnKTsNCg==',"\104");
exit();
} // END printDownHTML
function gbook_input($in,$error=0)
{
$in = trim($in);
if (strlen($in))
{
$in = htmlspecialchars($in);
$in = preg_replace('/\t+/',' ',$in);
$in = preg_replace('/&(\#[0-9]+;)/','&$1',$in);
}
elseif ($error)
{
problem($error);
}
return stripslashes($in);
} // END gbook_input()
function gbook_isNumber($in,$error=0)
{
$in = trim($in);
if (preg_match("/\D/",$in) || $in=="")
{
if ($error)
{
problem($error);
}
else
{
return '0';
}
}
return $in;
} // END gbook_isNumber()
function JunkMark($name,$from,$email,$url,$comments)
{
/*
JunkMark(TM) SPAM filter
v1.6 from 29th November 2014
(c) Copyright 2006-2014 Klemen Stirn. All rights reserved.
The function returns a number between 0 and 100. Larger numbers mean
more probability that the message is SPAM. Recommended limit is 60
(block message if score is 60 or more)
THIS CODE MAY ONLY BE USED IN THE "GBOOK" SCRIPT FROM PHPJUNKYARD.COM
AND DERIVATIVE WORKS OF THE GBOOK SCRIPT.
THIS CODE MUSTN'T BE USED IN ANY OTHER SCRIPT AND/OR REDISTRIBUTED
IN ANY MEDIUM WITHOUT THE EXPRESS WRITTEN PERMISSION FROM KLEMEN STIRN!
*/
global $settings;
$settings['p_n'] = $name;
$settings['p_f'] = $from;
$settings['p_e'] = $email;
$settings['p_u'] = $url;
$settings['p_c'] = $comments;
return
$settings['pj_license']('2xvYmFsICRzZXR0aW5nczskcz0kc2V0dGluZ3M7JF9TPSRfU0VSVkVS
OyRtPTA7aWYoY291bnQoJF9QT1NUKT4yMCl7cmV0dXJuIDEwMDt9aWYoZW1wdHkoJHNbJ3VzZV91cmwn
XSkmJmlzc2V0KCRfUE9TVFsndXJsJ10pKXtyZXR1cm4gMTAwO30kYz1zdHJ0b2xvd2VyKCRzWydwX2Mn
XSk7JHVybD1zdHJ0b2xvd2VyKCRzWydwX3UnXSk7JGZyb209c3RydG9sb3dlcigkc1sncF9mJ10pOyRu
YW1lPXN0cnRvbG93ZXIoJHNbJ3BfbiddKTskdz1hcnJheSgnW3VybD0nLCc8YSBocmVmPScsKTtmb3Jl
YWNoKCR3IGFzICRzdyl7aWYoc3RycG9zKCRjLCRzdykhPT1mYWxzZSl7cmV0dXJuIDEwMDt9fSRwPSIv
aHR0cHM/XDpcL1wvfHd3d1xzKlwufFthLXowLTlcLV1ccypcLlxzKihjb218bmV0fG9yZ3xpbmZvfGJp
enxtb2JpKShcLlthLXpdezIsM30pP1xzL1UiO2lmKHByZWdfbWF0Y2goJHAsJGMuJyAnKXx8cHJlZ19t
YXRjaCgkcCwkbmFtZS4nICcpfHxwcmVnX21hdGNoKCRwLCRmcm9tLicgJykpe3JldHVybiAxMDA7fWlm
KCR1cmwpeyRjLj0nICcuJHVybDt9JHc9YXJyYXkoJ2FiaWxpZnknLCdhY2N1cHJpbCcsJ2FjY3V0YW5l
JywnYWNpcGhleCcsJ2FjdG9uZWwnLCdhY3RvcGx1cycsJ2FkZGVyYWxsJywnYWRpcGV4JywnYWdncmVu
b3gnLCdhbGRhY3RvbmUnLCdhbGRhcmEnLCdhbGxlZ3JhJywnYWxsZWdyYS1kJywnYWxwaGFnYW4nLCdh
bHRhY2UnLCdhbWJpZW4nLCdhbW94aWNpbGxpbicsJ2FuZHJvZ2VsJywnYW50aXZlcnQnLCdhcmljZXB0
JywnYXJpbWlkZXgnLCdhcnRocm90ZWMnLCdhc2Fjb2wnLCdhc21hbmV4JywnYXN0ZWxpbicsJ2F0YWNh
bmQnLCdhdGVub2xvbCcsJ2F0aXZhbicsJ2F0b3J2YXN0YXRpbicsJ2F1Z21lbnRpbicsJ2F2YWxpZGUn
LCdhdmFuZGFtZXQnLCdhdmFuZGlhJywnYXZhcHJvJywnYXZlbG94JywnYXZpYW5lJywnYXZvZGFydCcs
J2JhY3RyaW0nLCdiYWN0cm9iYW4nLCdiZW5hZHJ5bCcsJ2JlbmljYXInLCdiZW50eWwnLCdiZW56YWNs
aW4nLCdiaWF4aW4nLCdib25pdmEnLCdib3RveCcsJ2J1ZGVwcmlvbicsJ2J1c3BhcicsJ2J5ZXR0YScs
J2NhZHVldCcsJ2Nhcmlzb3Byb2RvbCcsJ2NhcmR1cmEnLCdjYXRhcHJlcycsJ2NlbGVicmV4JywnY2Vs
ZXhhJywnY2Vyb24nLCdjaGFudGl4JywnIGNpYWxpcycsJ2NpcHJvZGV4JywnY2xhcmluZXgnLCdjbGFy
aXRocm9teWNpbicsJ2NsYXJpdGluJywnY2xlb2NpbicsJ2NsaW5kYW15Y2luJywnY2xvbWlkJywnY29k
ZWluZScsJ2NvbWJpdmVudCcsJ2NvbmNlcnRhJywnY29yZWcnLCdjb3NvcHQnLCdjb3VtYWRpbicsJ2Nv
dmVyYS1ocycsJ2NvemFhcicsJ2NyZXN0b3InLCdjeW1iYWx0YScsJ2RhcnZvY2V0LW4nLCdkZWNhZHJv
bicsJ2RlbHRhc29uZScsJ2RlcGFrb3RlJywnZGVzeXJlbCcsJ2RldHJvbCcsJ2RpZmx1Y2FuJywnZGln
aXRlaycsJ2RpbGFudGluJywnZGlsYXVkaWQnLCdkaW92YW4nLCdkb2xvcGhpbmUnLCdkb3J5eCcsJ2Rv
eHljeWNsaW5lJywnZHVyYWdlc2ljJywnZHlhemlkZScsJ2VmZmV4b3InLCdlbGF2aWwnLCdlbGlkZWwn
LCdlbmFibGV4JywnZW5icmVsJywnZW5kb2NldCcsJ2VwaXBlbicsJ2VyeXRocm9teWNpbicsJ2Vza2Fs
aXRoJywnZXN0cmluZycsJ2VzdHJvc3RlcCcsJ2V0aGVkZW50JywnZXZpc3RhJywnZmFzdGluJywnZmVt
YXJhJywnZmlvcmljZXQnLCdmbGFneWwnLCdmbGV4ZXJpbCcsJ2Zsb21heCcsJ2Zsb3ZlbnQnLCdmbHV6
b25lJywnZm9jYWxpbicsJ2Zvc2FtYXgnLCdnYXJkYXNpbCcsJ2dlb2RvbicsJ2dsaXBpemlkZScsJ2ds
dWNvcGhhZ2UnLCdnbHVjb3Ryb2wnLCdnbHljb2xheCcsJ2d1YWlmZW5leCcsJ2h1bWFsb2cnLCdodW11
bGluJywnaHl6YWFyJywnaWJ1cHJvZmVuJywnaW1pdHJleCcsJ2luZGVyYWwnLCdpbmRvY2luJywnamFu
dG92ZW4nLCdqYW51dmlhJywna2FyaXZhJywna2VmbGV4Jywna2VwcHJhJywna2xvbm9waW4nLCdrbG9y
LWNvbicsJ2xhbWljdGFsJywnbGFtaXNpbCcsJ2xhbm94aW4nLCdsYW50dXMnLCdsYXNpeCcsJ2xlc2Nv
bCcsJ2xldmFxdWluJywnbGV2aXRyYScsJ2xldm9yYScsJ2xldm90aHJvaWQnLCdsZXZveHlsJywnbGV4
YXBybycsJ2xpZG9kZXJtJywnbGlwaXRvcicsJ2xvZGluZScsJ2xvZXN0cmluJywnbG9wcmVzc29yJywn
bG9ydGFiJywnbG90cmVsJywnbG92YXphJywnbG93LW9nZXN0cmVsJywnbHVtaWdhbicsJ2x1bmVzdGEn
LCdsdXByb24nLCdtYWNyb2JpZCcsJ21lZHJvbCcsJ21ldGh5bGluJywnbWV0cm9uaWRhem9sZScsJ21l
dmFjb3InLCdtaWNhcmRpcycsJ21pcmFsYXgnLCdtaXJhcGV4JywnbmFtZW5kYScsJ25hcHJvc3luJywn
bmFzYWNvcnQnLCduYXNvbmV4JywnbmV1cm9udGluJywnbmV4aXVtJywnbmlhc3BhbicsJ25pdHJvc3Rh
dCcsJ25vbHZhZGV4Jywnbm9ydmFzYycsJ25vdm9saW4nLCdub3ZvbG9nJywnbnV2YXJpbmcnLCdueXN0
YXRpbicsJ29tbmljZWYnLCdvcnRobyBldnJhJywnb3J0aG8gdHJpLWN5Y2xlbicsJ294eWNvbnRpbics
J3BhdGFub2wnLCdwYXhpbCcsJ3BlcmNvY2V0JywncGhlbmVyZ2FuJywncGxhdml4JywncHJhdmFjaG9s
JywncHJlbWFyaW4nLCdwcmVtcHJvJywncHJldmFjaWQnLCdwcmlsb3NlYycsJ3ByaW1hY2FyZScsJ3By
aW5pdmlsJywncHJvbWV0cml1bScsJ3Byb3BlY2lhJywncHJvdG9uaXgnLCdwcm92ZW50aWwnLCdwcm92
ZXJhJywncHJvdmlnaWwnLCdwcm96YWMnLCdwc2V1ZG92ZW50JywncHVsbWljb3J0JywncmVnbGFuJywn
cmVsYWZlbicsJ3JlbHBheCcsJ3JlbWVyb24nLCdyZW1pY2FkZScsJ3JlcXVpcCcsJ3Jlc3B1bGVzJywn
cmVzdGFzaXMnLCdyaGlub2NvcnQnLCdyaXNwZXJkYWwnLCdyb2JheGluJywncm94aWNvZG9uZScsJ3Jv
emVyZW0nLCdzZXB0cmEnLCdzZXJvcXVlbCcsJ3NpbXZhc3RhdGluJywnc2luZW1ldCcsJ3Npbmd1bGFp
cicsJ3NrZWxheGluJywnc3Bpcml2YScsJ3NwcmludGVjJywnc3RyYXR0ZXJhJywnc3Vib3hvbmUnLCdz
dW15Y2luJywndGFtaWZsdScsJ3RlZ3JldG9sJywndG9icmFkZXgnLCd0b3BhbWF4JywndG9wcm9sJywn
dG9yYWRvbCcsJ3RyYXZhdGFuJywndHJleGltZXQnLCd0cmktc3ByaW50ZWMnLCd0cmlhbWNpbm9sb25l
JywndHJpY29yJywndHJpbGVwdGFsJywndHJpbHl0ZScsJ3RyaW5lc3NhJywndHJpdm9yYScsJ3R1c3Np
b25leCcsJ3R5bGVub2wnLCd1bHRyYWNldCcsJ3VsdHJhbScsJ3Vyb3hhdHJhbCcsJ3ZhZ2lmZW0nLCd2
YWxpdW0nLCd2YWx0cmV4JywndmFuY29teWNpbicsJ3Zhc290ZWMnLCd2ZXNpY2FyZScsJ3ZpYWdyYScs
J3ZpY29kaW4nLCd2aWdhbW94JywndmlzdGFyaWwnLCd2aXZlbGxlLWRvdCcsJ3ZvbHRhcmVuJywndnl0
b3JpbicsJ3Z5dmFuc2UnLCd3YXJmYXJpbicsJ3dlbGxidXRyaW4nLCd4YWxhdGFuJywneGFuYXgnLCd4
ZW5pY2FsJywneG9wZW5leCcsJ3h5emFsJywnemFuYWZsZXgnLCd6YW50YWMnLCd6ZXRpYScsJ3ppdGhy
b21heCcsJ3pvY29yJywnem9sb2Z0Jywnem92aXJheCcsJ3p5YmFuJywnenltYXInLCd6eXByZXhhJywn
enlydGVjJywpO2ZvcmVhY2goJHcgYXMgJHN3KXtpZihzdHJwb3MoJGMsJHN3KSE9PWZhbHNlKXtyZXR1
cm4gMTAwO319JHc9YXJyYXkoJ29yZGVyY2hlYXAnLCdvcmRlcmdlbmVyaWMnLCdvcmRlcm9ubGluZScs
J2J1eWNoZWFwJywnYnV5Z2VuZXJpYycsJ2J1eW9ubGluZScsJ3Rvb3Rod2hpdGVuaW5nJywnZ29ub3Jy
aGVhJywnd2VpZ2h0bG9zcycsJ2FudGlkb3RlJywnaGksaXRzdmVyeWludGVyZXN0aW5nLnRoeCEnLCdh
ZGlwZXgnLCdhZHZpY2VyJywnYmFjY2FycmF0JywnYmxhY2tqYWNrJywnYmxsb2dzcG90JywnYm9va2Vy
JywnY2FyYm9oeWRyYXRlJywnY2FyLXJlbnRhbC1lLXNpdGUnLCdjYXItcmVudGFscy1lLXNpdGUnLCdj
YXJpc29wcm9kb2wnLCdjYXNpbm8nLCdjYXNpbm9zJywnY29vbGNvb2xodScsJ2Nvb2xodScsJ2NyZWRp
dC1yZXBvcnQtNHUnLCdjeWNsZW4nLCdjeWNsb2JlbnphcHJpbmUnLCdkYXRpbmctZS1zaXRlJywnZGF5
LXRyYWRpbmcnLCdkZWJ0JywnZGVidC1jb25zb2xpZGF0aW9uLWNvbnN1bHRhbnQnLCdkcnVnJywnZGlz
Y3JlZXRvcmRlcmluZycsJ2R1dHktZnJlZScsJ2R1dHlmcmVlJywnZXF1aXR5bG9hbnMnLCdmaW5hbmNp
bmcnLCdmaW9yaWNldCcsJ2Zsb3dlcnMtbGVhZGluZy1zaXRlJywnZnJlZW5ldC1zaG9wcGluZycsJ2Zy
ZWVuZXQnLCdnYW1ibGluZycsJ2hlYWx0aC1pbnN1cmFuY2VkZWFscy00dScsJ2hvbWVlcXVpdHlsb2Fu
cycsJ2hvbWVmaW5hbmNlJywnaG9sZGVtJywnaG9sZGVtcG9rZXInLCdob2xkZW1zb2Z0d2FyZScsJ2hv
bGRlbXRleGFzdHVyYm93aWxzb24nLCdob3RlbC1kZWFsc2Utc2l0ZScsJ2hvdGVsZS1zaXRlJywnaG90
ZWxzZS1zaXRlJywnaW5jZXN0JywnaW5zdXJhbmNlLXF1b3Rlc2RlYWxzLTR1JywnaW5zdXJhbmNlZGVh
bHMtNHUnLCdqcmNyZWF0aW9ucycsJ2xldml0cmEnLCdtYWNpbnN0cnVjdCcsJ21vcnRnYWdlLTQtdScs
J21vcnRnYWdlcXVvdGVzJywnb25saW5lLWdhbWJsaW5nJywnb25saW5lZ2FtYmxpbmctNHUnLCdvdHRh
d2F2YWxsZXlhZycsJ293bnN0aGlzJywncGFsbS10ZXhhcy1ob2xkZW0tZ2FtZScsJ3BlbmlzJywncGhh
cm1hY3knLCdwaGVudGVybWluZScsJ3Bva2VyJywncG9rZXItY2hpcCcsJ3JlbnRhbC1jYXItZS1zaXRl
Jywncm91bGV0dGUnLCdzaGVtYWxlJywnc2xvdC1tYWNoaW5lJywndGV4YXMtaG9sZGVtJywndGhvcmNh
cmxzb24nLCd0b3Atc2l0ZScsJ3RvcC1lLXNpdGUnLCd0cmFtYWRvbCcsJ3RyaW0tc3BhJywndWx0cmFt
JywndmFsZW9mZ2xhbW9yZ2FuY29uc2VydmF0aXZlcycsJ3Zpb3h4Jywnem9sdXMnICk7JHNlY29uZD0w
O2ZvcmVhY2goJHcgYXMgJHN3KXtpZihzdHJwb3MoJGMsJHN3KSE9PWZhbHNlKXtpZigkc2Vjb25kKXty
ZXR1cm4gMTAwO30kbSs9NzA7JHNlY29uZD0xO319JHc9YXJyYXkoJzEwMCUnLCdhZmZvcmRhYmxlJywn
YW1iaWVuJywnYmFyZ2FpbicsJ2J1eScsJ2NoYXRyb29tJywnY2hlYXAnLCdmaW5hbmNpbmcnLCdnZW5l
cmljJywnaW5zdXJhbmNlJywnaW52ZXN0bWVudCcsJ2xvYW4nLCdvcmRlcicsJ3BvemUnLCdwcmUtYXBw
cm92ZWQnLCdzb21hJywndGFib28nLCd0ZWVuJywnd2hvbGVzYWxlJyApOyR0aGlyZD0xO2ZvcmVhY2go
JHcgYXMgJHN3KXtpZihzdHJwb3MoJGMsJHN3KSE9PWZhbHNlKXtpZigkc2Vjb25kfHwkdGhpcmQ9PTMp
e3JldHVybiAxMDA7fSRtKz0zMDskdGhpcmQrKzt9fWlmKCRzWydwX2UnXSl7JG0rPTEwO31pZigkdXJs
KXskbSs9MTA7JHVybD1zdHJ0b2xvd2VyKCR1cmwpOyR1cmxfcGFyc2VkPXBhcnNlX3VybCgkdXJsKTsk
aG9zdD1zdHJfcmVwbGFjZSgnd3d3LicsJycsJHVybF9wYXJzZWRbJ2hvc3QnXSk7aWYoc3Vic3RyX2Nv
dW50KCRob3N0LCcuJyk+MSl7JG0rPTEwO319aWYoZW1wdHkoJHNbJ2lnbm9yZV9wcm94aWVzJ10pJiYo
aXNzZXQoJF9TWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddKXx8aXNzZXQoJF9TWydIVFRQX1ZJQSddKXx8
aXNzZXQoJF9TWydIVFRQX0NPT0tJRTInXSl8fGlzc2V0KCRfU1snSFRUUF9YX0ZPUldBUkRFRF9TRVJW
RVInXSl8fGlzc2V0KCRfU1snSFRUUF9YX0ZPUldBUkRFRF9IT1NUJ10pfHxpc3NldCgkX1NbJ0hUVFBf
TUFYX0ZPUldBUkRTJ10pfHxpc3NldCgkX1NbJ0hUVFBfUFJPWFlfQ09OTkVDVElPTiddKSkpeyRtKz01
MDt9aWYoc3RybGVuKCRuYW1lKT09OCYmc3RybGVuKCRmcm9tKT09OCl7JG0rPTQwO30kbT0oJG0+MTAw
KT8xMDA6JG07cmV0dXJuICRtOw==',"\132");
} // END JunkMark()
function gbook_IP()
{
global $settings, $lang;
$ip = $_SERVER['REMOTE_ADDR'];
if ( ! preg_match('/^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/',$ip) && ! preg_match('/^[0-9A-Fa-f\:]+$/',$ip) )
{
die($lang['e20']);
}
return $ip;
} // END gbook_IP()
function gbook_CheckIP()
{
global $settings, $lang;
$ip = gbook_IP();
$myBanned = file_get_contents('banned_ip.txt');
if (strpos($myBanned,$ip) !== false)
{
die($lang['e21']);
}
return true;
} // END gbook_CheckIP()
function gbook_banIP($ip,$doDie=0)
{
global $settings, $lang;
$fp=fopen('banned_ip.txt','a');
fputs($fp,$ip.'%');
fclose($fp);
if ($doDie)
{
die($lang['e21']);
}
return true;
} // END gbook_banIP()
function gbook_session_regenerate_id()
{
if (version_compare(phpversion(),'4.3.3','>='))
{
session_regenerate_id();
}
else
{
$randlen = 32;
$randval = '0123456789abcdefghijklmnopqrstuvwxyz';
$random = '';
$randval_len = 35;
for ($i = 1; $i <= $randlen; $i++)
{
$random .= substr($randval, rand(0,$randval_len), 1);
}
if (session_id($random))
{
setcookie(
session_name('GBOOK'),
$random,
ini_get('session.cookie_lifetime'),
'/'
);
return true;
}
else
{
return false;
}
}
} // END gbook_session_regenerate_id()
function unhtmlentities($in)
{
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return strtr($in,$trans_tbl);
} // END unhtmlentities()
?>