Hello. I want to create custom pages for my forum similar to http://tools.digitalpoint.com. I read this manual but my PHP code somehow cannot be included. Can you help me, please? Thank you very much! My files: nastroje.php <?php // ####################### SET PHP ENVIRONMENT ########################### error_reporting(E_ALL & ~E_NOTICE); // #################### DEFINE IMPORTANT CONSTANTS ####################### define('THIS_SCRIPT', 'nastroje'); define('CSRF_PROTECTION', true); // change this depending on your filename // ################### PRE-CACHE TEMPLATES AND DATA ###################### // get special phrase groups $phrasegroups = array(); // get special data templates from the datastore $specialtemplates = array(); // pre-cache templates used by all actions $globaltemplates = array('nastroje'); // pre-cache templates used by specific actions $actiontemplates = array(); // ######################### REQUIRE BACK-END ############################ // if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line // chdir ('/path/to/your/forums'); require_once('./global.php'); if (!$vbulletin->userinfo['userid']){ print_no_permission(); } // ####################################################################### // ######################## START MAIN SCRIPT ############################ // ####################################################################### if ($_REQUEST['do'] == 'whois'){ $navbits = construct_navbits(array('' => 'WHOIS')); $navbar = render_navbar_template($navbits); $pagetitle = 'WHOIS'; $templater = vB_Template::create('nastroje_whois'); vB_Template::preRegister('nastroje_whois',array('includedphp ' => $includedphp)); } if (empty($_REQUEST['do'])){ $navbits = construct_navbits(array('' => 'Nástroje')); $navbar = render_navbar_template($navbits); $pagetitle = 'Nástroje'; $templater = vB_Template::create('nastroje'); } // ###### NOW YOUR TEMPLATE IS BEING RENDERED ###### $templater->register_page_templates(); $templater->register('navbar', $navbar); $templater->register('pagetitle', $pagetitle); print_output($templater->render()); ?> PHP: Active plugin called "nastroje_whois" ob_start(); include('nastroje/whois.php'); $includedphp = ob_get_contents(); ob_end_clean(); PHP: Template nastroje_whois {vb:stylevar htmldoctype} <html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html"> <head> <title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title> {vb:raw headinclude} {vb:raw headinclude_bottom} </head> <body> {vb:raw header} {vb:raw navbar} <div id="pagetitle"> <h1>WHOIS</h1> <p class="description">Sloužà k zjištěnà informacà o doménách z databáze WHOIS.</p> </div> <h2 class="blockhead">WHOIS</h2> <div class="blockbody"> <div class="blockrow"> {vb:raw includedphp} </div> </div> {vb:raw footer} </body> </html> PHP: whois.php <?php /************************************************************************* php easy :: whois lookup script ========================================================================== Author: php easy code, www.phpeasycode.com Web Site: http://www.phpeasycode.com Contact: webmaster@phpeasycode.com *************************************************************************/ $domain = $_GET['domain']; // For the full list of TLDs/Whois servers see http://www.iana.org/domains/root/db/ and http://www.whois365.com/en/listtld/ $whoisservers = array( "ac" =>"whois.nic.ac", "ae" =>"whois.nic.ae", "aero"=>"whois.aero", "af" =>"whois.nic.af", "ag" =>"whois.nic.ag", "al" =>"whois.ripe.net", "am" =>"whois.amnic.net", "arpa" =>"whois.iana.org", "as" =>"whois.nic.as", "asia" =>"whois.nic.asia", "at" =>"whois.nic.at", "au" =>"whois.aunic.net", "az" =>"whois.ripe.net", "ba" =>"whois.ripe.net", "be" =>"whois.dns.be", "bg" =>"whois.register.bg", "bi" =>"whois.nic.bi", "biz" =>"whois.biz", "bj" =>"whois.nic.bj", "br" =>"whois.registro.br", "bt" =>"whois.netnames.net", "by" =>"whois.ripe.net", "bz" =>"whois.belizenic.bz", "ca" =>"whois.cira.ca", "cat" =>"whois.cat", "cc" =>"whois.nic.cc", "cd" =>"whois.nic.cd", "ch" =>"whois.nic.ch", "ci" =>"whois.nic.ci", "ck" =>"whois.nic.ck", "cl" =>"whois.nic.cl", "cn" =>"whois.cnnic.net.cn", "com" =>"whois.verisign-grs.com", "coop" =>"whois.nic.coop", "cx" =>"whois.nic.cx", "cy" =>"whois.ripe.net", "cz" =>"whois.nic.cz", "de" =>"whois.denic.de", "dk" =>"whois.dk-hostmaster.dk", "dm" =>"whois.nic.cx", "dz" =>"whois.ripe.net", "edu" =>"whois.educause.edu", "ee" =>"whois.eenet.ee", "eg" =>"whois.ripe.net", "es" =>"whois.ripe.net", "eu" =>"whois.eu", "fi" =>"whois.ficora.fi", "fo" =>"whois.ripe.net", "fr" =>"whois.nic.fr", "gb" =>"whois.ripe.net", "gd" =>"whois.adamsnames.com", "ge" =>"whois.ripe.net", "gg" =>"whois.channelisles.net", "gi" =>"whois2.afilias-grs.net", "gl" =>"whois.ripe.net", "gm" =>"whois.ripe.net", "gov" =>"whois.nic.gov", "gr" =>"whois.ripe.net", "gs" =>"whois.nic.gs", "gw" =>"whois.nic.gw", "gy" =>"whois.registry.gy", "hk" =>"whois.hkirc.hk", "hm" =>"whois.registry.hm", "hn" =>"whois2.afilias-grs.net", "hr" =>"whois.ripe.net", "hu" =>"whois.nic.hu", "ie" =>"whois.domainregistry.ie", "il" =>"whois.isoc.org.il", "in" =>"whois.inregistry.net", "info" =>"whois.afilias.net", "int" =>"whois.iana.org", "io" =>"whois.nic.io", "iq" =>"vrx.net", "ir" =>"whois.nic.ir", "is" =>"whois.isnic.is", "it" =>"whois.nic.it", "je" =>"whois.channelisles.net", "jobs" =>"jobswhois.verisign-grs.com", "jp" =>"whois.jprs.jp", "ke" =>"whois.kenic.or.ke", "kg" =>"www.domain.kg", "ki" =>"whois.nic.ki", "kr" =>"whois.nic.or.kr", "kz" =>"whois.nic.kz", "la" =>"whois.nic.la", "li" =>"whois.nic.li", "lt" =>"whois.domreg.lt", "lu" =>"whois.dns.lu", "lv" =>"whois.nic.lv", "ly" =>"whois.nic.ly", "ma" =>"whois.iam.net.ma", "mc" =>"whois.ripe.net", "md" =>"whois.ripe.net", "me" =>"whois.meregistry.net", "mg" =>"whois.nic.mg", "mil" =>"whois.nic.mil", "mn" =>"whois.nic.mn", "mobi" =>"whois.dotmobiregistry.net", "ms" =>"whois.adamsnames.tc", "mt" =>"whois.ripe.net", "mu" =>"whois.nic.mu", "museum" =>"whois.museum", "mx" =>"whois.nic.mx", "my" =>"whois.mynic.net.my", "na" =>"whois.na-nic.com.na", "name" =>"whois.nic.name", "net" =>"whois.verisign-grs.net", "nf" =>"whois.nic.nf", "nl" =>"whois.domain-registry.nl", "no" =>"whois.norid.no", "nu" =>"whois.nic.nu", "nz" =>"whois.srs.net.nz", "org" =>"whois.pir.org", "pl" =>"whois.dns.pl", "pm" =>"whois.nic.pm", "pr" =>"whois.uprr.pr", "pro" =>"whois.registrypro.pro", "pt" =>"whois.dns.pt", "re" =>"whois.nic.re", "ro" =>"whois.rotld.ro", "ru" =>"whois.ripn.net", "sa" =>"whois.nic.net.sa", "sb" =>"whois.nic.net.sb", "sc" =>"whois2.afilias-grs.net", "se" =>"whois.iis.se", "sg" =>"whois.nic.net.sg", "sh" =>"whois.nic.sh", "si" =>"whois.arnes.si", "sk" =>"whois.ripe.net", "sm" =>"whois.ripe.net", "st" =>"whois.nic.st", "su" =>"whois.ripn.net", "tc" =>"whois.adamsnames.tc", "tel" =>"whois.nic.tel", "tf" =>"whois.nic.tf", "th" =>"whois.thnic.net", "tj" =>"whois.nic.tj", "tk" =>"whois.dot.tk", "tl" =>"whois.nic.tl", "tm" =>"whois.nic.tm", "tn" =>"whois.ripe.net", "to" =>"whois.tonic.to", "tp" =>"whois.nic.tl", "tr" =>"whois.nic.tr", "travel" =>"whois.nic.travel", "tv" => "tvwhois.verisign-grs.com", "tw" =>"whois.twnic.net.tw", "ua" =>"whois.net.ua", "ug" =>"whois.co.ug", "uk" =>"whois.nic.uk", "us" =>"whois.nic.us", "uy" =>"nic.uy", "uz" =>"whois.cctld.uz", "va" =>"whois.ripe.net", "vc" =>"whois2.afilias-grs.net", "ve" =>"whois.nic.ve", "vg" =>"whois.adamsnames.tc", "wf" =>"whois.nic.wf", "ws" =>"whois.website.ws", "yt" =>"whois.nic.yt", "yu" =>"whois.ripe.net"); function LookupDomain($domain){ global $whoisservers; $domain_parts = explode(".", $domain); $tld = strtolower(array_pop($domain_parts)); $whoisserver = $whoisservers[$tld]; if(!$whoisserver) { return "Error: No appropriate Whois server found for $domain domain!"; } $result = QueryWhoisServer($whoisserver, $domain); if(!$result) { return "Error: No results retrieved from $whoisserver server for $domain domain!"; } else { while(strpos($result, "Whois Server:") !== FALSE){ preg_match("/Whois Server: (.*)/", $result, $matches); $secondary = $matches[1]; if($secondary) { $result = QueryWhoisServer($secondary, $domain); $whoisserver = $secondary; } } } return "$domain domain lookup results from $whoisserver server:\n\n" . $result; } function LookupIP($ip) { $whoisservers = array( //"whois.afrinic.net", // Africa - returns timeout error :-( "whois.lacnic.net", // Latin America and Caribbean - returns data for ALL locations worldwide :-) "whois.apnic.net", // Asia/Pacific only "whois.arin.net", // North America only "whois.ripe.net" // Europe, Middle East and Central Asia only ); $results = array(); foreach($whoisservers as $whoisserver) { $result = QueryWhoisServer($whoisserver, $ip); if($result && !in_array($result, $results)) { $results[$whoisserver]= $result; } } $res = "RESULTS FOUND: " . count($results); foreach($results as $whoisserver=>$result) { $res .= "\n\n-------------\nLookup results for $ip from $whoisserver server:\n\n$result"; } return $res; } function ValidateIP($ip) { $ipnums = explode(".", $ip); if(count($ipnums) != 4) { return false; } foreach($ipnums as $ipnum) { if(!is_numeric($ipnum) || ($ipnum > 255)) { return false; } } return $ip; } function ValidateDomain($domain) { if(!preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i", $domain)) { return false; } return $domain; } function QueryWhoisServer($whoisserver, $domain) { $port = 43; $timeout = 10; $fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr); if($whoisserver == "whois.verisign-grs.com") $domain = "=".$domain; // whois.verisign-grs.com requires the equals sign ("=") or it returns any result containing the searched string. fputs($fp, $domain . "\r\n"); $out = ""; while(!feof($fp)){ $out .= fgets($fp); } fclose($fp); $res = ""; if((strpos(strtolower($out), "error") === FALSE) && (strpos(strtolower($out), "not allocated") === FALSE)) { $rows = explode("\n", $out); foreach($rows as $row) { $row = trim($row); if(($row != '') && ($row{0} != '#') && ($row{0} != '%')) { $res .= $row."\n"; } } } return $res; } ?> <form action="<?=$_SERVER['PHP_SELF'];?>"> <p><b><label for="domain">domain:</label></b> <input type="text" name="domain" id="domain" value="<?=$domain;?>"> <input type="submit" value="Lookup"></p> </form> <? if($domain) { $domain = trim($domain); if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7); if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4); if(ValidateIP($domain)) { $result = LookupIP($domain); } elseif(ValidateDomain($domain)) { $result = LookupDomain($domain); } else die("Nevalidnà vstup!"); echo "<pre>\n" . $result . "\n</pre>\n"; } ?> </body> </html> PHP: