Simpele whois

Door Clifford James, 20 jaar geleden, 3.408x bekeken

Gemaakt voor een domeinregistratie systeem tijdens mijn stage.
Het is een beetje simpel maar als het goed gebruikt wordt functioneerd
het naar behoefte.

Javascript is icm Prototype.js.

Sommige whois servers hebben een limit voor het aantal requests
per dag, bijvoorbeeld de server voor .nl domeinnamen (SIDN).
Je krijgt dan waarschijnlijk een andere response en dan zal de output
niet betrouwbaar zijn.

html pagina

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script type="text/javascript">
function check() {
  new Ajax.Updater('status', '/xml/checkdomain.php', {
    parameters: {
      domeinnaam: $F('domeinnaam')
    }
  });
}
</script>

<table>
  <tr>
    <td>Domeinnaam</td>
    <td><input type="text" id="domeinnaam" /></td>
  </tr>
  <tr>
    <td colspan="2" align="right"><input type="text" id="status" /></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="button" onclick="check()" value="Check" /></td>
  </tr>
</table>


checkdomain.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$domain
=$_GET['domeinnaam']; //opgegeven domeinnaam bijv. test.nl
$type=explode('.',$domain); //splitst het domeinaam op de punten en geeft array terug, bijv. $type bevat dan [0]=>'test',[1]=>'nl'
$type=$type[1].(($type[2])?".".$type[2]:""); //maakt van $type weer een string en kijkt voor tld's als co.uk, $type is nu nl

$server=array('ac'=>'whois.nic.ac','aero'=>'whois.aero','ag'=>'whois.nic.ag','am'=>'whois.amnic.net','at'=>'whois.nic.at','au'=>'whois.aunic.net','be'=>'whois.dns.be','bg'=>'whois.register.bg','biz'=>'whois.neulevel.biz','bj'=>'whois.nic.bj','br'=>'whois.registro.br','ca'=>'whois.cira.ca','ch'=>'whois.nic.ch','ci'=>'whois.nic.ci','cl'=>'whois.nic.cl','cn'=>'whois.cnnic.net.cn','co.nz'=>'whois.srs.net.nz','co.uk'=>'whois.nic.uk','com'=>'whois.opensrs.net','com.mx'=>'whois.nic.mx','coop'=>'whois.nic.coop','cx'=>'whois.nic.cx','cz'=>'whois.nic.cz','de'=>'whois.denic.de','dk'=>'whois.dk-hostmaster.dk','ee'=>'whois.eenet.ee','edu'=>'whois.educause.net','eu'=>'whois.eu','fi'=>'whois.ficora.fi','fr'=>'whois.nic.fr','gg'=>'whois.channelisles.net','gi'=>'whois2.afilias-grs.net','gs'=>'whois.nic.gs','hk'=>'whois.hkirc.hk','hn'=>'whois2.afilias-grs.net','ie'=>'whois.domainregistry.ie','il'=>'whois.isoc.org.il','in'=>'whois.inregistry.net','info'=>'whois.afilias.info','int'=>'whois.iana.org','io'=>'whois.nic.io','is'=>'whois.isnic.is','it'=>'whois.nic.it','je'=>'whois.channelisles.net','jp'=>'whois.jprs.jp','kz'=>'whois.nic.kz','li'=>'whois.nic.li','lt'=>'whois.domreg.lt','lu'=>'whois.dns.lu','lv'=>'whois.nic.lv','ms'=>'whois.adamsnames.tc','museum'=>'whois.museum','my'=>'whois.mynic.net.my','na'=>'whois.na-nic.com.na','name'=>'whois.nic.name','net'=>'whois.opensrs.net','nl'=>'whois.domain-registry.nl','no'=>'whois.norid.no','nu'=>'whois.nic.nu','or.kr'=>'whois.nic.or.kr','org'=>'whois.publicinterestregistry.net','pm'=>'whois.nic.pm','re'=>'whois.nic.re','ro'=>'whois.rotld.ro','ru'=>'whois.ripn.net','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','st'=>'whois.nic.st','tc'=>'whois.adamsnames.tc','tf'=>'whois.nic.tf','tl'=>'whois.nic.tl','tm'=>'whois.nic.tm','tr'=>'whois.nic.tr','tw'=>'whois.twnic.net.tw','ua'=>'whois.net.ua','us'=>'whois.nic.us','uz'=>'whois.cctld.uz','vc'=>'whois2.afilias-grs.net','ve'=>'whois.nic.ve','vg'=>'whois.adamsnames.tc','wf'=>'whois.nic.wf','ws'=>'whois.worldsite.ws','yt'=>'whois.nic.yt');

$nomatch=array('ac'=>'Available','aero'=>'NOT FOUND','ag'=>'NOT FOUND','am'=>'No match','at'=>'nothing found','au'=>'No Data Found','be'=>'FREE','bg'=>'does not exist','biz'=>'Not found','bj'=>'No records','br'=>'No match','ca'=>'AVAIL','ch'=>'not have an entry','ci'=>'not found','cl'=>'no existe','cn'=>'no matching record','co.nz'=>'Available','co.uk'=>'No match','com'=>'Can\'t get information','com.mx'=>'Nombre del','coop'=>'No domain records','cx'=>'Not Registered','cz'=>'No data found','de'=>'free','dk'=>'No entries found','ee'=>'NOT FOUND','edu'=>'No Match','eu'=>'FREE','fi'=>'not found','fr'=>'No entries found','gg'=>'not found','gi'=>'NOT FOUND','gs'=>'Not Registered','hk'=>'Not Found','hn'=>'NOT FOUND','ie'=>'is not a registered','il'=>'No data was found','in'=>'NOT FOUND','info'=>'NOT FOUND','int'=>'not found','io'=>'Available','is'=>'No entries found','it'=>'AVAILABLE','je'=>'not found','jp'=>'No match','kz'=>'Nothing found','li'=>'not have an entry','lt'=>'available','lu'=>'No such domain','lv'=>'Nothing found','ms'=>'not registered','museum'=>'NOT FOUND','my'=>'does not Exist','na'=>'No records','name'=>'No match','net'=>'Can\'t get information','nl'=>'free','no'=>'no matcheso','nu'=>'NO MATCH','or.kr'=>'not registered','org'=>'NOT FOUND','pm'=>'No entries found','re'=>'No entries found','ro'=>'No entries found','ru'=>'No entries found','sb'=>'No Data Found','sc'=>'NOT FOUND','se'=>'not found','sg'=>'NOMATCH ','sh'=>'Available','si'=>'No entries found','st'=>'No entries found','tc'=>'not registered','tf'=>'No entries found','tl'=>'Not Registered','tm'=>'Available','tr'=>'No match found','tw'=>'No Found','ua'=>'No entries found','us'=>'Not found','uz'=>'not found','vc'=>'NOT FOUND','ve'=>'No match','vg'=>'not registered','wf'=>'No entries found','ws'=>'No match','yt'=>'No entries found');

$ns=fsockopen($server[$type],43); //uit de array $server pakt hij de server waar van de key nl is($type), in dit voorbeeld is dat whois.domain-registry.nl en maakt verbinding
fputs($ns,"$domain\r\n"); //domeinnaam doorgeven, in voorbeeld test.nl
while(!feof($ns))$result.=fgets($ns,128); //response ophalen
fclose($ns); //verbinding sluiten

echo((eregi($nomatch[$type],$result))?"Beschikbaar":"Bezet"); //kijken of in het resultaat de nomatch voorkomt voor nl is dat free en dan beschikbaar of bezet weergeven
?>

Gesponsorde koppelingen

PHP script bestanden

  1. simpele-whois

 

Er zijn 13 reacties op 'Simpele whois'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Storeman storeman
storeman storeman
20 jaar geleden
 
0 +1 -0 -1
Iets van een voorbeeldcode is wel handig. Zonder comments is het ook maar gokken wat hiermee gedaan moet worden. Ik kan ook niet echt inschatten of dit nou leuk gecode is, daar ik de intentie van de code niet echt kan bevatten.
Jacco Engel
Jacco Engel
20 jaar geleden
 
0 +1 -0 -1
Dit is leuk gecode.

Vermeld alleen ook even dat je voor bijvoorbeeld .nl (en nog een aantal anderen volgens mij) maar een gelimiteerd aantal aanvragen per minuut kan toen tenzij je geregistreerd staat bij de betreffende party
Clifford James
Clifford James
20 jaar geleden
 
0 +1 -0 -1
@storeman
Ik heb er wat comments bij gezet, miss is het nu wat duidelijker.

@Jacco
Bedankt voor de tip, ik heb het er gelijk bijgezet.

Misschien iemand die het javascript stukje erbij wilt zien?
Het is gemaakt i.c.m. Prototype.js.


20 jaar geleden
 
0 +1 -0 -1
Dit is geen WhoIs, dit is puur kijken of er een registratie is.
Wat gebeurd er als een WhoIs server tijdelijk niet bereikbaar is?
Je haalt variabelen niet buiten quotes.
Clifford James
Clifford James
20 jaar geleden
 
0 +1 -0 -1
@Webmakerij
Een whois is puur het opvragen van informatie van een domeinnaam, kan zijn de houder gegevens, de nameservers of de status. In dit geval gebruik ik van de whois all1 maar de status.

Verder staat er:

"Simpele whois
Simpel zonder foutcontroles 27.08.2007"

Ik heb er geen fout afvanging omheen gebouwd omdat het toch hier intern door personeel wordt gebruik en er van uit gaande dat de whois servers een 99,9% uptime hebben.

"Je haalt variabelen niet buiten quotes."

Dat stukkie snap ik niet, wat bedoel je hiermee?
Cake Masher
Cake Masher
20 jaar geleden
 
0 +1 -0 -1
@clifford:

hij bedoelt dat dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
fputs($ns,"$domain\r\n");

zo iets zou moeten zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
fputs($ns, $domain . "\r\n");
Clifford James
Clifford James
20 jaar geleden
 
0 +1 -0 -1
@Rick
Als je dubbele quotes gebruikt kan je de variables binnen de dubbele quotes laten staan.
Met enkele quotes kan dat niet.
PHP Newbie
PHP Newbie
20 jaar geleden
 
0 +1 -0 -1
maar het blijft niet netjes ;-)
Clifford James
Clifford James
20 jaar geleden
 
0 +1 -0 -1
Ik zie niet in waarom het niet netjes zou zijn.
Voor kleine teksten is dit gemakkelijk en snel.
Als je grote teksten heb zou ik dit doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $dit,'is',$een,'erg',$lange,'tekst'; ?>


Werkt sneller dan met dubbele quotes en punten.
Storeman storeman
storeman storeman
20 jaar geleden
 
0 +1 -0 -1
ik vind comma's nou niet echt een aanwinst voor de leesbaarheid, dat is wellicht persoonlijk.
Clifford James
Clifford James
20 jaar geleden
 
0 +1 -0 -1
@storeman
Ik stel een lagere processing time voor leesbaarheid van het script.
En persoonlijk maakt het voor mij weinig uit of je punten of comma's gebruikt.
Storeman storeman
storeman storeman
20 jaar geleden
 
0 +1 -0 -1
@Cliffort James

Ik geloofde je eerst niet, na een aantal test blijkt inderdaad dat het een fractie sneller is. Het scheelt ongeveer 0,08 seconden op executie van 100.000 statements. Dit komt neer op 0,0000008 seconden per statement.

In een geval als dit, lijkt het me vreemd om lagere processingtime boven overzichtelijke code te stellen, hopelijk kom je daar ooit van terug (in een niet te extreme vorm de andere kant op).

Overigens, je processingtime word sterker beinvloed door het aantal statements. Ik had eerst een file gebouwd dit wat loopjes en meting deed. Echter elke loop van 100.000 maakte de volgende loop weer trager. Een loop met de commastring was de eerste keer in 1.8s klaar, exact! dezelfde loop was daarna ongeveer 1 seconde langer, de volgende weer etc.

Heeft iemand daar een verklaring voor btw?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Clifford James
Clifford James
20 jaar geleden
 
0 +1 -0 -1
@storeman
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo "bla bla $var bla bla"; ?>

In bovenstaande voorbeeld gaat php zoeken tussen de "" of er variabelen in staan en die parsen. Daarna echo-ed hij het pas.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo "bla bla ".$var." bla bla"; ?>

Hier maakt hij eerst 1 grote string van om het daarna te echo-en.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo "bla bla ",$var," bla bla"; ?>

Hier echo-ed hij elk stukje apart. Het resultaat is het zelfde als de code hierboven maar hij maakt er nu niet eerst 1 grote string van.

Met het gebruik van single quotes geef je aan dat er geen variabelen in staan en hoeft php er dus ook niet naar te zoeken.

In theorie moet dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo 'bla bla ',$var,' bla bla'; ?>

sneller zijn dan dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo "bla bla ",$var," bla bla"; ?>

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. simpele-whois

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.