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
