<codepage = 936%>
<html>
<adal>
<Title> Document sans titre </TITME>
<Meta Http-Equiv = Content-Type Content = Text / HTML;
</ head>
<body>
<%
Dim Finisonget, showip, allip
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////// /
'' Le programme n'est pas très rationalisé, puis le modifiez plus tard
'' La base de données utilisée dans ce programme est- "Feng Zhihong" -Written- "HacQuent" -ip Database et
L'auteur de "GuoHua Software Guohua Soft" - "Feng Guohua" - le "Global IP Address Allocation Table.Chm" Écrit par les deux
'' Merci aux données fournies par "Feng Zhihong" et "Feng Guohua"
Il existe de nombreuses adresses IP en double dans la base de données, j'espère que quelqu'un qui est intéressé peut le supprimer et réduire la base de données
'' Mon programme est très maladroit.
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////// /
'' Solution:
'' L'IP client obtenu est généralement 202.11.25.1, et le format IP dans la base de données est 202.011.025.001, qui doit être obtenu.
'' L'IP client est converti au même format que IP dans la base de données
'' Parce que l'IP actuel que nous utilisons est divisé en 4 segments, chaque section de 3 places, et le milieu est séparé par "."
'' Mon idée est donc de diviser l'IP du client en 4 segments de "."
'' Vérifiez ensuite chaque paragraphe séparément, s'il est de 3 bits, il ne changera pas;
Après la mise en forme de l'IP, la dernière section de l'IP est supprimée, c'est-à-dire les 11 premiers bits, y compris ".
'' Parce que vous pouvez voir dans la base de données, les trois premiers paragraphes de Startip et Dedip sont les mêmes, et le dernier paragraphe n'est que l'adresse de sous-réseau interne, qui peut être supprimée
'' Donc, tant que vous prenez les 11 premiers chiffres de n'importe quel champ de startip ou dedip, par rapport aux 11 premiers de l'IP client, vous pouvez trouver le bon emplacement
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / //////////////////////////////////// Gons
Fonction Checkip_trueip ()
'' Prenez le Client Real IP
getClientip = request.servervariables (http_x_forwarded_for) '' Si le client utilise le serveur proxy, utilisez la méthode de la méthode request.servervariables (redressation_addr).
Si getClientip = alors
GetClientip = equest.servervariables (Remote_addr) '' Si le client n'utilise pas le proxy, alors demande.servervariables (http_x_forwardedded_for) est une valeur vide.
terminer si
checkip_trueip = getClientip
fonction finale
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / //////////////////////////////////
Function getAccessRecordSet (db, sql, mark, lise) ''
Définir Conn = GetAccessConn (DB) '' '' Le chemin relatif du paramètre d'entrée est DB-Database, Instruction SQL-SQL, Mark, Read est une méthode de lecture de base de données, 1,1 est lecture uniquement, 1,3 est lue et Écrire pour la lecture et l'écriture est lu et écrivez.
'' CONSTR = Provider = Microsoft.Jet.oledb.4.0;
'Conn.Open CONCL
SET GETACCESSRECORDSET = Server.CreateObject (ADODB.oldSet)
GetAccessRecordSet.Open SQL, Conn, Mark, Lire
fonction finale
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / /////////////////////////////
Fonction getACCESSCONN (DB) '' 'pour obtenir l'objet de connexion
SET GETACCESSCONN = Server.CreateObject (ADODB.Connection)
'' CONSTR = Driver = {Microsoft Access Driver (* .mdb)};
CONSTR = fournisseur = Microsoft.Jet.oledb.4.0;
getACCESSCONN.Open Contr
fonction finale
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / /////////////////////////////
DIM GETIP
'' Getip = (Trim (request.servervariables (Remote_addr))) ''
'' Getip = (Trim (request.Querystring (Comes))) '' Entrez le test IP par moi-même
'Response.Write (getip & <br>)
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / ////////////////////////////
Fonction Checkip_locations (contrôle de contrôle) ''
Checkip_lock_locations = instr (vérification,.) '' Pour donner la valeur à la fonction
fonction finale
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / //////////////////////////
'' Les fonctions suivantes sont la division IP, et la chaîne IP restante de l'IP à droite après chaque segmentation
Fonction Checkip_Left (vérification)
Locations_Left = Checkip_locations (contrôle de contrôle) '' ''
iPlength_Left = len (contrôle de contrôle) '' La longueur de la chaîne restante de l'IP
Divide_locations_left = iPlength_left-locations_left '' pour obtenir le premier endroit où le premier est apparu dans la chaîne IP "."
ipstr_left = droite (vérification, divide_locations_left) '' 'Une fois la division obtenue, la chaîne restante de l'IP restant à droite du "."
Checkip_left = ipstr_left '' pour donner la chaîne obtenue ci-dessus à la fonction
fonction finale
'' /////////////////////////////////////////////////////////////////////// / ////////////////////////////////////////////////////////////////////////// / //////////////////////////
'' Les fonctions suivantes sont l'IP et la chaîne IP sur le côté gauche du symbole "."
Fonction Checkip_Right (contrôle de contrôle)
Locations_Right = Checkip_locations (contrôle de contrôle) ''
iPlength_Right = Len (contrôle de contrôle) '' 'Obtenez la longueur de la chaîne IP
Divide_locations_right = iPlength_Right-Locations_Right '' 'pour obtenir le premier endroit où le premier est apparu dans la chaîne IP, combien de bits sont de droite à gauche
IPSTR11 = TRIM (reft (gauche (contrôle de contrôle, Locations_Right),.,) '' '' Le "." À gauche du "."
'' Si l'IP est divisé en 4 paragraphes, chaque paragraphe est inférieur à 3 chiffres et 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 '' 'avant le symbole, le score IP obtenu après cette segmentation