Op het forum hier wordt regelmatig gevraagd hoe het .nl limiet omzeilt kan worden. Toevallig moest ik vandaag een whois script maken en heb de source van de class hieronder neergezet, zodat anderen er ook plezier van hebben. Je zult alleen zelf nog even wat meer extensies moeten toevoegen.
Doordat er gebruik gemaakt wordt van de whois functie op de server, wordt het limiet van de .nl extensies omzeilt, maar hierdoor is het wel gevoeliger voor verschillende server software. Het script is getest op FreeBSD, mochten er problemen zijn op andere operating systems, dan hoor ik dat graag!
Voorbeeld is te vinden op http://whois.flydesign.nl/
Update: extra controle of de domeinnaam een goed formaat heeft toegevoegd.PHP Code:<?php
/***
* Whois class
* Copyright by Edwin Vlieg - Flydesign.nl
*
* Example use:
$who = new whois();
$result = $who->CheckDomain("flydesign", "nl");
if($result == 1){
echo "Domain available";
} else {
echo "Domain not available";
}
*
***/
class whois
{
var $extensions;
/***
* whois
* Load extensions
***/
function whois(){
/***
* Extension array
* Insert new extensions in this array, to make more extensions available for check
***/
$this->extensions = array(
'nl' => array('whois.domain-registry.nl', 'is free'),
'com' => array('whois.crsnic.net', 'No match for')
);
}
/***
* AddExtension
* Add a new extension to the array (will only apply on the current object)
***/
function AddExtension($ext, $server, $string){
if(!empty($ext) AND !empty($server) AND !empty($string)){
$this->extensions[$ext] = array($server, $string);
return true;
} else {
return false;
}
}
/***
* GetExtensions
* Returns an array of the available extensions
***/
function GetExtensions(){
$ret = array();
foreach($this->extensions as $extension => $data){
$ret[] = $extension;
}
sort($ret);
return $ret;
}
/***
* CheckDomain
* Returns the result for a domain check
*
* Return codes:
* 1 = Check succesfull, domain available
* 2 = Check succesfull, domain taken
* 3 = Extension doesn't exist in object
* 4 = Server not available
* 5 = Any other error
* 6 = No data to check
* 7 = Invalid domainname
***/
function CheckDomain($domain, $extension, $raw = false){
if(empty($domain) AND empty($extension)){
return 6;
}
$domainname = $domain .".". $extension;
if(!preg_match("/^[\w\.\-\_]+$/i", $domainname)){
return 7;
}
if(!isset($this->extensions[$extension])){
return 3;
}
$extension_data = $this->extensions[$extension];
$domainname = escapeshellcmd($domainname);
exec("whois -h ".$extension_data[0]." \"is ".$domainname."\"", $buffer);
if(!is_array($buffer) OR empty($buffer)){
return 5;
}
$result = '';
foreach($buffer as $row){
$result .= $row."\n";
}
if($raw){
return $result;
}
if(stristr($result, "Connection refused")
OR stristr($result, "No address associated with hostname")){
return 4;
}
if(stristr($result, $extension_data[1])){
return 1;
} else {
return 2;
}
}
}
?>
Vragen/opmerkingen mogen hier gestelt worden, ik geef geen support via email/msn op dit script!

Likes:



