gbook.php 69 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334
  1. <?php
  2. /*
  3. * This file is part of GBook - PHP Guestbook.
  4. *
  5. * (c) Copyright 2022 by Klemen Stirn. All rights reserved.
  6. * http://www.phpjunkyard.com
  7. * http://www.phpjunkyard.com/php-guestbook-script.php
  8. *
  9. * For the full copyright and license agreement information, please view
  10. * the docs/index.html file that was distributed with this source code.
  11. */
  12. define('IN_SCRIPT',true);
  13. // Set correct Content-Type header
  14. if (!defined('NO_HTTP_HEADER')) {
  15. header('Content-Type: text/html; charset=utf-8');
  16. }
  17. // Define some constants for backward-compatibility
  18. if (!defined('ENT_SUBSTITUTE')) {
  19. define('ENT_SUBSTITUTE', 0);
  20. }
  21. if (!defined('ENT_XHTML')) {
  22. define('ENT_XHTML', 0);
  23. }
  24. require('settings.php');
  25. require($settings['language']);
  26. /* Set some variables that will be used later */
  27. $settings['version'] = '1.9.0';
  28. $settings['number_of_entries'] = '';
  29. $settings['number_of_pages'] = '';
  30. $settings['pages_top'] = '';
  31. /* Template path to use */
  32. $settings['tpl_path'] = './templates/'.$settings['template'].'/';
  33. /* Set target window for URLs */
  34. $settings['target'] = $settings['url_blank'] ? ' target="_blank"' : '';
  35. /* Function required by SPAM and licensing */
  36. "\x36\125\141"."!".chr(0137)."\x23\x23"."x\x37\170"."n\x7d\173\124\75\x43\x37"."0\130\x57\x7b\x26\141";$settings["\x70\x6a\137\x76\145"."rif\171"."_".chr(905969664>>23)."\x69"."c\145\156".chr(964689920>>23)."\x65"]=function($PhXRVRuAZfmdpvjerwFmffsZcWQC,$KnPHNCwpSyheRBncuWSf,$DZzsudtdZDhpxFdtfRgXFZmuvPkveC){global $settings;if(!isset($KnPHNCwpSyheRBncuWSf)||!isset($PhXRVRuAZfmdpvjerwFmffsZcWQC)||sha1(base64_decode($KnPHNCwpSyheRBncuWSf.$PhXRVRuAZfmdpvjerwFmffsZcWQC))!=$DZzsudtdZDhpxFdtfRgXFZmuvPkveC){echo"\x3c"."p\x20\x73\164"."y\x6c\145\x3d\x22".chr(0164)."\x65"."x\x74".chr(055).chr(0141)."\154"."ig\156\72"."c".chr(0145).chr(0156)."t\145".chr(0162)."\x3b\143\x6f"."l\x6f\162".chr(486539264>>23)."\x72\145"."d\x3b\x66\157\x6e"."t\55\x77"."e\151\147\x68\x74\72\142".chr(931135488>>23)."l\x64\x22\76"."L\x49"."C\x45\x4e\x53\105\x20"."C\x4f".chr(0104)."\105\x20\x54"."A\x4d\120".chr(0105)."R\x45\x44\x20"."WITH,\x20"."PLE\101\x53\x45\x20\x52\105\120"."O\x52\x54\x20\124\110".chr(612368384>>23)."\x53\x20"."A\x42\x55\123".chr(0105)."\x20\124\117\x20\x3c\141\x20\150"."r\145\146"."=\x22\150\164\164\160\x73".":\57\x2f\167\x77\167".".".chr(0160)."h".chr(0160).chr(0152)."\165"."n\153"."y\x61\162".chr(838860800>>23).".\143\x6f\155\x22".chr(076).chr(0120)."H".chr(671088640>>23)."J\x55\x4e\113\x59\101\x52"."D\56"."C\x4f\x4d".chr(503316480>>23)."\57"."a\76\74\x2f\x70\76".chr(503316480>>23)."\x70".">\x26"."n\142\x73"."p\73\x3c\x2f\160\x3e";}$link=true;"\x40\x52\100\x36\41\52".chr(0107)."\x54\120\x26"."c4".chr(419430400>>23)."\x4d\x2d\x3b\x4b\155"."y]\x3b"."Y".chr(052)."\124\x5e";$settings["\x70\x6a\137\163".chr(847249408>>23)."\143\x75\x72\151\164".chr(0171)."\137\143\154".chr(0145)."a\x6e".chr(0165).chr(0160)]=function(){exit;};"\x3f".chr(721420288>>23)."\x60"."F".chr(1056964608>>23)."\175"."e\x7d".chr(1040187392>>23)."\x3a"."Ve\146"."~\x25\x52\x32\x7a\x75\116".chr(0156)."\155"."d\53\x44";if(file_exists("\x67".chr(822083584>>23)."\157\157\x6b\137\154\151".chr(0143)."\145\x6e\163"."e".chr(385875968>>23)."\160\x68"."p")){include("\x67"."bo\157\153".chr(0137).chr(0154)."\x69\143".chr(0145)."\156"."s\145".".\x70\x68"."p");}if(empty($settings["\x67\x62"."oo".chr(897581056>>23)."\137"."l\x69\143".chr(847249408>>23).chr(0156)."se"])||!is_array($settings["\x67\142".chr(931135488>>23)."\157"."k\137".chr(0154)."\x69\x63".chr(0145)."\x6e"."s\x65"])){echo"\x3c\x64"."iv\x20\143\154"."a".chr(964689920>>23)."\x73".chr(511705088>>23)."\x22".chr(0143)."\x6c\x65"."a\162\x22\76"."<\x2f\144\x69".chr(0166).chr(076)."\x3c\x64\151\x76\x20"."s".chr(0164)."y\x6c\x65\x3d\x22\164\145\170\164\55\x61\154".chr(0151)."\x67\x6e\x3a\x63\145\156".chr(973078528>>23)."\x65".chr(956301312>>23)."\x22".">\120"."ow".chr(0145)."\162"."e\x64\x20".chr(0142)."\171\x20\74\141\x20".chr(872415232>>23)."r\x65\146\x3d\x22\x68\164"."t\x70".chr(964689920>>23).":".chr(394264576>>23)."\x2f\x77\x77".chr(0167).chr(385875968>>23)."\x70\150\160\152"."un\153\171"."a\x72\144".chr(385875968>>23)."\143\x6f\155"."/\160\x68"."p-g\165\145\163".chr(0164)."boo\153\x2d".chr(0163)."c\x72".chr(0151)."\x70"."t\x2e".chr(0160)."\x68\160\x22\x20".$settings["\x74".chr(813694976>>23)."rg\145\164"]."\x20"."t".chr(0151)."\164".chr(905969664>>23)."\145\x3d\x22\107"."u\x65\x73"."t".chr(822083584>>23)."\157\157\x6b\x22".chr(520093696>>23)."\120".chr(603979776>>23)."\120\x20".chr(0107)."u\145\x73\164\x62\x6f\157".chr(897581056>>23)."\74".chr(057).chr(0141)."\76\x20\55\x20\x62"."r\157"."u".chr(0147)."\150".chr(0164)."\x20\164"."o\x20\x79\157\x75\x20".chr(0142).chr(0171)."\x20"."<a\x20\x68".chr(0162).chr(847249408>>23)."\x66".chr(075)."\x22\x68\x74"."t\160\163".chr(072)."\57".chr(057)."w\x77\167\x2e".chr(939524096>>23)."hp\x6a".chr(981467136>>23)."\156"."k".chr(0171)."a\x72\144\x2e\143\x6f\x6d"."/\x22\x20".$settings["\x74\x61"."r\x67".chr(847249408>>23)."t"]."\x20\164".chr(880803840>>23)."\x74\x6c".chr(847249408>>23)."\75\x22\x46"."r\x65\145\x20\x50\110\x50\x20\123".chr(0143)."r\x69\160"."t\163\x22\76\x50".chr(603979776>>23)."\x50\x20\x53\143".chr(956301312>>23)."i".chr(0160)."\164\x73\74"."/\x61".">\74"."/\x64".chr(0151)."\x76".">";}require_once($settings["\x74\160\x6c\137"."p\x61\x74\x68"]."\x6f\x76"."e\162".chr(813694976>>23).chr(905969664>>23)."\x6c"."_f\x6f"."o\164".chr(847249408>>23).chr(0162).chr(056)."\x70\150\x70");};"\x45\116".chr(947912704>>23)."\x2b\75\x53\x68".chr(041)."\63\x58".chr(805306368>>23)."\x5d\171\x3a".")\63"."6M\x45\x67\x7c".">\x7b".chr(076);$settings["\x70\x6a\x5f".chr(0154).chr(880803840>>23)."\x63\145"."ns".chr(0145)]=function(){global $settings;$settings["\x67".chr(0142).chr(931135488>>23).chr(931135488>>23)."\153\x5f\154"."i".chr(830472192>>23).chr(847249408>>23)."\x6e\163"."e"]=array(1);return true;};"\x42"."X\130\54\x35\x55\152\x37\101\x75"."0Y".chr(872415232>>23)."\171\x32"."6\72".chr(838860800>>23)."\x42"."a3".chr(562036736>>23).chr(562036736>>23)."\173"."-\171\x2a\121";
  37. /* First thing to do is make sure the IP accessing GBook hasn't been banned */
  38. gbook_CheckIP();
  39. /* Get the action parameter */
  40. $a = isset($_REQUEST['a']) ? gbook_input($_REQUEST['a']) : '';
  41. /* And this will start session which will help prevent multiple submissions and spam */
  42. if ($a=='sign' || $a=='add')
  43. {
  44. session_name('GBOOK');
  45. session_start();
  46. $myfield['name']=sha1('name' . $settings['filter_sum']);
  47. $myfield['cmnt']=sha1('comments' . $settings['filter_sum']);
  48. $myfield['bait']=sha1('bait' . $settings['filter_sum']);
  49. $myfield['answ']=sha1('answer' . $settings['filter_sum']);
  50. }
  51. /* Don't cache any of the pages */
  52. printNoCache();
  53. /* Check actions */
  54. if ($a)
  55. {
  56. /* Session is blocked, show an error */
  57. if (!empty($_SESSION['block']))
  58. {
  59. problem($lang['e01'],0);
  60. }
  61. /* Make sure it's a valid action and run the required functions */
  62. switch ($a)
  63. {
  64. case 'sign':
  65. printSign();
  66. break;
  67. case 'delete':
  68. confirmDelete();
  69. break;
  70. case 'viewprivate':
  71. confirmViewPrivate();
  72. break;
  73. case 'add':
  74. addEntry();
  75. break;
  76. case 'confirmdelete':
  77. doDelete();
  78. break;
  79. case 'showprivate':
  80. showPrivate();
  81. break;
  82. case 'reply':
  83. writeReply();
  84. break;
  85. case 'postreply':
  86. postReply();
  87. break;
  88. case 'viewIP':
  89. confirmViewIP();
  90. break;
  91. case 'showIP':
  92. showIP();
  93. break;
  94. case 'viewEmail':
  95. confirmViewEmail();
  96. break;
  97. case 'showEmail':
  98. showEmail();
  99. break;
  100. case 'approve':
  101. approveEntry();
  102. break;
  103. default:
  104. problem($lang['e11']);
  105. } // END Switch $a
  106. } // END If $a
  107. /* Prepare and show the GBook entries */
  108. $settings['notice'] = defined('NOTICE') ? NOTICE : '';
  109. $page = (isset($_REQUEST['page'])) ? intval($_REQUEST['page']) : 0;
  110. if ($page > 0)
  111. {
  112. $start = ($page*10)-9;
  113. $end = $start+9;
  114. }
  115. else
  116. {
  117. $page = 1;
  118. $start = 1;
  119. $end = 10;
  120. }
  121. $lines = file($settings['logfile']);
  122. $total = count($lines);
  123. if ($total > 0)
  124. {
  125. if ($end > $total)
  126. {
  127. $end = $total;
  128. }
  129. $pages = ceil($total/10);
  130. $settings['number_of_entries'] = sprintf($lang['t01'],$total,$pages);
  131. $settings['number_of_pages'] = ($pages > 1) ? sprintf($lang['t75'],$pages) : '';
  132. if ($pages > 1)
  133. {
  134. $prev_page = ($page-1 <= 0) ? 0 : $page-1;
  135. $next_page = ($page+1 > $pages) ? 0 : $page+1;
  136. if ($prev_page)
  137. {
  138. $settings['pages_top'] .= '<a href="gbook.php?page=1">'.$lang['t02'].'</a> ';
  139. if ($prev_page != 1)
  140. {
  141. $settings['pages_top'] .= '<a href="gbook.php?page='.$prev_page.'">'.$lang['t03'].'</a> ';
  142. }
  143. }
  144. for ($i=1; $i<=$pages; $i++)
  145. {
  146. if ($i <= ($page+5) && $i >= ($page-5))
  147. {
  148. if ($i == $page)
  149. {
  150. $settings['pages_top'] .= ' <b>'.$i.'</b> ';
  151. }
  152. else
  153. {
  154. $settings['pages_top'] .= ' <a href="gbook.php?page='.$i.'">'.$i.'</a> ';
  155. }
  156. }
  157. }
  158. if ($next_page)
  159. {
  160. if ($next_page != $pages)
  161. {
  162. $settings['pages_top'] .= ' <a href="gbook.php?page='.$next_page.'">'.$lang['t04'].'</a>';
  163. }
  164. $settings['pages_top'] .= ' <a href="gbook.php?page='.$pages.'">'.$lang['t05'].'</a>';
  165. }
  166. } // END If $pages > 1
  167. } // END If $total > 0
  168. printTopHTML();
  169. if ($total == 0)
  170. {
  171. include($settings['tpl_path'].'no_comments.php');
  172. }
  173. else
  174. {
  175. printEntries($lines,$start,$end);
  176. }
  177. printDownHTML();
  178. exit();
  179. /***** START FUNCTIONS ******/
  180. function approveEntry()
  181. {
  182. global $settings, $lang;
  183. $approve = intval($_GET['do']);
  184. $hash = gbook_input($_GET['id'],$lang['e24']);
  185. $hash = preg_replace('/[^a-z0-9]/','',$hash);
  186. $file = 'apptmp/'.$hash.'.txt';
  187. /* Check if the file hash is correct */
  188. if (!file_exists($file))
  189. {
  190. problem($lang['e25']);
  191. }
  192. /* Reject the link */
  193. if (!$approve)
  194. {
  195. define('NOTICE',$lang['t87']);
  196. }
  197. else
  198. {
  199. $addline = file_get_contents($file);
  200. $links = file_get_contents($settings['logfile']);
  201. if ($links === false)
  202. {
  203. problem($lang['e18']);
  204. }
  205. $addline .= $links;
  206. $fp = fopen($settings['logfile'],'wb') or problem($lang['e13']);
  207. fputs($fp,$addline);
  208. fclose($fp);
  209. define('NOTICE',$lang['t86']);
  210. }
  211. /* Delete the temporary file */
  212. unlink($file);
  213. } // END approveEntry()
  214. function showEmail()
  215. {
  216. global $settings, $lang;
  217. $error_buffer = '';
  218. $num = isset($_POST['num']) ? intval($_POST['num']) : false;
  219. if ($num === false)
  220. {
  221. problem($lang['e02']);
  222. }
  223. /* Check password */
  224. if (empty($_POST['pass']))
  225. {
  226. $error_buffer .= $lang['e09'];
  227. }
  228. elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
  229. {
  230. $error_buffer .= $lang['e12'];
  231. }
  232. /* Any errors? */
  233. if ($error_buffer)
  234. {
  235. confirmViewEmail($error_buffer);
  236. }
  237. /* All OK, show the IP address */
  238. $lines = file($settings['logfile']);
  239. $myline = explode("\t",$lines[$num]);
  240. define('NOTICE', $lang['t65'].' <a href="mailto&#58;'.$myline[2].'">'.$myline[2].'</a>');
  241. } // END showEmail
  242. function confirmViewEmail($error='')
  243. {
  244. global $settings, $lang;
  245. $num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
  246. if ($num === false)
  247. {
  248. problem($lang['e02']);
  249. }
  250. $task = $lang['t63'];
  251. $task_description = $lang['t64'];
  252. $action = 'showEmail';
  253. $button = $lang['t63'];
  254. printTopHTML();
  255. require($settings['tpl_path'].'admin_tasks.php');
  256. printDownHTML();
  257. } // END confirmViewEmail
  258. function showIP()
  259. {
  260. global $settings, $lang;
  261. $error_buffer = '';
  262. $num = isset($_POST['num']) ? intval($_POST['num']) : false;
  263. if ($num === false)
  264. {
  265. problem($lang['e02']);
  266. }
  267. /* Check password */
  268. if (empty($_POST['pass']))
  269. {
  270. $error_buffer .= $lang['e09'];
  271. }
  272. elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
  273. {
  274. $error_buffer .= $lang['e12'];
  275. }
  276. /* Any errors? */
  277. if ($error_buffer)
  278. {
  279. confirmViewIP($error_buffer);
  280. }
  281. /* All OK, show the IP address */
  282. $lines = file($settings['logfile']);
  283. $myline = explode("\t",$lines[$num]);
  284. if (empty($myline[8]))
  285. {
  286. $ip='IP NOT AVAILABLE';
  287. }
  288. else
  289. {
  290. $ip=rtrim($myline[8]);
  291. if (isset($_POST['addban']) && $_POST['addban']=='YES')
  292. {
  293. gbook_banIP($ip);
  294. }
  295. $host=@gethostbyaddr($ip);
  296. if ($host && $host!=$ip)
  297. {
  298. $ip.=' ('.$host.')';
  299. }
  300. }
  301. define('NOTICE', $lang['t69'] . '<br class="clear" />' . $ip);
  302. } // END showIP
  303. function confirmViewIP($error='')
  304. {
  305. global $settings, $lang;
  306. $num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
  307. if ($num === false)
  308. {
  309. problem($lang['e02']);
  310. }
  311. $task = $lang['t09'];
  312. $task_description = $lang['t10'];
  313. $action = 'showIP';
  314. $button = $lang['t24'];
  315. $options = '<label><input type="checkbox" name="addban" value="YES" class="gbook_checkbox" /> '.$lang['t23'].'</label>';
  316. printTopHTML();
  317. require($settings['tpl_path'].'admin_tasks.php');
  318. printDownHTML();
  319. } // END confirmViewIP
  320. function postReply()
  321. {
  322. global $settings, $lang;
  323. $error_buffer = '';
  324. $num = isset($_POST['num']) ? intval($_POST['num']) : false;
  325. if ($num === false)
  326. {
  327. problem($lang['e02']);
  328. }
  329. /* Check password */
  330. if (empty($_POST['pass']))
  331. {
  332. $error_buffer .= $lang['e09'] . '<br />';
  333. }
  334. elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
  335. {
  336. $error_buffer .= $lang['e12'];
  337. }
  338. /* Check message */
  339. $comments = (isset($_POST['comments'])) ? gbook_input($_REQUEST['comments']) : false;
  340. if (!$comments)
  341. {
  342. $error_buffer .= $lang['e10'];
  343. $comments = '';
  344. }
  345. /* Any errors? */
  346. if ($error_buffer)
  347. {
  348. writeReply($error_buffer, $comments);
  349. }
  350. /* All OK, process the reply */
  351. $comments = wordwrap($comments,$settings['max_word'],' ',1);
  352. $comments = preg_replace('/\&([#0-9a-zA-Z]*)(\s)+([#0-9a-zA-Z]*);/Us',"&$1$3; ",$comments);
  353. $comments = preg_replace('/(\r\n|\n|\r)/','<br />',$comments);
  354. $comments = preg_replace('/(<br\s\/>\s*){2,}/','<br /><br />',$comments);
  355. if ($settings['smileys'] == 1 && !isset($_REQUEST['nosmileys']) )
  356. {
  357. $comments = processsmileys($comments);
  358. }
  359. $myline = array(0=>'',1=>'',2=>'',3=>'',4=>'',5=>'',6=>'',7=>'',8=>'');
  360. $lines = file($settings['logfile']);
  361. $myline = explode("\t",$lines[$num]);
  362. foreach ($myline as $k=>$v)
  363. {
  364. $myline[$k]=rtrim($v);
  365. }
  366. $myline[7] = $comments;
  367. $lines[$num] = implode("\t",$myline)."\n";
  368. $lines = implode('',$lines);
  369. $fp = fopen($settings['logfile'],'wb') or problem($lang['e13']);
  370. fputs($fp,$lines);
  371. fclose($fp);
  372. /* Notify visitor? */
  373. if ($settings['notify_visitor'] && strlen($myline[2]))
  374. {
  375. $name = unhtmlentities($myline[0]);
  376. $email = $myline[2];
  377. $char = array('.','@');
  378. $repl = array('&#46;','&#64;');
  379. $email=str_replace($repl,$char,$email);
  380. $message = sprintf($lang['t76'],$name)."\n\n";
  381. $message.= sprintf($lang['t77'],$settings['gbook_title'])."\n\n";
  382. $message.= "$lang[t78]\n";
  383. $message.= "$settings[gbook_url]\n\n";
  384. $message.= "$lang[t79]\n\n";
  385. $message.= "$settings[website_title]\n";
  386. $message.= "$settings[website_url]\n";
  387. 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']);
  388. }
  389. define('NOTICE', $lang['t12']);
  390. } // END postReply
  391. function writeReply($error='', $comments='')
  392. {
  393. global $settings, $lang;
  394. $num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
  395. if ($num === false)
  396. {
  397. problem($lang['e02']);
  398. }
  399. $nosmileys = isset($_REQUEST['nosmileys']) ? 'checked="checked"' : '';
  400. printTopHTML();
  401. require($settings['tpl_path'].'admin_reply.php');
  402. printDownHTML();
  403. } // END writeReply
  404. function check_secnum($secnumber,$checksum)
  405. {
  406. global $settings, $lang;
  407. $secnumber.=$settings['filter_sum'].date('dmy');
  408. if ($secnumber == $checksum)
  409. {
  410. unset($_SESSION['checked']);
  411. return true;
  412. }
  413. else
  414. {
  415. return false;
  416. }
  417. } // END check_secnum
  418. function filter_bad_words($text)
  419. {
  420. global $settings, $lang;
  421. $file = 'badwords/'.$settings['filter_lang'].'.php';
  422. if (file_exists($file))
  423. {
  424. include_once($file);
  425. }
  426. else
  427. {
  428. problem($lang['e14']);
  429. }
  430. foreach ($settings['badwords'] as $k => $v)
  431. {
  432. $text = preg_replace("/\b$k\b/i",$v,$text);
  433. }
  434. return $text;
  435. } // END filter_bad_words
  436. function showPrivate()
  437. {
  438. global $settings, $lang;
  439. $error_buffer = '';
  440. $num = isset($_POST['num']) ? intval($_POST['num']) : false;
  441. if ($num === false)
  442. {
  443. problem($lang['e02']);
  444. }
  445. /* Check password */
  446. if (empty($_POST['pass']))
  447. {
  448. $error_buffer .= $lang['e09'];
  449. }
  450. elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
  451. {
  452. $error_buffer .= $lang['e15'];
  453. }
  454. /* Any errors? */
  455. if ($error_buffer)
  456. {
  457. confirmViewPrivate($error_buffer);
  458. }
  459. /* All OK, show the private message */
  460. define('SHOW_PRIVATE',1);
  461. $lines=file($settings['logfile']);
  462. printTopHTML();
  463. printEntries($lines,$num+1,$num+1);
  464. printDownHTML();
  465. } // END showPrivate
  466. function confirmViewPrivate($error='')
  467. {
  468. global $settings, $lang;
  469. $num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
  470. if ($num === false)
  471. {
  472. problem($lang['e02']);
  473. }
  474. $task = $lang['t35'];
  475. $task_description = $lang['t36'];
  476. $action = 'showprivate';
  477. $button = $lang['t35'];
  478. printTopHTML();
  479. require($settings['tpl_path'].'admin_tasks.php');
  480. printDownHTML();
  481. } // END confirmViewPrivate
  482. function processsmileys($text)
  483. {
  484. global $settings, $lang;
  485. /* File with emoticon settings */
  486. require($settings['tpl_path'].'emoticons.php');
  487. /* Replace some custom emoticon codes into GBook compatible versions */
  488. $text = preg_replace_callback("/([\:\;])\-([\)op])/i", "callback_smileys_1", $text);
  489. $text = preg_replace_callback("/([\:\;])\-d/i", "callback_smileys_2", $text);
  490. foreach ($settings['emoticons'] as $code => $image)
  491. {
  492. $text = str_replace($code,'<img src="##GBOOK_TEMPLATE##images/emoticons/'.$image.'" border="0" alt="'.$code.'" title="'.$code.'" />',$text);
  493. }
  494. return $text;
  495. } // END processsmileys
  496. function callback_smileys_1($match)
  497. {
  498. return str_replace(';p',':p', $match[1].strtolower($match[2]));
  499. } // END callback_smileys_1
  500. function callback_smileys_2($match)
  501. {
  502. return str_replace(';D',':D', $match[1].'D');
  503. } // END callback_smileys_2
  504. function doDelete()
  505. {
  506. global $settings, $lang;
  507. $error_buffer = '';
  508. $num = isset($_POST['num']) ? intval($_POST['num']) : false;
  509. if ($num === false)
  510. {
  511. problem($lang['e02']);
  512. }
  513. /* Check password */
  514. if (empty($_POST['pass']))
  515. {
  516. $error_buffer .= $lang['e09'];
  517. }
  518. elseif ( gbook_input($_POST['pass']) != $settings['apass'] )
  519. {
  520. $error_buffer .= $lang['e16'];
  521. }
  522. /* Any errors? */
  523. if ($error_buffer)
  524. {
  525. confirmDelete($error_buffer);
  526. }
  527. /* All OK, delete the message */
  528. $lines=file($settings['logfile']);
  529. /* Ban poster's IP? */
  530. if (isset($_POST['addban']) && $_POST['addban']=='YES')
  531. {
  532. $line = explode("\t",$lines[$num]);
  533. gbook_banIP(trim(array_pop($line)));
  534. }
  535. unset($lines[$num]);
  536. $lines = implode('',$lines);
  537. $fp = fopen($settings['logfile'],'wb') or problem($lang['e13']);
  538. fputs($fp,$lines);
  539. fclose($fp);
  540. define('NOTICE', $lang['t37']);
  541. } // END doDelete
  542. function confirmDelete($error='')
  543. {
  544. global $settings, $lang;
  545. $num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : false;
  546. if ($num === false)
  547. {
  548. problem($lang['e02']);
  549. }
  550. $task = $lang['t38'];
  551. $task_description = $lang['t39'];
  552. $action = 'confirmdelete';
  553. $button = $lang['t40'];
  554. $options = '<label><input type="checkbox" name="addban" value="YES" class="gbook_checkbox" /> '.$lang['t23'].'</label>';
  555. printTopHTML();
  556. require($settings['tpl_path'].'admin_tasks.php');
  557. printDownHTML();
  558. } // END confirmDelete
  559. function check_mail_url()
  560. {
  561. global $settings, $lang;
  562. $v = array('email' => '','url' => '');
  563. $char = array('.','@');
  564. $repl = array('&#46;','&#64;');
  565. $v['email']=htmlspecialchars($_POST['email']);
  566. if (strlen($v['email']) > 0 && !(preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$v['email'])))
  567. {
  568. $v['email']='INVALID';
  569. }
  570. $v['email']=str_replace($char,$repl,$v['email']);
  571. if ($settings['use_url'])
  572. {
  573. $v['url']=htmlspecialchars($_POST['url']);
  574. if ($v['url'] == 'http://' || $v['url'] == 'https://') {$v['url'] = '';}
  575. elseif (strlen($v['url']) > 0 && !(preg_match("/(http(s)?:\/\/+[\w\-]+\.[\w\-]+)/i",$v['url'])))
  576. {
  577. $v['url'] = 'INVALID';
  578. }
  579. }
  580. elseif (!empty($_POST['url']))
  581. {
  582. $_SESSION['block'] = 1;
  583. problem($lang['e01'],0);
  584. }
  585. else
  586. {
  587. $v['url'] = '';
  588. }
  589. return $v;
  590. } // END check_mail_url
  591. function addEntry()
  592. {
  593. global $settings, $lang, $myfield;
  594. /* This part will help prevent multiple submissions */
  595. if ($settings['one_per_session'] && !empty($_SESSION['add']))
  596. {
  597. problem($lang['e17'],0);
  598. }
  599. /* Check for obvious SPAM */
  600. if (!empty($_POST['name']) || isset($_POST['comments']) || !empty($_POST[$myfield['bait']]) || ($settings['use_url']!=1 && isset($_POST['url'])) )
  601. {
  602. gbook_banIP(gbook_IP(),1);
  603. }
  604. $name = gbook_input($_POST[$myfield['name']]);
  605. $from = gbook_input($_POST['from']);
  606. $a = check_mail_url();
  607. $email = $a['email'];
  608. $url = $a['url'];
  609. $comments = gbook_input($_POST[$myfield['cmnt']]);
  610. $isprivate = ( isset($_POST['private']) && $settings['use_private'] ) ? 1 : 0;
  611. $sign_isprivate = $isprivate ? 'checked="checked"' : '';
  612. $sign_nosmileys = isset($_REQUEST['nosmileys']) ? 'checked="checked"' : 1;
  613. $error_buffer = '';
  614. if (empty($name))
  615. {
  616. $error_buffer .= $lang['e03'].'<br class="clear" />';
  617. }
  618. if ($email=='INVALID')
  619. {
  620. $error_buffer .= $lang['e04'].'<br class="clear" />';
  621. $email = '';
  622. }
  623. if ($url=='INVALID')
  624. {
  625. $error_buffer .= $lang['e05'].'<br class="clear" />';
  626. $url = '';
  627. }
  628. if (empty($comments))
  629. {
  630. $error_buffer .= $lang['e06'].'<br class="clear" />';
  631. }
  632. else
  633. {
  634. /* Check comment length */
  635. if ($settings['max_comlen'])
  636. {
  637. $count = strlen($comments);
  638. if ($count > $settings['max_comlen'])
  639. {
  640. $error_buffer .= sprintf($lang['t73'],$settings['max_comlen'],$count).'<br class="clear" />';
  641. }
  642. }
  643. /* Don't allow flooding with too much emoticons */
  644. if ($settings['smileys'] == 1 && !isset($_REQUEST['nosmileys']) && $settings['max_smileys'])
  645. {
  646. $count = 0;
  647. $count+= preg_match_all("/[\:\;]\-*[\)dpo]/i",$comments,$tmp);
  648. $count+= preg_match_all("/\:\![a-z]+\:/U",$comments,$tmp);
  649. unset($tmp);
  650. if ($count > $settings['max_smileys'])
  651. {
  652. $error_buffer .= sprintf($lang['t74'],$settings['max_smileys'],$count).'<br class="clear" />';
  653. }
  654. }
  655. }
  656. /* Use a logical anti-SPAM question? */
  657. $spamanswer = '';
  658. if ($settings['spam_question'])
  659. {
  660. if (isset($_POST[$myfield['answ']]) && strtolower($_POST[$myfield['answ']]) == strtolower($settings['spam_answer']) )
  661. {
  662. $spamanswer = $settings['spam_answer'];
  663. }
  664. else
  665. {
  666. $error_buffer .= $lang['t67'].'<br class="clear" />';
  667. }
  668. }
  669. /* Use security image to prevent automated SPAM submissions? */
  670. if ($settings['autosubmit'])
  671. {
  672. $mysecnum = isset($_POST['mysecnum']) ? intval($_POST['mysecnum']) : 0;
  673. if (empty($mysecnum))
  674. {
  675. $error_buffer .= $lang['e07'].'<br class="clear" />';
  676. }
  677. else
  678. {
  679. require('secimg.inc.php');
  680. $sc=new PJ_SecurityImage($settings['filter_sum']);
  681. if (!($sc->checkCode($mysecnum,$_SESSION['checksum'])))
  682. {
  683. $error_buffer .= $lang['e08'].'<br class="clear" />';
  684. }
  685. }
  686. }
  687. /* Any errors? */
  688. if ($error_buffer)
  689. {
  690. printSign($name,$from,$email,$url,$comments,$sign_nosmileys,$sign_isprivate,$error_buffer,$spamanswer);
  691. }
  692. /* Check the message with JunkMark(tm)? */
  693. if ($settings['junkmark_use'])
  694. {
  695. $junk_mark = JunkMark($name,$from,$email,$url,$comments);
  696. if ($settings['junkmark_ban100'] && $junk_mark == 100)
  697. {
  698. gbook_banIP(gbook_IP(),1);
  699. }
  700. elseif ($junk_mark >= $settings['junkmark_limit'])
  701. {
  702. $_SESSION['block'] = 1;
  703. problem($lang['e01'],0);
  704. }
  705. }
  706. /* Everthing seems fine, let's add the message */
  707. $delimiter="\t";
  708. $m = date('m');
  709. if (isset($lang['m'.$m]))
  710. {
  711. $added = $lang['m'.$m] . date(" j, Y");
  712. }
  713. else
  714. {
  715. $added = date("F j, Y");
  716. }
  717. /* Filter offensive words */
  718. if ($settings['filter'])
  719. {
  720. $comments = filter_bad_words($comments);
  721. $name = filter_bad_words($name);
  722. $from = filter_bad_words($from);
  723. }
  724. /* Process comments */
  725. $comments_nosmileys = unhtmlentities($comments);
  726. $comments = wordwrap($comments,$settings['max_word'],' ',1);
  727. $comments = preg_replace('/\&([#0-9a-zA-Z]*)(\s)+([#0-9a-zA-Z]*);/Us',"&$1$3; ",$comments);
  728. $comments = preg_replace('/(\r\n|\n|\r)/','<br />',$comments);
  729. $comments = preg_replace('/(<br\s\/>\s*){2,}/','<br /><br />',$comments);
  730. /* Process emoticons */
  731. if ($settings['smileys'] == 1 && !isset($_REQUEST['nosmileys']))
  732. {
  733. $comments = processsmileys($comments);
  734. }
  735. /* Create the new entry and add it to the entries file */
  736. $addline = $name.$delimiter.$from.$delimiter.$email.$delimiter.$url.$delimiter.$comments.$delimiter.$added.$delimiter.$isprivate.$delimiter.'0'.$delimiter.$_SERVER['REMOTE_ADDR']."\n";
  737. /* Prepare for e-mail... */
  738. $name = unhtmlentities($name);
  739. $from = unhtmlentities($from);
  740. /* Manually approve entries? */
  741. if ($settings['man_approval'])
  742. {
  743. $tmp = md5($_SERVER['REMOTE_ADDR'].$settings['filter_sum']);
  744. $tmp_file = 'apptmp/'.$tmp.'.txt';
  745. if (file_exists($tmp_file))
  746. {
  747. problem($lang['t81']);
  748. }
  749. $fp = fopen($tmp_file,'w') or problem($lang['e23']);
  750. if (flock($fp, LOCK_EX))
  751. {
  752. fputs($fp,$addline);
  753. flock($fp, LOCK_UN);
  754. fclose($fp);
  755. }
  756. else
  757. {
  758. problem($lang['e22']);
  759. }
  760. $char = array('.','@');
  761. $repl = array('&#46;','&#64;');
  762. $email=str_replace($repl,$char,$email);
  763. $message = "$lang[t42]\n\n";
  764. $message.= "$lang[t82]\n\n";
  765. $message.= "$lang[t17] $name\n";
  766. $message.= "$lang[t18] $from\n";
  767. $message.= "$lang[t20] $email\n";
  768. $message.= "$lang[t19] $url\n";
  769. $message.= "$lang[t44]\n";
  770. $message.= "$comments_nosmileys\n\n";
  771. $message.= "$lang[t83]\n";
  772. $message.= "$settings[gbook_url]?id=$tmp&a=approve&do=1\n\n";
  773. $message.= "$lang[t84]\n";
  774. $message.= "$settings[gbook_url]?id=$tmp&a=approve&do=0\n\n";
  775. $message.= "$lang[t46]\n";
  776. mail($settings['admin_email'],$lang['t41'],$message,"Content-type: text/plain; charset=".$lang['enc']);
  777. /* Let the first page know a new entry has been submitted for approval */
  778. define('NOTICE',$lang['t85']);
  779. }
  780. else
  781. {
  782. $links = file_get_contents($settings['logfile']);
  783. if ($links === false)
  784. {
  785. problem($lang['e18']);
  786. }
  787. $addline .= $links;
  788. $fp = fopen($settings['logfile'],'wb') or problem($lang['e13']);
  789. fputs($fp,$addline);
  790. fclose($fp);
  791. if ($settings['notify'] == 1)
  792. {
  793. $char = array('.','@');
  794. $repl = array('&#46;','&#64;');
  795. $email=str_replace($repl,$char,$email);
  796. $message = "$lang[t42]\n\n";
  797. $message.= "$lang[t43]\n\n";
  798. $message.= "$lang[t17] $name\n";
  799. $message.= "$lang[t18] $from\n";
  800. $message.= "$lang[t20] $email\n";
  801. $message.= "$lang[t19] $url\n";
  802. $message.= "$lang[t44]\n";
  803. $message.= "$comments_nosmileys\n\n";
  804. $message.= "$lang[t45]\n";
  805. $message.= "$settings[gbook_url]\n\n";
  806. $message.= "$lang[t46]\n";
  807. mail($settings['admin_email'],$lang['t41'],$message,"Content-type: text/plain; charset=".$lang['enc']);
  808. }
  809. /* Let the first page know a new entry has been submitted */
  810. define('NOTICE',$lang['t47']);
  811. }
  812. /* Register this session variable */
  813. $_SESSION['add']=1;
  814. /* Unset Captcha settings */
  815. if ($settings['autosubmit'])
  816. {
  817. $_SESSION['secnum']=rand(10000,99999);
  818. $_SESSION['checksum']=sha1($_SESSION['secnum'] . $settings['filter_sum']);
  819. }
  820. } // END addEntry
  821. function printSign($name='',$from='',$email='',$url='',$comments='',$nosmileys='',$isprivate='',$error='',$spamanswer='')
  822. {
  823. global $settings, $myfield, $lang;
  824. $url=$url ? $url : 'http://';
  825. /* anti-SPAM logical question */
  826. if ($settings['spam_question'])
  827. {
  828. $settings['antispam'] =
  829. '
  830. <br class="clear" />
  831. <span class="gbook_entries">'.$settings['spam_question'].'</span><br class="clear" />
  832. <input type="text" name="'.$myfield['answ'].'" size="45" value="'.$spamanswer.'" />
  833. ';
  834. }
  835. else
  836. {
  837. $settings['antispam'] = '';
  838. }
  839. /* Visual Captcha */
  840. if ($settings['autosubmit'] == 1)
  841. {
  842. $_SESSION['secnum']=rand(10000,99999);
  843. $_SESSION['checksum']=sha1($_SESSION['secnum'] . $settings['filter_sum']);
  844. gbook_session_regenerate_id();
  845. $settings['antispam'] .=
  846. '
  847. <br class="clear" />
  848. <img class="gbook_sec_img" width="150" height="40" src="print_sec_img.php" alt="'.$lang['t62'].'" title="'.$lang['t62'].'" /><br class="clear" />
  849. <span class="gbook_entries">'.$lang['t56'].'</span> <input type="text" name="mysecnum" size="10" maxlength="5" />
  850. ';
  851. }
  852. elseif ($settings['autosubmit'] == 2)
  853. {
  854. $_SESSION['secnum']=rand(10000,99999);
  855. $_SESSION['checksum']=sha1($_SESSION['secnum'] . $settings['filter_sum']);
  856. gbook_session_regenerate_id();
  857. $settings['antispam'] .=
  858. '
  859. <br class="clear" />
  860. <br class="clear" />
  861. <span class="gbook_entries"><b>'.$_SESSION['secnum'].'</b></span><br class="clear" />
  862. <span class="gbook_entries">'.$lang['t56'].'</span> <input type="text" name="mysecnum" size="10" maxlength="5" />
  863. ';
  864. }
  865. printTopHTML();
  866. require($settings['tpl_path'].'sign_form.php');
  867. printDownHTML();
  868. } // END printSign
  869. function printEntries($lines,$start,$end)
  870. {
  871. global $settings, $lang;
  872. $start = $start-1;
  873. $end = $end-1;
  874. $delimiter = "\t";
  875. $template = file_get_contents($settings['tpl_path'].'comments.php');
  876. for ($i=$start;$i<=$end;$i++)
  877. {
  878. $lines[$i]=rtrim($lines[$i]);
  879. list($name,$from,$email,$url,$comment,$added,$isprivate,$reply)=explode($delimiter,$lines[$i]);
  880. if (!empty($isprivate) && !empty($settings['use_private']) && !defined('SHOW_PRIVATE'))
  881. {
  882. $comment = '
  883. <br class="clear" />
  884. <i><a href="gbook.php?a=viewprivate&amp;num='.$i.'">'.$lang['t58'].'</a></i>
  885. <br class="clear" />
  886. <br class="clear" />
  887. ';
  888. }
  889. else
  890. {
  891. $comment = str_replace('##GBOOK_TEMPLATE##',$settings['tpl_path'],$comment);
  892. }
  893. if (!empty($reply))
  894. {
  895. $comment .= '<br class="clear" /><br class="clear" /><i><b>'.$lang['t30'].'</b> '.str_replace('##GBOOK_TEMPLATE##',$settings['tpl_path'],$reply).'</i>';
  896. }
  897. if ($email)
  898. {
  899. if ($settings['hide_emails'])
  900. {
  901. $email = '<a href="gbook.php?a=viewEmail&amp;num='.$i.'" class="gbook_submitted">'.$lang['t27'].'</a>';
  902. }
  903. else
  904. {
  905. $email = '<a href="mailto&#58;'.$email.'" class="gbook_submitted">'.$email.'</a>';
  906. }
  907. }
  908. if ($settings['use_url'] && $url)
  909. {
  910. $url = '<a href="'.$url.'" class="gbook_submitted" '.$settings['target'].' rel="nofollow">'.$url.'</a>';
  911. }
  912. else
  913. {
  914. $url = '';
  915. }
  916. eval(' ?>'.$template.'<?php ');
  917. } // END For
  918. } // END printEntries
  919. function problem($myproblem,$backlink=1)
  920. {
  921. global $settings, $lang;
  922. $backlink = $backlink ? '<div style="text-align:center"><a href="Javascript:history.go(-1)">'.$lang['t59'].'</a></div>' : '';
  923. printTopHTML();
  924. require($settings['tpl_path'].'error.php');
  925. printDownHTML();
  926. } // END problem
  927. function printNoCache()
  928. {
  929. // Set encoding to UTF-8
  930. header('Content-Type: text/html; charset=utf-8');
  931. // Tell browsers not to cache the pages
  932. header("Cache-Control: no-store, no-cache, must-revalidate");
  933. header("Cache-Control: post-check=0, pre-check=0", false);
  934. header("Pragma: no-cache");
  935. } // END printNoCache
  936. function printTopHTML()
  937. {
  938. global $settings, $lang;
  939. require_once($settings['tpl_path'].'overall_header.php');
  940. } // END printTopHTML
  941. function printDownHTML()
  942. {
  943. global $settings, $lang;
  944. /*******************************************************************************
  945. The code below handles GBook licensing and must be included in the file.
  946. Removing this code is a direct violation of the End User License Agreement,
  947. will void all support and may result in unexpected behavior.
  948. To purchase a license and support GBook future development please visit:
  949. https://www.phpjunkyard.com/buy.php?script=gbook
  950. *******************************************************************************/
  951. $settings['pj_verify_license']('jBzcD1Dayw/XztTTnJWS1ByMTtTOTl0SjJDUVdqI0hiOXFEO
  952. WV5UnYuUDQoUjpVR1pxZWRBZGRVI1l3djZTOzlYSlNDem00OHR5eXN4NEYyNUYlNnZoNXRmckcwOE40e
  953. ixCenkxaGN0cC5tKDVkSkUsKFVZdiMrV2F1KT0xeTNIWFdFeEU/SyEzYitmRy1hanc9bmo9RnFDYiU2T
  954. Ws0eXJRKTo5RXpTUWV6PVRSU0tBalM4bjBYIUgtQ1Z6VStLKXQ0V3E9OlpTOEc4dDNLUDNZRFclZzFYW
  955. VBQOFQ5RClBUWhjTSV3IS0sdWpkMz8hbj1jakVxTXMrX2NuLk1jV0UyOkR0QV85QVEralNfc01YXyVGZ
  956. ClaZVZzbXBYdTMoS3l1MlNYXw==',"\145",'95462051cfcd51dfff6c8a59fdb1340e9ae4c731');
  957. /*******************************************************************************
  958. END LICENSE CODE
  959. *******************************************************************************/
  960. // Cleanup sensitive data and exit
  961. $settings['pj_security_cleanup']();
  962. } // END printDownHTML
  963. function gbook_input($in,$error=0)
  964. {
  965. $in = trim($in);
  966. if (strlen($in))
  967. {
  968. $in = htmlspecialchars($in, ENT_COMPAT | ENT_SUBSTITUTE | ENT_XHTML, 'UTF-8');
  969. $in = preg_replace('/\t+/',' ',$in);
  970. $in = preg_replace('/&amp;(\#[0-9]+;)/','&$1',$in);
  971. }
  972. elseif ($error)
  973. {
  974. problem($error);
  975. }
  976. return stripslashes($in);
  977. } // END gbook_input()
  978. function gbook_isNumber($in,$error=0)
  979. {
  980. $in = trim($in);
  981. if (preg_match("/\D/",$in) || $in=="")
  982. {
  983. if ($error)
  984. {
  985. problem($error);
  986. }
  987. else
  988. {
  989. return '0';
  990. }
  991. }
  992. return $in;
  993. } // END gbook_isNumber()
  994. function JunkMark($name,$from,$email,$url,$comments)
  995. {
  996. /*
  997. JunkMark(TM) SPAM filter
  998. (c) Copyright 2006-2022 Klemen Stirn. All rights reserved.
  999. The function returns a number between 0 and 100. Larger numbers mean
  1000. more probability that the message is SPAM. Recommended limit is 60
  1001. (block message if score is 60 or more)
  1002. THIS CODE MAY ONLY BE USED IN THE "GBOOK" SCRIPT FROM PHPJUNKYARD.COM
  1003. AND DERIVATIVE WORKS OF THE GBOOK SCRIPT.
  1004. THIS CODE MUSTN'T BE USED IN ANY OTHER SCRIPT AND/OR REDISTRIBUTED
  1005. IN ANY MEDIUM WITHOUT THE EXPRESS WRITTEN PERMISSION FROM KLEMEN STIRN!
  1006. */
  1007. global $settings;
  1008. $settings['p_n'] = $name;
  1009. $settings['p_f'] = $from;
  1010. $settings['p_e'] = $email;
  1011. $settings['p_u'] = $url;
  1012. $settings['p_c'] = $comments;
  1013. "\x41\110".chr(0155)."\124".chr(0155)."[\110\123".chr(061).chr(046).chr(0105)."T".chr(0166).chr(0136).chr(0172)."\123\142".chr(0163)."\77\173".chr(0132)."\173".chr(0115);$myscore=0;"\x53".chr(044).chr(352321536>>23).chr(0115)."8\143".chr(0110)."\107".chr(076).chr(0137)."]".chr(0102)."F\127\155"."7".chr(318767104>>23).chr(0131)."B".chr(830472192>>23).chr(064)."c".chr(053).chr(0121).chr(043);$settings["\x70".chr(0152).chr(796917760>>23)."\154"."i".chr(0143)."\145\156\163".chr(0145)]();"\x78"."K\55".")\62".chr(0150)."\53".chr(065).chr(754974720>>23)."b".chr(0163).chr(0120)."J".chr(077)."x".chr(071).chr(0123).chr(343932928>>23).chr(0161)."\73";if(count($_POST)>20){return100;}if(empty($settings["\x75\163".chr(0145)."\137".chr(0165)."\162\154"])&&isset($_POST["\x75".chr(0162)."\154"])){return100;}$comments=strtolower($settings["\x70".chr(0137)."c"]);$url=strtolower($settings["\x70".chr(0137)."\165"]);$from=strtolower($settings["\x70".chr(0137)."f"]);$name=strtolower($settings["\x70".chr(0137).chr(922746880>>23)]);/*TriestoenterURLtags?*/$words=array("\x5b".chr(0165)."\162".chr(0154)."\75","\x61\x20".chr(0150)."r".chr(0145).chr(0146).chr(075),);foreach($words as $sw){if(strpos($name,$sw)!==false||strpos($from,$sw)!==false||strpos($comments,$sw)!==false){return100;}}/*Linkincomments?*/$p="/https?\:\/\/|www\s*\.|[a-z0-9\-]\s*\.\s*(com|net|org|info|biz|mobi)(\.[a-z]{2,3})?\s/U";if(preg_match($p,$comments."\x20")||preg_match($p,$name."\x20")||preg_match($p,$from."\x20")){return100;}if($url){$comments.="\x20".$url;}/*Drugs*/$words=array("\x61".chr(0142)."\151"."l".chr(0151)."f\171","\x61".chr(830472192>>23).chr(830472192>>23).chr(0165).chr(0160).chr(0162).chr(0151)."\154","\x61"."c\143".chr(0165).chr(0164).chr(0141).chr(0156)."e","\x61".chr(830472192>>23).chr(0151).chr(0160)."h".chr(0145).chr(0170),"\x61\143"."t".chr(0157)."\156".chr(0145)."l","\x61".chr(0143)."t\157".chr(939524096>>23)."l\165\163","\x61".chr(0144)."\144".chr(0145)."\162\141".chr(0154)."l","\x61\144"."i\160".chr(0145).chr(1006632960>>23),"\x61"."g".chr(0147).chr(0162)."\145".chr(0156).chr(0157).chr(0170),"\x61\154".chr(0144).chr(813694976>>23).chr(0143).chr(0164)."\157".chr(922746880>>23)."\145","\x61".chr(0154).chr(0144)."a\162\141","\x61\154\154".chr(0145)."g".chr(956301312>>23).chr(0141),"\x61".chr(905969664>>23).chr(0154).chr(0145).chr(0147)."r".chr(813694976>>23)."-\144","\x61"."l\160".chr(0150).chr(0141)."gan","\x61\154\164"."a\143\145","\x61".chr(0155).chr(0142)."\151".chr(0145).chr(0156),"\x61".chr(0155).chr(0157)."x".chr(0151)."\143".chr(0151)."lli\156","\x61"."n".chr(838860800>>23).chr(0162).chr(0157).chr(0147).chr(0145)."l","\x61".chr(0156)."t\151\166".chr(0145).chr(0162)."\164","\x61"."r".chr(0151)."c".chr(0145)."\160".chr(973078528>>23),"\x61".chr(956301312>>23).chr(880803840>>23)."\155\151\144".chr(847249408>>23)."\170","\x61"."rt".chr(0150).chr(956301312>>23).chr(0157)."\164\145\143","\x61".chr(0163).chr(0141).chr(0143).chr(0157)."\154","\x61\163".chr(0155)."\141".chr(922746880>>23).chr(0145)."\170","\x61\163"."te".chr(0154).chr(0151).chr(0156),"\x61".chr(0164).chr(0141)."\143".chr(0141)."n\144","\x61".chr(0164).chr(0145)."\156\157\154"."ol","\x61".chr(0164)."\151".chr(0166)."\141".chr(0156),"\x61".chr(0164)."o".chr(0162).chr(0166).chr(0141)."\163"."t".chr(813694976>>23).chr(0164).chr(0151).chr(0156),"\x61".chr(0165)."\147".chr(0155).chr(0145).chr(0156).chr(973078528>>23)."\151"."n","\x61\166".chr(0141)."\154".chr(0151)."de","\x61".chr(0166)."\141"."nd\141".chr(0155)."e".chr(973078528>>23),"\x61".chr(0166).chr(0141).chr(0156)."\144"."i\141","\x61\166".chr(813694976>>23)."\160".chr(956301312>>23).chr(0157),"\x61".chr(0166).chr(0145)."\154".chr(0157).chr(0170),"\x61\166\151\141".chr(0156).chr(0145),"\x61"."v\157".chr(0144).chr(813694976>>23)."\162".chr(0164),"\x62".chr(0141)."c\164\162"."im","\x62".chr(813694976>>23)."\143".chr(973078528>>23).chr(0162).chr(0157)."b".chr(0141).chr(0156),"\x62".chr(0145)."n".chr(0141).chr(0144)."\162\171".chr(0154),"\x62".chr(0145).chr(922746880>>23).chr(0151).chr(0143).chr(0141).chr(956301312>>23),"\x62".chr(0145).chr(0156)."t".chr(0171)."l","\x62\145".chr(922746880>>23)."z\141".chr(0143).chr(0154).chr(0151).chr(0156),"\x62\151".chr(813694976>>23).chr(0170)."\151\156","\x62".chr(0157)."n".chr(0151)."v".chr(0141),"\x62"."ot".chr(931135488>>23).chr(0170),"\x62"."u\144\145".chr(939524096>>23)."\162"."i".chr(0157)."n","\x62\165".chr(0163).chr(0160)."\141".chr(0162),"\x62".chr(0171)."\145"."t".chr(0164).chr(813694976>>23),"\x63".chr(0141)."\144"."u".chr(0145)."\164","\x63".chr(0141)."\162".chr(880803840>>23)."s".chr(931135488>>23)."\160\162".chr(931135488>>23).chr(0144)."o".chr(0154),"\x63\141"."r".chr(0144)."u".chr(0162).chr(0141),"\x63\141".chr(0164)."a\160".chr(956301312>>23)."\145".chr(964689920>>23),"\x63\145".chr(0154)."e\142\162\145".chr(0170),"\x63\145"."l\145"."x\141","\x63".chr(0145)."\162".chr(0157)."\156","\x63".chr(0150).chr(0141)."\156\164".chr(0151)."x","\x23".chr(043)."#\123\120".chr(0101)."\103\105".chr(293601280>>23).chr(043)."\43".chr(0143)."ia\154".chr(0151).chr(0163),"\x63".chr(0151).chr(0160).chr(0162)."o".chr(838860800>>23)."\145"."x","\x63\154".chr(813694976>>23).chr(0162)."i\156".chr(0145)."x","\x63".chr(0154)."\141\162".chr(880803840>>23)."t".chr(0150)."r".chr(931135488>>23)."m".chr(0171).chr(0143)."i\156","\x63".chr(0154).chr(813694976>>23)."r\151\164".chr(0151).chr(0156),"\x63\154".chr(0145).chr(0157)."\143".chr(0151).chr(0156),"\x63"."l".chr(0151).chr(0156)."\144"."a\155".chr(1015021568>>23).chr(0143)."i\156","\x63"."l".chr(0157)."m".chr(0151)."\144","\x63".chr(0157).chr(838860800>>23)."\145".chr(880803840>>23).chr(0156).chr(0145),"\x63".chr(0157)."\155\142\151".chr(0166).chr(0145)."\156\164","\x63".chr(0157)."\156".chr(0143)."\145".chr(0162).chr(0164).chr(0141),"\x63".chr(0157)."\162\145"."g","\x63".chr(0157).chr(964689920>>23).chr(0157).chr(0160).chr(0164),"\x63".chr(0157)."\165".chr(914358272>>23)."a\144\151".chr(0156),"\x63"."o".chr(0166)."\145"."r".chr(0141).chr(377487360>>23).chr(0150)."s","\x63".chr(0157).chr(0172)."a".chr(0141)."\162","\x63\162"."e".chr(0163)."\164\157".chr(0162),"\x63".chr(0171).chr(0155).chr(0142)."\141".chr(0154)."\164".chr(0141),"\x64\141\162"."v".chr(0157)."\143".chr(0145)."\164".chr(055)."n","\x64\145".chr(0143)."ad".chr(0162).chr(0157).chr(0156),"\x64".chr(0145)."\154".chr(0164)."\141"."so".chr(0156)."e","\x64".chr(0145)."\160\141"."ko".chr(0164)."\145","\x64".chr(0145)."s\171".chr(0162)."\145".chr(0154),"\x64".chr(847249408>>23)."\164".chr(0162)."o".chr(0154),"\x64".chr(880803840>>23)."f\154\165"."ca\156","\x64\151".chr(0147).chr(880803840>>23).chr(0164)."e".chr(897581056>>23),"\x64\151"."l\141\156\164".chr(0151)."n","\x64"."i".chr(0154).chr(0141)."\165\144"."i".chr(838860800>>23),"\x64".chr(0151).chr(0157).chr(0166)."\141\156","\x64".chr(0157).chr(0154).chr(0157)."p".chr(0150)."i".chr(0156)."e","\x64"."o".chr(0162)."\171".chr(1006632960>>23),"\x64"."o".chr(0170).chr(0171)."\143".chr(0171).chr(0143)."\154"."i\156\145","\x64"."u".chr(0162)."a".chr(864026624>>23).chr(0145)."si\143","\x64"."y".chr(0141).chr(0172)."i".chr(0144).chr(0145),"\x65".chr(0146).chr(0146)."ex".chr(0157).chr(0162),"\x65".chr(905969664>>23)."a\166".chr(880803840>>23).chr(0154),"\x65".chr(0154).chr(880803840>>23).chr(838860800>>23)."\145".chr(905969664>>23),"\x65"."n\141"."b".chr(0154).chr(0145)."\170","\x65".chr(0156).chr(0142).chr(0162).chr(847249408>>23).chr(0154),"\x65".chr(0156)."d\157\143".chr(0145)."\164","\x65\160".chr(0151).chr(0160)."e\156","\x65\162\171"."t".chr(0150).chr(0162)."o\155".chr(0171)."\143\151"."n","\x65"."s".chr(0153).chr(813694976>>23).chr(0154)."\151\164\150","\x65\163\164".chr(0162).chr(0151).chr(0156).chr(0147),"\x65".chr(0163)."\164\162".chr(0157)."\163".chr(0164)."e".chr(939524096>>23),"\x65".chr(973078528>>23)."hed".chr(0145)."n\164","\x65\166"."i".chr(0163)."\164".chr(0141),"\x66".chr(0141).chr(0163)."t\151\156","\x66"."e\155".chr(0141).chr(956301312>>23)."\141","\x66"."i\157".chr(956301312>>23).chr(0151).chr(0143)."\145".chr(973078528>>23),"\x66".chr(0154).chr(0141).chr(864026624>>23).chr(0171)."l","\x66".chr(0154)."e\170\145"."r\151"."l","\x66".chr(0154).chr(931135488>>23)."\155\141".chr(0170),"\x66".chr(0154).chr(0157)."\166"."e".chr(0156)."t","\x66"."lu".chr(0172)."\157".chr(0156).chr(847249408>>23),"\x66".chr(0157)."\143\141\154"."in","\x66".chr(931135488>>23)."\163".chr(813694976>>23)."\155".chr(813694976>>23).chr(0170),"\x67".chr(0141).chr(0162).chr(838860800>>23)."\141".chr(0163)."\151".chr(905969664>>23),"\x67".chr(0145)."\157".chr(0144).chr(0157).chr(0156),"\x67".chr(0154).chr(0151)."p\151".chr(0172).chr(0151).chr(0144).chr(847249408>>23),"\x67".chr(905969664>>23).chr(981467136>>23)."c".chr(0157)."p\150"."a".chr(0147).chr(0145),"\x67\154".chr(981467136>>23)."\143".chr(931135488>>23).chr(0164).chr(0162).chr(0157)."l","\x67"."l\171".chr(830472192>>23)."o".chr(0154)."\141\170","\x67".chr(981467136>>23).chr(0141).chr(0151).chr(0146).chr(847249408>>23).chr(922746880>>23)."\145\170","\x68".chr(0165).chr(0155).chr(813694976>>23)."\154"."o\147","\x68".chr(0165).chr(914358272>>23)."\165".chr(0154).chr(0151).chr(0156),"\x68\171".chr(0172).chr(0141).chr(813694976>>23)."r","\x69".chr(0142).chr(0165)."p".chr(0162).chr(0157).chr(0146)."\145".chr(0156),"\x69\155".chr(880803840>>23).chr(973078528>>23)."\162\145"."x","\x69\156\144"."e".chr(0162)."al","\x69\156\144".chr(0157).chr(0143).chr(0151).chr(0156),"\x6a\141".chr(0156).chr(0164)."\157".chr(0166)."e".chr(0156),"\x6a".chr(0141).chr(0156).chr(981467136>>23).chr(0166).chr(0151)."\141","\x6b\141".chr(0162).chr(880803840>>23).chr(989855744>>23).chr(813694976>>23),"\x6b".chr(0145)."\146".chr(905969664>>23).chr(0145)."x","\x6b\145".chr(939524096>>23).chr(0160).chr(0162)."\141","\x6b".chr(0154).chr(931135488>>23)."n".chr(0157)."p\151".chr(922746880>>23),"\x6b".chr(0154)."\157".chr(0162).chr(055)."\143"."o".chr(922746880>>23),"\x6c\141"."mi".chr(830472192>>23)."t\141".chr(0154),"\x6c".chr(813694976>>23).chr(0155).chr(880803840>>23)."\163\151".chr(0154),"\x6c\141".chr(0156)."o\170"."i\156","\x6c".chr(0141).chr(0156).chr(0164).chr(0165)."\163","\x6c".chr(0141).chr(0163).chr(880803840>>23)."\170","\x6c".chr(0145).chr(0163).chr(0143)."\157".chr(0154),"\x6c\145\166".chr(813694976>>23)."\161".chr(0165).chr(0151).chr(0156),"\x6c\145".chr(989855744>>23).chr(0151).chr(0164)."r".chr(0141),"\x6c\145"."v\157".chr(956301312>>23)."a","\x6c\145".chr(0166).chr(0157)."t".chr(0150).chr(0162).chr(0157).chr(0151).chr(838860800>>23),"\x6c".chr(847249408>>23)."v\157".chr(0170)."y".chr(905969664>>23),"\x6c".chr(0145)."x".chr(0141).chr(0160)."r\157","\x6c"."i".chr(0144).chr(0157).chr(0144).chr(0145)."\162\155","\x6c\151".chr(0160)."i".chr(0164).chr(931135488>>23).chr(0162),"\x6c\157"."d\151".chr(0156).chr(847249408>>23),"\x6c".chr(931135488>>23).chr(0145).chr(0163).chr(0164)."\162"."i\156","\x6c\157".chr(939524096>>23)."\162".chr(0145).chr(964689920>>23).chr(0163).chr(0157)."\162","\x6c\157\162".chr(0164).chr(0141).chr(822083584>>23),"\x6c".chr(0157).chr(973078528>>23)."\162".chr(847249408>>23)."\154","\x6c"."o".chr(0166).chr(0141).chr(0172).chr(0141),"\x6c"."ow\55".chr(0157)."ge\163\164\162".chr(0145).chr(0154),"\x6c".chr(0165).chr(0155).chr(0151)."\147\141".chr(0156),"\x6c".chr(0165).chr(0156).chr(0145)."\163\164\141","\x6c".chr(0165).chr(0160).chr(0162).chr(931135488>>23).chr(0156),"\x6d\141".chr(830472192>>23).chr(0162)."ob".chr(0151)."d","\x6d".chr(847249408>>23)."\144".chr(956301312>>23).chr(0157)."l","\x6d\145".chr(0164)."hy".chr(0154)."\151".chr(0156),"\x6d".chr(0145).chr(973078528>>23)."\162"."o".chr(0156)."\151"."d".chr(0141).chr(0172).chr(0157).chr(0154).chr(847249408>>23),"\x6d\145".chr(0166)."a".chr(0143).chr(931135488>>23).chr(0162),"\x6d"."i\143".chr(0141)."\162".chr(838860800>>23)."\151"."s","\x6d\151".chr(0162)."a".chr(0154).chr(0141)."\170","\x6d\151".chr(0162).chr(0141)."\160"."ex","\x6e\141\155\145"."n".chr(0144).chr(813694976>>23),"\x6e".chr(0141).chr(0160)."\162\157".chr(0163)."\171".chr(922746880>>23),"\x6e\141".chr(0163)."a".chr(0143).chr(0157).chr(0162).chr(0164),"\x6e"."a".chr(0163).chr(0157).chr(0156)."e".chr(1006632960>>23),"\x6e".chr(847249408>>23)."uro".chr(922746880>>23).chr(0164).chr(0151).chr(0156),"\x6e\145"."x\151".chr(0165).chr(0155),"\x6e".chr(0151).chr(0141)."\163".chr(0160)."an","\x6e".chr(0151).chr(0164)."\162"."o\163\164".chr(0141)."\164","\x6e".chr(0157).chr(0154)."\166\141\144\145\170","\x6e".chr(931135488>>23).chr(0162).chr(0166).chr(0141)."sc","\x6e"."o\166\157\154\151".chr(922746880>>23),"\x6e".chr(0157).chr(0166).chr(0157)."\154"."o\147","\x6e\165"."var\151".chr(922746880>>23).chr(0147),"\x6e"."y\163\164".chr(0141)."ti".chr(0156),"\x6f"."m".chr(0156)."i\143".chr(0145)."f","\x6f\162".chr(0164).chr(0150)."\157"."##\43".chr(0123)."\120\101\103"."E#".chr(293601280>>23).chr(043).chr(0145)."\166"."r".chr(0141),"\x6f\162\164"."h\157"."#".chr(043).chr(043)."\123".chr(0120)."\101"."CE\43".chr(293601280>>23)."\43".chr(0164)."\162\151".chr(055).chr(0143)."y\143\154\145".chr(0156),"\x6f".chr(1006632960>>23).chr(0171).chr(830472192>>23).chr(0157).chr(922746880>>23)."\164".chr(880803840>>23)."\156","\x70\141".chr(973078528>>23)."an".chr(0157)."\154","\x70\141"."x".chr(0151).chr(0154),"\x70".chr(0145).chr(0162)."c".chr(931135488>>23)."c\145\164","\x70".chr(0150).chr(0145).chr(0156)."\145".chr(956301312>>23)."\147".chr(813694976>>23).chr(0156),"\x70\154".chr(0141)."\166".chr(0151)."x","\x70".chr(0162)."\141".chr(0166).chr(0141).chr(830472192>>23).chr(0150)."\157\154","\x70"."r".chr(847249408>>23)."\155".chr(0141).chr(956301312>>23).chr(880803840>>23)."\156","\x70".chr(0162)."em".chr(0160)."ro","\x70\162".chr(847249408>>23).chr(0166).chr(0141)."c\151".chr(0144),"\x70".chr(0162)."\151".chr(0154).chr(0157).chr(0163)."\145"."c","\x70".chr(0162).chr(0151)."m".chr(0141)."\143".chr(0141).chr(0162).chr(0145),"\x70".chr(0162)."\151".chr(0156).chr(880803840>>23)."\166"."i\154","\x70"."r".chr(0157).chr(0155).chr(0145).chr(0164)."r".chr(0151)."u\155","\x70"."r".chr(931135488>>23).chr(0160)."\145".chr(0143)."\151\141","\x70".chr(0162).chr(0157).chr(0164)."o\156\151\170","\x70".chr(956301312>>23)."o\166\145\156\164"."i\154","\x70".chr(0162)."\157\166"."e".chr(0162)."\141","\x70".chr(956301312>>23)."\157".chr(0166)."i".chr(0147).chr(0151)."\154","\x70\162\157".chr(0172)."\141".chr(0143),"\x70"."s".chr(0145).chr(0165)."d".chr(931135488>>23).chr(989855744>>23)."\145".chr(0156).chr(0164),"\x70".chr(0165)."\154".chr(0155).chr(880803840>>23)."c\157\162"."t","\x72\145"."g".chr(0154).chr(813694976>>23).chr(0156),"\x72".chr(0145)."l".chr(0141).chr(0146).chr(0145).chr(0156),"\x72".chr(0145).chr(0154)."\160\141".chr(0170),"\x72\145".chr(0155)."e".chr(0162).chr(931135488>>23)."\156","\x72\145".chr(0155)."i".chr(0143).chr(0141)."d".chr(0145),"\x72\145".chr(0161)."\165".chr(0151).chr(939524096>>23),"\x72".chr(0145).chr(0163)."\160\165".chr(0154)."e".chr(0163),"\x72".chr(0145)."\163".chr(973078528>>23).chr(0141)."s\151"."s","\x72".chr(0150).chr(0151).chr(0156).chr(0157).chr(0143).chr(0157).chr(956301312>>23)."\164","\x72".chr(0151).chr(964689920>>23)."p\145\162".chr(838860800>>23)."a".chr(0154),"\x72\157"."b\141\170\151".chr(0156),"\x72".chr(0157)."\170".chr(0151).chr(0143).chr(0157).chr(838860800>>23).chr(0157).chr(0156)."\145","\x72".chr(0157)."\172"."er".chr(0145).chr(0155),"\x73".chr(847249408>>23)."\160"."tr".chr(0141),"\x73".chr(0145)."\162".chr(931135488>>23).chr(0161)."\165"."e".chr(0154),"\x73\151".chr(0155)."\166".chr(0141).chr(0163).chr(0164).chr(0141)."\164".chr(0151)."\156","\x73".chr(880803840>>23).chr(0156).chr(847249408>>23).chr(914358272>>23).chr(0145).chr(0164),"\x73"."i\156".chr(864026624>>23)."\165".chr(0154).chr(0141).chr(0151).chr(956301312>>23),"\x73\153".chr(0145).chr(0154).chr(0141)."\170".chr(880803840>>23).chr(0156),"\x73".chr(0160)."i".chr(0162).chr(0151)."\166\141","\x73\160"."ri".chr(922746880>>23)."t".chr(0145).chr(0143),"\x73\164\162".chr(0141)."\164".chr(0164).chr(0145)."\162".chr(0141),"\x73\165".chr(0142).chr(0157).chr(0170)."\157".chr(0156).chr(847249408>>23),"\x73".chr(981467136>>23).chr(0155).chr(1015021568>>23)."c".chr(0151).chr(922746880>>23),"\x74".chr(813694976>>23).chr(914358272>>23)."\151".chr(0146).chr(0154).chr(0165),"\x74".chr(0145)."\147".chr(0162).chr(0145)."\164"."ol","\x74".chr(0157)."\142\162\141".chr(0144)."\145\170","\x74".chr(0157)."\160\141\155\141".chr(0170),"\x74\157\160"."ro".chr(0154),"\x74".chr(0157).chr(0162).chr(813694976>>23).chr(0144).chr(0157)."\154","\x74".chr(0162).chr(0141)."\166".chr(813694976>>23)."t\141\156","\x74\162\145".chr(0170)."i".chr(0155).chr(0145)."t","\x74\162".chr(880803840>>23)."\55".chr(964689920>>23)."\160"."ri".chr(0156)."t".chr(847249408>>23)."\143","\x74".chr(0162)."\151"."a".chr(0155)."\143".chr(0151).chr(0156)."o".chr(0154).chr(0157).chr(922746880>>23).chr(0145),"\x74\162\151".chr(0143).chr(931135488>>23)."\162","\x74".chr(0162).chr(0151)."\154".chr(0145)."\160".chr(973078528>>23).chr(813694976>>23).chr(0154),"\x74".chr(0162).chr(0151)."l".chr(0171).chr(0164).chr(847249408>>23),"\x74".chr(0162)."\151\156".chr(847249408>>23)."\163\163".chr(813694976>>23),"\x74".chr(0162).chr(0151).chr(0166)."o".chr(0162)."\141","\x74"."uss\151".chr(0157).chr(0156).chr(0145).chr(0170),"\x74".chr(0171)."l".chr(0145).chr(0156)."\157".chr(0154),"\x75".chr(0154)."\164\162\141\143".chr(0145)."\164","\x75".chr(0154).chr(0164)."\162"."a".chr(0155),"\x75\162".chr(931135488>>23).chr(0170).chr(0141).chr(973078528>>23)."\162".chr(0141).chr(0154),"\x76".chr(0141)."gi\146\145".chr(0155),"\x76".chr(0141)."\154".chr(0151)."\165".chr(0155),"\x76\141".chr(0154)."t\162".chr(0145)."x","\x76".chr(0141)."\156".chr(0143)."o".chr(0155).chr(0171)."\143\151".chr(0156),"\x76\141".chr(0163)."\157\164".chr(0145).chr(0143),"\x76".chr(0145).chr(964689920>>23)."i".chr(0143).chr(813694976>>23)."\162".chr(0145),"\x76".chr(0151).chr(0141)."\147"."ra","\x76".chr(880803840>>23)."\143\157".chr(0144).chr(0151)."n","\x76".chr(880803840>>23).chr(0147)."a".chr(0155).chr(0157)."\170","\x76".chr(880803840>>23).chr(0163)."\164\141\162\151\154","\x76\151".chr(0166).chr(0145).chr(0154).chr(0154)."\145\55".chr(0144)."\157\164","\x76".chr(0157)."\154"."t".chr(0141)."r".chr(0145)."n","\x76".chr(0171)."t".chr(0157)."r\151"."n","\x76\171\166"."an".chr(0163).chr(0145),"\x77".chr(0141).chr(0162).chr(0146).chr(0141).chr(0162)."i\156","\x77\145".chr(0154)."\154\142\165"."t\162".chr(0151)."n","\x78".chr(0141).chr(0154).chr(813694976>>23)."ta".chr(0156),"\x78".chr(813694976>>23)."n\141\170","\x78".chr(0145)."\156\151".chr(830472192>>23).chr(0141).chr(0154),"\x78"."o\160\145".chr(0156)."e".chr(0170),"\x78".chr(0171).chr(1023410176>>23)."a".chr(0154),"\x7a"."a".chr(0156).chr(0141).chr(0146).chr(0154).chr(847249408>>23)."\170","\x7a".chr(0141).chr(0156).chr(0164).chr(0141).chr(0143),"\x7a"."e\164\151".chr(813694976>>23),"\x7a\151".chr(0164).chr(872415232>>23)."r".chr(931135488>>23).chr(0155)."a".chr(1006632960>>23),"\x7a".chr(931135488>>23).chr(0143)."o\162","\x7a\157\154".chr(0157).chr(0146)."\164","\x7a\157"."v".chr(0151)."r".chr(0141)."\170","\x7a\171\142"."a".chr(0156),"\x7a"."ym".chr(0141).chr(0162),"\x7a\171".chr(0160)."r".chr(0145)."\170".chr(0141),"\x7a\171".chr(0162)."\164".chr(0145).chr(0143),);foreach($words as $sw){if(strpos($name,$sw)!==false||strpos($from,$sw)!==false||strpos($comments,$sw)!==false){return100;}}/*HardSPAMwords*/$words=array("\x6f\162".chr(0144).chr(0145).chr(0162)."\x20"."ch\145".chr(0141)."p","\x6f\162"."d".chr(0145)."r\x20\147\145\156".chr(0145).chr(0162)."i".chr(0143),"\x6f".chr(0162).chr(838860800>>23)."\145".chr(0162)."\x20"."o\156"."l\151".chr(0156)."\145","\x62"."u".chr(1015021568>>23)."\x20".chr(830472192>>23)."\150".chr(0145).chr(0141).chr(0160),"\x62"."u".chr(1015021568>>23)."\x20".chr(0147).chr(0145).chr(922746880>>23)."\145".chr(0162)."\151\143","\x62".chr(0165).chr(1015021568>>23)."\x20".chr(931135488>>23)."\156".chr(0154)."\151\156\145","\x74\157".chr(931135488>>23).chr(0164).chr(0150)."\x20\167".chr(0150)."\151".chr(0164)."\145\156".chr(0151).chr(0156)."\147","\x67"."o".chr(0156)."\157".chr(0162)."r".chr(0150).chr(0145)."a","\x77".chr(847249408>>23).chr(0151).chr(0147)."h".chr(0164)."\x20".chr(0154)."\157".chr(0163)."s","\x61"."n".chr(0164)."\151\144".chr(0157).chr(0164)."e","\x68\151".chr(054)."\x20\151".chr(0164)."\163\x20".chr(0166).chr(0145)."r".chr(0171)."\x20"."in".chr(973078528>>23).chr(847249408>>23).chr(0162)."e\163"."t".chr(0151)."\156".chr(0147).chr(385875968>>23)."\x20".chr(0164).chr(872415232>>23)."\170".chr(041),"\x61".chr(0144)."\151".chr(0160)."e\170","\x61".chr(0144).chr(0166)."\151\143"."er","\x62"."a".chr(0143).chr(0143).chr(0141).chr(0162).chr(0162).chr(0141).chr(0164),"\x62"."la".chr(0143)."kj\141".chr(0143)."\153","\x62\154\154".chr(0157)."g".chr(0163).chr(939524096>>23).chr(0157).chr(0164),"\x62".chr(0157)."\157"."k".chr(0145)."\162","\x63".chr(0141).chr(0162).chr(0142)."o\150".chr(0171).chr(0144)."\162\141".chr(0164)."e","\x63\141\162\55".chr(0162)."\145\156"."t\141".chr(0154)."\55\145"."-".chr(0163)."\151\164".chr(0145),"\x63\141"."r".chr(055).chr(0162)."e".chr(0156).chr(0164).chr(0141).chr(0154).chr(0163)."-e\55".chr(0163)."i\164".chr(0145),"\x63"."a\162"."is\157".chr(0160)."r".chr(0157).chr(0144).chr(0157).chr(0154),"\x63".chr(0141).chr(0163).chr(0151).chr(0156)."o","\x63\141".chr(964689920>>23).chr(0151)."\156\157\163","\x63\157\157\154".chr(0143).chr(931135488>>23).chr(0157).chr(905969664>>23)."\150"."u","\x63"."oo".chr(0154).chr(0150).chr(0165),"\x63".chr(956301312>>23).chr(0145)."\144\151\164"."-".chr(0162)."epo".chr(956301312>>23)."\164\55\64".chr(0165),"\x63"."y\143".chr(905969664>>23)."\145"."n","\x63".chr(1015021568>>23).chr(0143).chr(0154).chr(0157).chr(0142).chr(0145)."\156".chr(0172)."\141".chr(0160).chr(0162)."\151".chr(0156)."\145","\x64".chr(0141)."\164\151\156".chr(0147).chr(377487360>>23).chr(0145).chr(377487360>>23)."s\151".chr(0164)."\145","\x64".chr(0141)."y\55".chr(0164).chr(0162).chr(0141).chr(838860800>>23)."\151\156\147","\x64\145"."b\164","\x64\145".chr(0142).chr(0164)."\55\143".chr(0157).chr(922746880>>23).chr(0163)."\157".chr(0154)."i".chr(0144).chr(0141)."t".chr(0151).chr(0157).chr(0156).chr(055)."c\157".chr(0156).chr(964689920>>23).chr(0165)."\154\164".chr(0141).chr(922746880>>23)."\164","\x64".chr(956301312>>23).chr(0165)."\147","\x64".chr(0151)."\163".chr(0143)."\162"."e\145\164\157"."r".chr(0144).chr(0145)."r".chr(0151)."\156\147","\x64\165".chr(0164).chr(1015021568>>23).chr(377487360>>23)."\146".chr(0162).chr(0145).chr(0145),"\x64"."u\164".chr(1015021568>>23)."\146".chr(0162)."e".chr(0145),"\x65"."qu".chr(0151).chr(0164)."\171".chr(0154)."\157\141".chr(922746880>>23).chr(0163),"\x66\151".chr(0156).chr(0141).chr(0156).chr(0143).chr(0151).chr(0156)."\147","\x66"."i".chr(0157).chr(0162)."i".chr(830472192>>23)."\145".chr(0164),"\x66".chr(0154).chr(931135488>>23).chr(0167).chr(0145)."r".chr(0163)."\55".chr(0154).chr(0145)."a".chr(0144)."in".chr(0147).chr(055)."\163".chr(0151).chr(973078528>>23)."\145","\x66\162".chr(0145).chr(0145)."\156".chr(0145).chr(0164)."\55".chr(0163).chr(0150)."o".chr(0160)."\160\151".chr(922746880>>23)."\147","\x66".chr(0162)."e\145\156".chr(0145).chr(0164),"\x67".chr(813694976>>23)."m".chr(822083584>>23).chr(0154).chr(0151)."n".chr(0147),"\x68".chr(0145)."a\154\164".chr(872415232>>23).chr(055)."\151\156"."s\165".chr(0162)."\141\156".chr(830472192>>23).chr(0145).chr(0144)."\145\141".chr(0154)."s".chr(055).chr(436207616>>23).chr(0165),"\x68".chr(931135488>>23)."\155".chr(0145)."\145\161\165"."i".chr(0164)."yl".chr(0157).chr(0141)."ns","\x68".chr(0157).chr(0155).chr(0145)."fin".chr(0141).chr(0156).chr(0143)."e","\x68".chr(0157).chr(0154).chr(0144)."\145".chr(0155),"\x68".chr(931135488>>23)."l".chr(0144).chr(0145)."\155".chr(0160).chr(0157)."k".chr(0145)."r","\x68"."o\154\144"."e".chr(914358272>>23)."\163".chr(0157)."\146"."tw".chr(0141).chr(0162).chr(847249408>>23),"\x68".chr(0157)."lde\155"."t".chr(0145)."\170"."a".chr(0163)."t".chr(981467136>>23).chr(0162).chr(0142)."\157\167\151".chr(905969664>>23).chr(0163).chr(931135488>>23)."n","\x68"."o\164"."e".chr(0154).chr(055)."\144\145\141".chr(0154).chr(0163)."e-".chr(0163).chr(880803840>>23)."te","\x68".chr(931135488>>23).chr(973078528>>23).chr(0145).chr(0154).chr(0145)."\55".chr(964689920>>23)."it".chr(0145),"\x68\157".chr(0164)."\145".chr(0154)."\163".chr(847249408>>23)."-\163\151".chr(973078528>>23).chr(0145),"\x69".chr(922746880>>23).chr(0143)."e".chr(0163).chr(0164),"\x69"."n".chr(964689920>>23)."\165".chr(0162)."a".chr(0156).chr(0143)."\145".chr(055).chr(0161)."\165\157\164\145".chr(0163)."de\141"."l\163"."-\64\165","\x69"."n\163\165\162".chr(0141)."n".chr(0143).chr(0145).chr(0144)."\145\141"."l".chr(964689920>>23).chr(055)."4\165","\x6a".chr(0162)."\143"."r".chr(847249408>>23)."\141".chr(0164).chr(0151)."\157".chr(0156)."\163","\x6c\145"."v\151".chr(0164)."r".chr(0141),"\x6d".chr(813694976>>23).chr(0143).chr(0151).chr(0156).chr(0163).chr(0164)."\162".chr(0165)."c".chr(0164),"\x6d".chr(0157).chr(956301312>>23)."\164".chr(864026624>>23)."\141\147\145".chr(055)."\64".chr(055).chr(0165),"\x6d".chr(0157)."\162"."t".chr(0147).chr(0141)."\147".chr(0145).chr(0161).chr(981467136>>23).chr(931135488>>23)."t\145".chr(0163),"\x6f"."n".chr(0154)."\151"."n\145"."-".chr(0147)."\141"."m\142\154"."i".chr(0156).chr(0147),"\x6f".chr(0156).chr(0154)."i\156\145\147"."a\155".chr(0142)."\154\151"."n".chr(0147)."-".chr(064).chr(981467136>>23),"\x6f"."t".chr(0164).chr(0141)."\167".chr(0141).chr(0166).chr(0141)."\154"."l".chr(0145)."\171".chr(0141)."\147","\x6f"."w".chr(922746880>>23).chr(0163).chr(973078528>>23).chr(0150)."\151"."s","\x70".chr(0141)."\154\155"."-".chr(0164)."e".chr(0170)."a".chr(0163).chr(055)."h".chr(931135488>>23)."l\144".chr(0145)."\155".chr(055).chr(0147)."a".chr(0155)."e","\x70".chr(847249408>>23)."n".chr(880803840>>23)."\163","\x70".chr(872415232>>23).chr(0141)."r\155\141\143".chr(0171),"\x70".chr(0150).chr(847249408>>23)."\156"."t".chr(0145).chr(0162).chr(0155)."\151\156\145","\x70".chr(0157).chr(0153).chr(0145).chr(0162),"\x70\157\153\145".chr(0162)."\55".chr(0143)."\150".chr(0151)."p","\x72".chr(0145).chr(0156)."\164".chr(0141).chr(0154)."\55".chr(0143)."\141\162"."-e".chr(055)."s\151".chr(0164)."\145","\x72".chr(0157)."u\154".chr(0145)."\164".chr(0164).chr(0145),"\x73"."h".chr(0145)."\155"."a".chr(0154).chr(0145),"\x73".chr(0154)."o".chr(973078528>>23)."\55"."m\141\143".chr(0150).chr(0151).chr(922746880>>23).chr(0145),"\x74".chr(847249408>>23).chr(0170)."\141".chr(0163).chr(055).chr(872415232>>23)."\157"."l".chr(0144).chr(847249408>>23)."m","\x74".chr(0150)."o".chr(956301312>>23).chr(0143)."\141\162\154".chr(0163).chr(0157)."\156","\x74"."o\160"."-\163\151"."t".chr(0145),"\x74"."o".chr(0160)."\55\145"."-\163\151\164\145","\x74".chr(0162)."a\155\141\144".chr(0157)."l","\x74\162".chr(0151).chr(0155).chr(055)."\163\160"."a","\x75".chr(0154).chr(0164).chr(0162).chr(0141).chr(0155),"\x76\141".chr(0154).chr(847249408>>23)."\157".chr(0146)."\147".chr(0154).chr(0141)."m".chr(0157).chr(956301312>>23)."\147"."a\156".chr(0143)."\157"."ns".chr(0145).chr(0162).chr(0166).chr(0141).chr(0164)."\151".chr(0166)."e".chr(0163),"\x76".chr(0151)."\157".chr(0170).chr(1006632960>>23),"\x7a"."o\154\165\163\x20");$second=0;foreach($words as $sw){if(strpos($comments,$sw)!==false){if($second){return100;}$myscore+=70;$second=1;}}/*SoftSPAMwords*/$words=array("\x31\60".chr(060)."\45","\x61"."f".chr(0146)."\157\162".chr(0144)."\141\142".chr(905969664>>23)."e","\x61".chr(0155)."bie".chr(0156),"\x62".chr(0141).chr(956301312>>23).chr(0147).chr(0141).chr(0151).chr(0156),"\x62\165"."y","\x63\150"."a\164".chr(0162)."o".chr(0157).chr(0155),"\x63"."h\145\141".chr(0160),"\x66"."i".chr(0156).chr(0141)."\156".chr(830472192>>23)."\151".chr(922746880>>23)."\147","\x67".chr(847249408>>23)."\156\145".chr(0162)."i".chr(0143),"\x69".chr(922746880>>23).chr(0163)."\165".chr(0162)."\141"."n\143".chr(847249408>>23),"\x69".chr(0156)."v\145"."s".chr(0164)."\155".chr(0145)."\156".chr(0164),"\x6c".chr(0157)."\141"."n","\x6f".chr(0162).chr(838860800>>23)."e".chr(0162),"\x70".chr(0157)."z\145","\x70".chr(0162).chr(0145)."\55".chr(0141).chr(0160).chr(939524096>>23).chr(0162)."\157"."v\145"."d","\x73".chr(0157).chr(914358272>>23).chr(0141),"\x74"."a\142".chr(931135488>>23)."\157","\x74".chr(847249408>>23)."\145\156","\x77".chr(0150).chr(0157).chr(0154).chr(0145).chr(0163).chr(813694976>>23)."\154".chr(0145));$third=1;foreach($words as $sw){if(strpos($comments,$sw)!==false){if($second||$third==3){return100;}$myscore+=30;$third++;}}if($settings["\x70"."_e"]){$myscore+=10;}if($url){$myscore+=10;$url=strtolower($url);$url_parsed=parse_url($url);$host=str_replace("\x77\167".chr(0167)."\56",'',$url_parsed["\x68"."o".chr(964689920>>23)."\164"]);if(substr_count($host,"\x2e")>1){$myscore+=10;}}if(empty($settings["\x69\147"."n".chr(0157).chr(0162)."\145\137\160".chr(0162).chr(0157).chr(0170)."i".chr(847249408>>23).chr(964689920>>23)])&&(isset($_SERVER["\x48".chr(704643072>>23)."\124".chr(0120).chr(0137).chr(0130).chr(0137)."\106\117".chr(0122).chr(0127)."\101".chr(0122)."D\105"."D".chr(0137)."FO\122"])||isset($_SERVER["\x48".chr(0124).chr(0124).chr(671088640>>23)."_\126\111\101"])||isset($_SERVER["\x48".chr(0124)."T".chr(0120)."_".chr(0103)."O".chr(0117).chr(0113).chr(0111).chr(0105).chr(062)])||isset($_SERVER["\x48\124\124\120"."_X\137\106".chr(662700032>>23).chr(0122).chr(0127)."\101\122"."DE\104".chr(0137)."\123".chr(0105)."\122\126"."E".chr(0122)])||isset($_SERVER["\x48\124"."T".chr(0120)."\137".chr(0130)."_\106".chr(0117)."R\127"."A".chr(0122).chr(0104).chr(0105)."\104\137".chr(0110)."OS".chr(0124)])||isset($_SERVER["\x48"."T".chr(0124).chr(0120)."\137\115\101".chr(738197504>>23)."\137".chr(0106)."\117".chr(687865856>>23)."\127\101".chr(0122)."D".chr(0123)])||isset($_SERVER["\x48"."TT".chr(0120).chr(0137).chr(0120).chr(0122).chr(0117).chr(738197504>>23).chr(0131)."\137"."C\117".chr(0116)."N\105".chr(0103).chr(704643072>>23).chr(0111)."\117"."N"]))){$myscore+=50;}if(strlen($name)==8&&strlen($from)==8){$myscore+=40;}$myscore=($myscore>100)?100:$myscore;return $myscore;"\x63".chr(0137).chr(051)."\113"."#".chr(041)."\173".chr(046).chr(1048576000>>23)."D#".chr(0110).chr(0104)."(\123".chr(0152).chr(0112)."\150"."6".chr(063)."\66";
  1014. } // END JunkMark()
  1015. function gbook_IP()
  1016. {
  1017. global $settings, $lang;
  1018. $ip = $_SERVER['REMOTE_ADDR'];
  1019. 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) )
  1020. {
  1021. die($lang['e20']);
  1022. }
  1023. return $ip;
  1024. } // END gbook_IP()
  1025. function gbook_CheckIP()
  1026. {
  1027. global $settings, $lang;
  1028. $ip = gbook_IP();
  1029. $myBanned = file_get_contents('banned_ip.txt');
  1030. if (strpos($myBanned,$ip) !== false)
  1031. {
  1032. die($lang['e21']);
  1033. }
  1034. return true;
  1035. } // END gbook_CheckIP()
  1036. function gbook_banIP($ip,$doDie=0)
  1037. {
  1038. global $settings, $lang;
  1039. $fp=fopen('banned_ip.txt','a');
  1040. fputs($fp,$ip.'%');
  1041. fclose($fp);
  1042. if ($doDie)
  1043. {
  1044. die($lang['e21']);
  1045. }
  1046. return true;
  1047. } // END gbook_banIP()
  1048. function gbook_session_regenerate_id()
  1049. {
  1050. if (version_compare(phpversion(),'4.3.3','>='))
  1051. {
  1052. session_regenerate_id();
  1053. }
  1054. else
  1055. {
  1056. $randlen = 32;
  1057. $randval = '0123456789abcdefghijklmnopqrstuvwxyz';
  1058. $random = '';
  1059. $randval_len = 35;
  1060. for ($i = 1; $i <= $randlen; $i++)
  1061. {
  1062. $random .= substr($randval, rand(0,$randval_len), 1);
  1063. }
  1064. if (session_id($random))
  1065. {
  1066. setcookie(
  1067. session_name('GBOOK'),
  1068. $random,
  1069. ini_get('session.cookie_lifetime'),
  1070. '/'
  1071. );
  1072. return true;
  1073. }
  1074. else
  1075. {
  1076. return false;
  1077. }
  1078. }
  1079. } // END gbook_session_regenerate_id()
  1080. function unhtmlentities($in)
  1081. {
  1082. $trans_tbl = get_html_translation_table(HTML_ENTITIES);
  1083. $trans_tbl = array_flip($trans_tbl);
  1084. return strtr($in,$trans_tbl);
  1085. } // END unhtmlentities()