PDA

View Full Version : Problem With Custom Templates and PHP Inclusion


pokusek
11-17-2010, 06:41 AM
Hello. I want to create custom pages for my forum similar to http://tools.digitalpoint.com.
I read this manual (http://www.vbulletin.com/docs/html/templates_externalfiles) 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('i ncludedphp ' => $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());

?>

Active plugin called "nastroje_whois"
ob_start();
include('nastroje/whois.php');
$includedphp = ob_get_contents();
ob_end_clean();


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>

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>

Lynne
11-17-2010, 01:38 PM
Why are you creating a plugin to use in a custom page? Isn't it only being used on that one page? So why not just put the code directly into it?

pokusek
11-17-2010, 01:46 PM
Why are you creating a plugin to use in a custom page? Isn't it only being used on that one page? So why not just put the code directly into it?

You are right, but I did it according to the manual. I have never done it before.
Can you tell me what to do to make it work?

Thanks. :)