Wikipedia escribió:
Generalmente este servicio(WhoIs) es útil para las empresas que se dedican a la venta de dominios, antes de proceder con la venta, verifican si el domino esta registrado. Así que si tu vendes dominios y no tienes tu propio servicio de WhoIs, este tutorial es para tí.
Como sabemos, con php, podemos realizar cualquier tipo de comunicación utilizando el protocolo TCP/IP, whois no es la excepción. Bien, este tutorial tratará de explicar de forma sencilla, como crear tu propio servicio de WHOIS, con Flash Remoting y AMFPHP.
¿Qué debe saber para completar este tutorial?
- Flash remoting, nivel medio a Avanzado
- AMFPHP, nivel medio a Avanzado
- Conocimiento de OOP
¿Qué requiero para completar el tutorial?
- Servidor Web, Apache es una buena opción
- PHP 4 o superior
- Compilador de swf, como el IDE de Flash. Si esto te confunde, Flash el que siempre usas, es lo que necesitas.
- Editor de php, NotePad++, por ejemplo.
- La clase de AS 2.0 Danonino.FRemoting
Creando el servicio para AMFPHP:
Crea en tu carpeta de servicios, una carpeta con el nombre Danonino. Dentro de esta debes crear un arhivo de nombre WhoIs.php y otro de nombre tlds.php.
Documentación:
Nombre de la Clase: WhoIs
Métodos:
- getTLDs: Nos regresa la lista de TLD(Top Level Domain) que podemos utilizar, estos los saca del arhivo externo tlds.php.
- find: Búsca la información del dominio en el servidor. Para esto se conecta al servidor por el puerto estándar para el servicio de whois(Puerto 43). Recibe la respuesta y la envía a Flash.
Código de WhoIs.php:
Código :
<?php class WhoIs{ function WhoIs(){ $this->methodTable = array( "getTLDs" => array( "description" => "Regresa la lista de TLDs disponibles", "access" => "remote", // Posibles valores private, public, remote "arguments" => "Ninguno" ), "find" => array( "description" => "Búsca el registro de un dominio", "access" => "remote", // Posibles valores private, public, remote "arguments" => "Nombre de dominio, TLD" ) ); } function getTLDs(){ include_once("tlds.php"); return getArrayOfTlds(); } function find($domainName, $NIC){ $serverWhoIs = fsockopen($NIC,43); fputs($serverWhoIs, $domainName . "\r\n"); $answer = ''; while(!feof($serverWhoIs)) $answer .= fgets($serverWhoIs,128); fclose($serverWhoIs); $answer = str_replace("\r\n", "\n", $answer); return $answer; } } ?>
En el archivo tlds.php es donde podemos agregar/quitar los tipos de dominios que aceptaremos en nuestra búsqueda. Se debe definir la extensión, y el servidor regresará la información. Es importante mencionar, que antes de agregar un servidor whois TLD, debe consultar si usted tiene y puede usar dicho servicio. Los que en este ejemplo se utilizan, no tienen otro fin, mas que ser eso, un ejemplo.
Código de tlds.php:
Código :
<?php function getArrayOfTlds(){ $alTLD[0]["tld"] = ".com"; $alTLD[0]["nic"] = "whois.internic.com"; $alTLD[1]["tld"] = ".org"; $alTLD[1]["nic"] = "whois.pir.org"; $alTLD[2]["tld"] = ".com.mx"; $alTLD[2]["nic"] = "whois.nic.mx"; $alTLD[3]["tld"] = ".org.mx"; $alTLD[3]["nic"] = "whois.nic.mx"; $alTLD[4]["tld"] = ".edu.mx"; $alTLD[4]["nic"] = "whois.nic.mx"; return $alTLD; } ?>
Creando el servicio en Flash:
Crearemos un nuevo MovieClip, al cual le asignaremos la siguiente clase:
Danonino.WhoIs
El contenido de este MovieClip debe ser:
- itDomain:TextInput
- clTLDs:ComboBox
- btnFind:Button
- dtMessage:DynamicText
- taDomainData:TextArea
Documentación
Nombre de la clase: Danonino.WhoIs
Constructor: Leé la lista de DTLs, y asigna los eventos a bótones. Inicializa valores default.
Métodos: find, búsca la información del dominio que fué introducido en itDomain(TextInput). Para esto se conecta a nuestro servicio AMFPHP, recién creado.
En nuestro directorio de clases de AS 2.0, crearemos la siguiente(dentro de la carpeta Danonino):
Código :
import Danonino.FRemoting; import mx.controls.TextInput; import mx.controls.ComboBox; import mx.utils.Delegate; class Danonino.WhoIs extends MovieClip{ static var slGatewayURL = "amfphp/gateway.php"; var slWhoIS:FRemoting; var itDomain; var btnFind; var clTLDs; var taDomainData; var dtMessage; function WhoIs(){ itDomain.restrict = "0-9A-Za-z-"; slWhoIS = new FRemoting(slGatewayURL,"Danonino.WhoIs"); slWhoIS.events._parent = this; slWhoIS.events.onGetTLDs = function( data ){ var llTLDs:Array = data; for(var i in llTLDs){ llTLDs[i]["label"] = llTLDs[i]["tld"]; llTLDs[i]["data"] = llTLDs[i]["nic"]; delete llTLDs[i]["tld"] } clTLDs.dataProvider = llTLDs; dtMessage.text = "Listo, introduzca su nombre de dominio"; btnFind._visible = true; } slWhoIS.process("getTLDs"); dtMessage.text ="Leyendo TLDs..."; btnFind.onRelease = Delegate.create(this,find); } function onCreate(){ btnFind._visible = false; } function find(){ taDomainData.text = ""; if(itDomain.text.length > 0){ var DomainName:String = itDomain.text + clTLDs.selectedItem.label; slWhoIS.events.onFind = function(data){ taDomainData.text = data; btnFind._visible = true; dtMessage.text = "¡Datos leídos, eso es c00l!"; } dtMessage.text = "Leyendo información!"; slWhoIS.process("find",[DomainName, clTLDs.selectedItem.data]); btnFind._visible = false; }else{ dtMessage.text ="Oye wey, escribe el nombre de dominio"; } } }
Ejemplo del tutorial:
http://www.danonino.org/whois/whois.html
Preguntas, en el foro. Si no quieres hacer nada, y quieres comprar un servicio completo para tu sitio, contactame.
Espero y sea de su interés este tema.
Saludos