La potenza dell’oggetto XMLHTTP, di casa Microsoft, permette di lavorare con file remoti e di gestirne una serie di dati; tra le sue molte sfaccettature esiste la proprietà Status che permette di definire, come si intende, lo stato della richiesta. In questo Articolo esaminiamo lo stato identificato col numero 12007 che identifica se la richiesta è andata a buon fine o meno.
Prendiamo sputo per costruire una piccola utility per il nostro sito per verificare se un dominio esiste o meno: si tratta di un servizio meno potente di un tradizionale WhoIs che conosciamo sui vari siti di Hosting della rete, nel senso che non è possibile sapere a chi è intestato il dominio e quali sono i dati di rete associati, ma semplicemente se è stato registrato o meno.
Di seguito un codice statico che verifica se il dominio specificato nella variabile indirizzo esiste o meno:
<%@LANGUAGE = VBScript%>
<html>
<body>
<p>
<%
Dim indirizzo, xmlhttp, stato
indirizzo = "http://www.mrwcorsi.it"
Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
On Error Resume Next
xmlhttp.Open "GET", indirizzo, False
xmlhttp.Send
stato = xmlhttp.Status
If CInt(stato) = 12007 Then
Response.Write "Dominio libero"
Else
Response.Write "Dominio occupato"
End If
Set xmlhttp = Nothing
%>
</p>
</body>
</html>
Commentiamo il codice.
Dim indirizzo, xmlhttp, stato
Dichiaro le variabili che servono per indicare il dominio da pingare, per creare l’oggetto XMLHTTP e per definire lo stato della richiesta.
indirizzo = "http://www.mrwcorsi.it"
Valorizzo la variabile indirizzo con la URL del sito di MRW Corsi, tanto per fare un esempio.
Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
Creo un’istanza dell’oggetto XMLHTTP nella variabile xmlhttp.
On Error Resume Next
Questa clausola di gestione dell’errore è indispensabile perchè se ad XMLHTTP viene passato un file remoto, o in questo caso un dominio remoto, inesistente, va in errore e termina l’esecuzione della pagina. Questa gestione dell’errore serve nel caso in cui il dominio ricercato sia libero.
xmlhttp.Open "GET", indirizzo, False xmlhttp.Send
Apro e lancio la richiesta HTTP.
stato = xmlhttp.Status
Assegno alla variabile stato lo stato della richiesta.
If CInt(stato) = 12007 Then
Response.Write "Dominio libero"
Else
Response.Write "Dominio occupato"
End If
Lancio la condizione secondo la quale se lo stato della richiesta è 12007 allora il dominio è libero, altrimenti vuol dire che il dominio è occupato. Per effettuare la verifica è necessario convertire in numerico la variabile stato con la funzione predefinita CInt() di VBScript (nativa di Visual Basic).
Lascio a voi il compito di creare un file HTML con un modulo che permetta di inserire il dominio da ricercare e di assegnare alla variabile indirizzo il compito di recuperare il dato; ad esempio:
Dim indirizzo
indirizzo = Request.Form("indirizzo")
