< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<html>
<tête>
<title>Document sans titre</title>
<méta http-equiv="Content-Type" content="text/html; charset=gb2312">
</tête>
<corps>
<%
finition sombregetip,showip,allip
'////////////////////////////////////////////// /// ////////
« Le programme n'est pas encore très rationalisé et sera modifié ultérieurement.
'La base de données utilisée par ce programme est - "Feng Zhihong" - écrite par - "Punt" - la base de données IP incluse dans le logiciel et
"Le "Global IP Address Allocation Table.chm" écrit par l'auteur de "Guohua Soft" - "Feng Guohua" - est combiné en un seul
'Merci à "Feng Zhihong" et "Feng Guohua" pour avoir fourni des données
« Il y a encore de nombreuses adresses IP en double dans la base de données. J'espère que quelqu'un pourra les supprimer et réduire la taille de la base de données.
« Mon programme est encore très maladroit. J'espère que tout le monde pourra me donner plus d'avis et communiquer davantage. Merci !
'////////////////////////////////////////////// /// //////////
'Solution : www.downcodes.com
'L'adresse IP du client obtenue est généralement 202.11.25.1 et le format IP dans la base de données est 202.011.025.001, ce qui nécessite l'adresse IP obtenue.
'Convertir l'adresse IP du client au même format que l'adresse IP dans la base de données
"Étant donné que l'adresse IP que nous utilisons actuellement est divisée en 4 segments, chaque segment comporte 3 chiffres, séparés par "."
"Mon idée est donc de diviser l'adresse IP du client en 4 segments avec le symbole ".", c'est-à-dire 202/11/25/1.
" Ensuite, vérifiez chaque paragraphe séparément. S'il contient 3 chiffres, il restera inchangé ; s'il contient moins de 3 chiffres, il sera de 2 chiffres. Ajoutez 1 0 devant le paragraphe et ce sera 1. De même, ajoutez 2. 0s.
"Après avoir obtenu l'adresse IP formatée, supprimez le dernier segment de l'adresse IP, c'est-à-dire prenez les 11 premiers chiffres, y compris ".", comparez-le avec les 11 premiers chiffres du champ startip dans la base de données et trouvez la même valeur.
"Parce qu'il ressort de la base de données que les trois premiers segments de startip et endip sont identiques, et que le dernier segment est simplement l'adresse de sous-réseau interne et peut être supprimé.
« Il suffit donc de prendre les 11 premiers chiffres de n'importe quel champ de début ou de fin et de les comparer avec les 11 premiers chiffres de l'adresse IP du client pour trouver l'emplacement correct.
'////////////////////////////////////////////// /// ///////////////
fonction checkip_trueip()
'Obtenir la véritable adresse IP du client
getclientip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 'Si le client utilise un serveur proxy, la méthode Request.ServerVariables("REMOTE_ADDR") ne peut obtenir qu'une valeur nulle, alors la méthode ServerVariables("HTTP_X_FORWARDED_FOR") doit être utilisée
Si getclientip = "" Alors
getclientip = Request.ServerVariables("REMOTE_ADDR")'Si le client n'utilise pas de proxy, Request.ServerVariables("HTTP_X_FORWARDED_FOR") obtiendra une valeur nulle et la méthode Request.ServerVariables("REMOTE_ADDR") doit être utilisée
finir si
checkip_trueip = getclientip
fonction de fin
'////////////////////////////////////////////// /// ////////
fonction getaccessrecordset(db,sql,mark,read)'Obtenir l'objet Recordset
set conn=getaccessconn(db)'Les paramètres d'entrée sont le chemin relatif de la base de données, l'instruction sql-SQL, mark, read sont des méthodes de lecture de base de données, 1,1 sont en lecture seule, 1,3 sont en lecture-écriture
'constr="Provider=microsoft.jet.oledb.4.0;"&"data Source="&Server.MapPath(db)
'conn.open construction
set getaccessrecordset=server.CreateObject("ADODB.Recordset")
getaccessrecordset.open sql, conn, marque, lecture
Fin de fonction
'////////////////////////////////////////////// /// ///////////
function getaccessconn(db)'Obtenir l'objet de connexion
set getaccessconn=server.CreateObject("ADODB.Connection")
'constr="DRIVER={PILOTE D'ACCÈS MICROSOFT (*.MDB)};DBQ="&SERVER.MAPPATH("allcon/#bbsall.mdb")
constr="Provider=microsoft.jet.oledb.4.0;"&"data Source="&Server.MapPath(db)
getaccessconn.open construction
fonction de fin
'////////////////////////////////////////////// /// ///////////
faible getip
'getip=(trim(request.ServerVariables("REMOTE_ADDR")))'Obtenir l'IP du client
'getip=(trim(request.QueryString("comes"))) 'Entrez vous-même l'adresse IP pour tester
'response.Write(getip&"<br>")
'////////////////////////////////////////////// /// ///////////
function checkip_locations(checkstring) 'Renvoie la fonction de localisation du caractère délimiteur dans IP
checkip_locations=Instr(checkstring,".") 'Attribuer la valeur de l'emplacement à la fonction
fonction de fin
'////////////////////////////////////////////// /// ///////////
'La fonction suivante consiste à diviser l'IP et à obtenir la chaîne IP restante sur le côté droit du symbole "."
fonction checkip_left (chaîne de contrôle)
locations_left=checkip_locations(checkstring) 'Obtenir l'emplacement où "." apparaît en premier dans la chaîne IP restante
iplength_left=Len(checkstring) 'Obtenir la longueur de la chaîne restante de l'adresse IP
Divide_locations_left=iplength_left-locations_left 'Obtenir la position où "." apparaît pour la première fois dans la chaîne IP restante, combien de chiffres y a-t-il de droite à gauche
ipstr_left=Right(checkstring,divide_locations_left) 'Obtenir la chaîne IP restante sur le côté droit du symbole "."
checkip_left=ipstr_left 'Assignez la chaîne obtenue ci-dessus à la fonction
fonction de fin
'////////////////////////////////////////////// /// //////////
'La fonction suivante consiste à diviser l'IP et à obtenir la chaîne IP à gauche du symbole "." après chaque division, c'est-à-dire que l'IP est divisée en quatre segments et la fonction de chaîne de chaque segment
est checkip_right(checkstring)
locations_right=checkip_locations(checkstring) 'Obtenir l'emplacement où "." apparaît pour la première fois dans l'adresse IP.
iplength_right=Len(checkstring) 'Obtenir la longueur de la chaîne IP
Divide_locations_right=iplength_right-locations_right 'Obtenir la position où "." apparaît pour la première fois dans la chaîne IP restante, combien de chiffres y a-t-il de droite à gauche
ipstr11=Trim(Replace(Left(checkstring,locations_right),".","")) 'Supprimez le symbole "." de la chaîne à gauche du "."
'Si l'adresse IP est divisée en 4 segments et que chaque segment comporte moins de 3 chiffres, ajoutez 0
si Len(ipstr11)="2" alors ipstr11="0"&ipstr11
si Len(ipstr11)="3" alors ipstr11=ipstr11
si Len(ipstr11)="1" alors ipstr11="00"&ipstr11
checkip_right=ipstr11 'Récupère la chaîne avant le symbole ".", c'est-à-dire que l'un des quatre segments après l'adresse IP est divisé en quatre segments.
fonction de fin
'//////////////////////////////////////////// /// //////////
'Vérifiez si l'IP est une IP du réseau interne
'Le jugement que j'ai rédigé est basé sur : 127.0.0.0-127.XXX.XXX.255 et 192.0.0.0-192.XXX.XXX.255. Si ce sont ces deux-là, c'est l'IP du réseau interne, sinon c'est l'IP du réseau interne. réseau externe.
«Je ne sais pas sur quoi repose le jugement de la propriété intellectuelle interne, j'ai donc besoin d'experts pour me donner des conseils et apporter des corrections. Contactez-moi.»
fonction checkiplocal (chaîne de contrôle)
faible re1
set re1=new RegExp 'Obtenir un objet d'expression régulière
L'expression dans 're1.pattern est que l'adresse IP du réseau interne doit commencer par 127 ou 192, et le milieu doit être composé de 1 à 3 chiffres de 0 à 9 plus "."
re1.pattern="^(127.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})|(192. [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})$"
re1.global = faux
re1.Ignorecase=false
checkiplocal=re1.test(chaîne de contrôle)
définir re1 = rien
fonction de fin
'////////////////////////////////////////////// /// ///////////////////////
fonction checkip_remote (chaîne de contrôle)
dim iplength 'La longueur de la chaîne IP
estomper les emplacements '"."L'emplacement où le personnage apparaît
iplength=Len(checksting)
locations=Instr(checkstring,".") 'Récupère la position où le symbole "." apparaît pour la première fois dans la chaîne IP de gauche à droite
'Divisez l'adresse IP en 4 segments avec les caractères "."
locations2=iplength-locations
ipstring1=Gauche (chaîne de contrôle, emplacements)
ipstring2 = Droite (chaîne de contrôle, emplacements2)
fonction de fin
'////////////////////////////////////////////// /// ////////
'////////////////////////////////////////////// /// ////////
ipinfo_local="Votre IP est une IP intranet !"
ipinfo_remote="IP du réseau externe!"
getip=checkip_trueip()
currentip=checkiplocal(getip) 'Appelez la fonction checkiplocal() pour vérifier l'IP obtenue afin de déterminer s'il s'agit d'une adresse réseau interne ou d'une adresse réseau externe
'si currentip=true alors' code de test
'response.Write(ipinfo_local)
si currentip=true alors 'est faux
réponse.Write(ipinfo_local)' indique l'adresse IP du réseau interne
autre
'Convertir
'Ce qui suit est une extraction de boucle et un remplissage de bits avec 0 pour diviser l'IP en 4 segments
locations=checkip_locations(getip)'Obtenir l'emplacement où "." apparaît pour la première fois dans l'adresse IP avant la première division
iplength=Len(getip) 'Obtenir la longueur de l'adresse IP du client
Divide_locations=iplength-locations 'Obtenir l'emplacement de l'adresse IP du client en comptant de droite à gauche jusqu'au premier "." de l'adresse IP en comptant de gauche à droite.
ipstr1=Trim(Remplacer(Gauche(getip,emplacements),".",""))
ipstr2=Right(getip,divide_locations)'Obtenir la valeur restante sur le côté droit du client après la première division
'Si l'adresse IP est divisée en 4 segments et que chaque segment comporte moins de 3 chiffres, ajoutez 0
if Len(ipstr1)="2" then ipstr1="0"&ipstr1 'La longueur est de deux, inférieure à trois, ajoutez un 0 avant la chaîne
if Len(ipstr1)="3" then ipstr1=ipstr1 'Selon l'analogie ci-dessus
if Len(ipstr1)="1" then ipstr1="00"&ipstr1 'L'ipstr1 à ce moment est le premier segment de l'IP
ipstr12=checkip_right(ipstr2) 'L'ipstr12 est actuellement le deuxième segment de l'IP
ipstr122=checkip_left(ipstr2)
ipstr13=checkip_right(ipstr122) 'L'ipstr13 est actuellement le troisième segment de l'IP
ipstr14=checkip_left(ipstr122) 'L'ipstr14 est actuellement le quatrième segment d'IP
if Len(ipstr14)="1" then ipstr14="00"&ipstr14 'Ajoutez 0 au quatrième segment de l'IP obtenue. Cette étape n'est pas nécessaire.
si Len(ipstr14)="2" alors ipstr14="0"&ipstr14
si Len(ipstr14)="3" alors ipstr14=ipstr14
'response.write ipstr1&"<br>" 'Écrivez la valeur de chaque segment après la segmentation IP
'response.write ipstr12&"<br>"
'response.write ipstr13&"<br>"
'response.write ipstr14
allip=ipstr1&"."&ipstr12&"."&ipstr13&"."&ipstr14
finishgetip=gauche(allip,11)
faible ipaddr, iplocal, sqls
'L'instruction SQL suivante consiste à extraire si la valeur de 11 bits gauche du champ startip est égale à la valeur de 11 bits gauche de l'adresse IP du client.
sqls="SELECT country_state,areauser FROM ip WHERE Left(startip,11)='"&finishgetip&"'"
set rs=getaccessrecordset("#worldip.mdb",sqls,"1","1") 'Obtenir la valeur de la requête
if rs.eof then 'Si aucune valeur égale à l'adresse IP du client n'est trouvée
showip=checkip_trueip() 'Attribuez l'adresse IP du client à showip
ipaddr="Région inconnue" 'Pays ou province
iplocal="Localisation inconnue" 'Lieu spécifique
autre
showip=checkip_trueip()
ipaddr=rs("pays_state")
iplocal=rs("utilisateur de zone")
finir si
'response.write("Votre IP est : "&showip&" ")
'response.write("Vous venez de : "&ipaddr&" ")
'response.write("Vous êtes :"&iplocal)
rs.fermer
définir rs = rien
%>
<%="Votre IP est :"&showip&" "%>
<%="Vous venez de :"&ipaddr&" "%>
<%="Vous êtes :"&iplocal&"<br>"%>
S'il y a une erreur dans l'adresse IP, veuillez me contacter ou télécharger la base de données pour correction, merci ! <br>
<table width="760" border="0" Cellpacing="0" cellpadding="0">
<tr>
<td width="203"><a href="Script56.rar">Télécharger Script56.CHM</a>-->1,34 M</td>
<td width="548">Introduction : documentation d'aide de Microsoft, y compris la syntaxe VBscript, la syntaxe JScript et les expressions régulières </td>
<td width="3"> </td>
<td width="6"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><a href="ipsearch.rar">Télécharger le programme de recherche d'adresses IP globale ASP</a></td>
<td>ASP+ACCESS taille format 401K rar</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><font color="#000099"> </font> <font color="#0000FF"> </font></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Si votre adresse IP est inconnue, veuillez indiquer votre emplacement si vous le souhaitez :</td>
<td>
<form name="form1" method="post" action="postip.asp">
<table width="100%" border="1" Cellpacing="0" cellpadding="0">
<tr>
<td width="21%">Province : </td>
<td largeur="44%">
<input type="text" name="country_state">
</td>
<td width="35%"> </td>
</tr>
<tr>
<td width="21%">Emplacement spécifique ou utilisateur du réseau :</td>
<td largeur="44%">
<input type="text" name="areauser">
</td>
<td width="35%">Par exemple : utilisateurs de l'Université Tsinghua de Pékin ou de Beijing Netcom</td>
</tr>
<tr>
<td width="21%"> </td>
<td largeur="44%">
<input type="hidden" name="startip" value="<%=finishgetip&".000"%>">
<input type="hidden" name="endip" value="<%=finishgetip&".255"%>">
</td>
<td width="35%"> </td>
</tr>
<tr>
<td width="21%"> </td>
<td largeur="44%">
<input type="submit" name="Soumettre" value="Soumettre">
</td>
<td width="35%"> </td>
</tr>
</table>
</form>
</td>
<td> </td>
<td> </td>
</tr>
</table>
<%
finir si
%>
</corps>
</html>
Adresse de démonstration : http://www.knowsky.com/ip