- Build Domain WHOIS Lookup System with PHP
- Saved searches
- Use saved searches to filter your results more quickly
- License
- phpWhois/phpWhois
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- dale-c-anderson / whois.php
Build Domain WHOIS Lookup System with PHP
WHOIS (pronounced as “Who is”) is a query and response protocol that generally used to find the details of internet resources such as a domain name, an IP address block or an autonomous system and other important information. The WHOIS protocol server database stores and returns information in human readable format. The information is about domain’s current registrar, registrant information, expiration date etc.
So if you’re looking for building your own WHOIS Lookup system, then here at right place. In our previous tutorial you have learned how to create your own reusable CAPTCHA with PHP. In this tutorial you will learn how to build your own Domain WHOIS Lookup System with PHP. This WHOIS PHP script will support all type of domain from all countries all over the world.
We will cover this tutorial step by step with live example to display domain WHOIS details.
As we will cover this tutorial with live example to create Domain WHOIS Lookup Script with PHP, so the major files for this example is following.
Step1: Design Whois Lookup HTML Form
First we will create file index.php and design HTML form with a input to enter domain name and a search button to get domain WHOIS information on form submit.
Step2: Display Domain WHOIS Information
When a domain name entered and form submitted, we will get domain name without http or www and pass to function validateDomain() to check for valid domain name. Then we will call function lookUpDomain() to get domain WHOIS information and store into a variable $result to display it.
We will display domain WHOIS information using result varible.
Step3: Get Domain WHOIS Information
We will create a function lookUpDomain() and check for domain WHOIS server exist using $whoIsServers array in which have stored WHOIS server name. If domain WHOIS server is exist then we call function getWhoisServerDetails() to make request to WHOIS server to get domain details.
function lookUpDomain($domain) < global $whoIsServers; $domainParts = explode(".", $domain); $tld = strtolower(array_pop($domainParts)); $whoIsServer = $whoIsServers[$tld]; if(!$whoIsServer) < return "Error: No appropriate Whois server found for $domain domain!"; >$whoIsResult = getWhoisServerDetails($whoIsServer, $domain); if(!$whoIsResult) < return "Error: No results retrieved from $whoIsServer server for $domain domain!"; >else < while(strpos($whoIsResult, "Whois Server:") !== FALSE)< preg_match("/Whois Server: (.*)/", $whoIsResult, $matches); $secondary = $matches[1]; if($secondary) < $whoIsResult = getWhoisServerDetails($secondary, $domain); $whoIsServer = $secondary; >> > return "$domain domain lookup results from $whoIsServer server:\n\n" . $whoIsResult; >
Step4: Make Request to Domain WHOIS SERVER
In functions.php file, we will create function getWhoisServerDetails() to make request to WHOIS server and get WHOIS information.
function getWhoisServerDetails($whoIsServer, $domain) < $port = 43; $timeout = 10; $whoIsInfo = @fsockopen($whoIsServer, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr); fputs($whoIsInfo, $domain . "\r\n"); $output = ""; while(!feof($whoIsInfo))< $output .= fgets($whoIsInfo); >fclose($whoIsInfo); $whosIsResults = ""; if((strpos(strtolower($output), "error") === FALSE) && (strpos(strtolower($output), "not allocated") === FALSE)) < $whoIsRecords = explode("\n", $output); foreach($whoIsRecords as $whoIsRecord) < $whoIsRecord = trim($whoIsRecord); if(($whoIsRecord != '') && ($whoIsRecord!= '#') && ($whoIsRecord != '%')) < $whosIsResults .= $whoIsRecord."\n"; >> > return $whosIsResults; >
- Star Rating System with Ajax, PHP and MySQL
- Create Event Calendar with jQuery, PHP and MySQL
- Build Your Own CAPTCHA Script with PHP
- Convert Unix Timestamp To Readable Date Time in PHP
- Inventory Management System with Ajax, PHP & MySQL
- Create Live Editable Table with jQuery, PHP and MySQL
- Live Add Edit Delete datatables Records with Ajax, PHP and MySQL
- Stripe Payment Gateway Integration in PHP
- Export Data to Excel with PHP and MySQL
- Star Rating System with Ajax, PHP and MySQL
- Create Dynamic Bootstrap Tabs with PHP & MySQL
- How To Create Simple REST API in PHP
You can view the live demo from the Demo link and can download the script from the Download link below.
Demo Download
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
phpWhois general repository
License
phpWhois/phpWhois
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
This package contains a Whois (RFC954) library for PHP. It allows a PHP program to create a Whois object, and obtain the output of a whois query with the lookup function.
The response is an array containing, at least, an element ‘rawdata’, containing the raw output from the whois request.
In addition, if the domain belongs to a registrar for which a special handler exists, the special handler will parse the output and make additional elements available in the response. The keys of these additional elements are described in the file HANDLERS.md.
It fully supports IDNA (internationalized) domains names as defined in RFC3490, RFC3491, RFC3492 and RFC3454.
It also supports ip/AS whois queries which are very useful to trace SPAM. You just only need to pass the doted quad ip address or the AS (Autonomus System) handle instead of the domain name. Limited, non-recursive support for Referral Whois (RFC 1714/2167) is also provided.
phpWhois requires PHP 5.3 or better with OpenSSL support to work properly.
Without SSL support you will not be able to query domains which do not have a whois server but that have a https based whois.
php composer.phar require «phpwhois/phpwhois»:»~4.0″
Latest development version
php composer.phar require «phpwhois/phpwhois»:»dev-master»
// Load composer framework if (file_exists(__DIR__ . '/vendor/autoload.php')) < require(__DIR__ . '/vendor/autoload.php'); > use phpWhois\Whois; $whois = new Whois(); $query = 'example.com'; $result = $whois->lookup($query,false); echo " "; print_r($result); echo " ";
If you provide the domain name to query in UTF8, then you must use:
If the query string is not in UTF8 then it must be in ISO-8859-1 or IDNA support will not work.
You can use phpWhois to query domain names, ip addresses and other information like AS, i.e, both of the following examples work:
use phpWhois\Whois; $whois = new Whois(); $result = $whois->lookup('example.com'); $whois = new Whois(); $result = $whois->lookup('62.97.102.115'); $whois = new Whois(); $result = $whois->lookup('AS220');
Using special whois server
Some registrars can give special access to registered whois gateways in order to have more fine control against abusing the whois services. The currently known whois services that offer special acccess are:
The new ripe whois server software support some special parameters that allow to pass the real client ip address. This feature is only available to registered gateways. If you are registered you can use this service when querying ripe ip addresses that way:
use phpWhois\Whois; $whois = new Whois(); $whois->useServer('uk','whois.ripe.net?-V, '); $result = $whois->lookup('62.97.102.115');
This server is also using the new ripe whois server software and thus works the same way. If you are registered you can use this service when querying .il domains that way:
use phpWhois\Whois; $whois = new Whois(); $whois->useServer('uk','whois.isoc.org.il?-V, '); $result = $whois->lookup('example.co.uk');
They offer what they call WHOIS2 (see http://www.nominet.org.uk/go/whois2 ) to registered users (usually Nominet members) with a higher amount of permited queries by hour. If you are registered you can use this service when querying .uk domains that way:
use phpWhois\Whois; $whois = new Whois(); $whois->useServer('uk','whois.nic.uk:1043? '); $result = $whois->lookup('example.co.uk');
This new feature also allows you to use a different whois server than the preconfigured or discovered one by just calling whois->useServer and passing the tld and the server and args to use for the named tld. For example you could use another whois server for .au domains that does not limit the number of requests (but provides no owner information) using this:
use phpWhois\Whois; $whois = new Whois(); $whois->useServer('au','whois-check.ausregistry.net.au');
use phpWhois\Whois; $whois = new Whois(); $whois->useServer('be','whois.tucows.com');
to avoid the restrictions imposed by the .be whois server
use phpWhois\Whois; $whois = new Whois(); $whois->useServer('ip','whois.apnic.net');
to lookup an ip address at specific whois server (but loosing the ability to get the results parsed by the appropiate handler)
useServer can be called as many times as necessary. Please note that if there is a handler for that domain it will also be called but returned data from the whois server may be different than the data expected by the handler, and thus results could be different.
If you just want to know if a domain is registered or not but do not care about getting the real owner information you can set:
this will tell phpWhois to just query one whois server. For .com , .net and .tv domains and ip addresses this will prevent phpWhois to ask more than one whois server, you will just know if the domain is registered or not and which is the registrar but not the owner information.
PHPWhois will assume that all whois servers return UTF-8 encoded output, if some whois server does not return UTF-8 data, you can include it in the NON_UTF8 array in whois.servers.php
Workflow of getting domain info
- Call method phpWhois\Whois::lookup() with domain name as parameter
- If second parameter of method is true (default), phpWhois will try to convert the domain name to punycode
- If domain is not listed in predefined handlers ( WHOIS_SPECIAL at src/whois.servers.php ), try to query [tld].whois-servers.net. If it has ip address, assume that it is valid whois server
- Try to query found whois server or fill response array with unknown() method
There is an extended class called phpWhois\Utils which contains a debugging function called showObject() , if you showObject($result) it will output the total layout of the returned object to the web browser.
The latest version of the package and a demo script resides at https://github.com/phpWhois/phpWhois
If you want to add support for new TLD, extend functionality or correct a bug, feel free to create a new pull request at Github’s repository https://github.com/phpWhois/phpWhois
dale-c-anderson / whois.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
< form method = GET action =" " > |
< input type = text name =" q " value =" " > |
< pre > |
/* |
* whois.php |
*/ |
main(); |
function main () |
$ domain = $ _REQUEST [ ‘q’ ]; |
if (! $ domain ) |
return FALSE ; |
> |
if (!is_valid_domain_name( $ domain )) |
echo » Invalid query «; |
return FALSE ; |
> |
if (strlen( $ domain ) < 4 ) |
echo » No domain name is that short. «; |
return FALSE ; |
> |
if (strlen( $ domain ) > 80 ) |
echo » Too long. «; |
return FALSE ; |
> |
//echo ‘$ whois ‘ . htmlentities($domain) . «\r\n»; |
$ whois = shell_exec(» whois ‘ » . addslashes( $ domain ) . » ‘ «); |
print_r( $ whois ); |
> |
function is_valid_domain_name ( $ domain_name ) |
// Thanks to http://stackoverflow.com/a/4694816 |
return (preg_match(» /^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i «, $ domain_name ) //valid chars check |
&& preg_match(» /^.$/ «, $ domain_name ) //overall length check |
&& preg_match(» /^[^\.](\.[^\.])*$/ «, $ domain_name ) ); //length of each label |
> |