1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

vBulletin - Problem With Custom Templates and PHP Inclusion

Discussion in 'Content Management' started by lelkoun, Nov 17, 2010.

  1. #1
    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:
     
    lelkoun, Nov 17, 2010 IP