<CodePage = 936%>
<html>
<head>
<title> Documento sem título </title>
<meta http-equiv = conteúdo content = text/html;
</head>
<Body>
<%
Dim FINALGETIP, Showip, Allip
'' ////////////////////////////////////////////////////////Uvido /////////////////////////////////////////////////////////Tipos /////////////////////////////////////////////////////////Tipos /////////////////////////////////////////////////////////Tipos //////////////////////////////////////// Gestman
'' O programa não está muito simplificado e depois modifique -o mais tarde
'' O banco de dados usado neste programa IS- "Feng Zhihong" -Written- "Hacquent" -IP Banco de dados e
O autor de "Guohua Software Guohua Soft"-"Feng Guohua"-a "Tabela de alocação de endereço IP global.CHM" escrito pelos dois
'' Graças aos dados fornecidos por "Feng Zhihong" e "Feng Guohua"
Existem muitos endereços IP duplicados no banco de dados, espero que alguém interessado possa excluí -lo e reduzir o banco de dados
'' Meu programa é muito desajeitado.
'' ////////////////////////////////////////////////////////Uvido /////////////////////////////////////////////////////////Tipos /////////////////////////////////////////////////////////Tipos /////////////////////////////////////////////////////////Tipos //////////////////////////////////////// Gestman
'' Solução:
'' O IP do cliente obtido é geralmente 202.11.25.1, e o formato IP no banco de dados é 202.011.025.001, que precisa ser obtido.
'' O IP do cliente é convertido para o mesmo formato que o IP no banco de dados
'' Como o IP atual que usamos é dividido em 4 segmentos, cada seção de 3 lugares e o meio é separado por "".
'' Então, minha idéia é dividir o IP do cliente em 4 segmentos de "".
'' Verifique cada parágrafo separadamente, se forem 3 bits, não mudará;
Após a formatação de IP, a última seção do IP é removida, ou seja, os primeiros 11 bits, incluindo "".
'' Como você pode ver no banco de dados, os três primeiros parágrafos de Startip e Endip são os mesmos, e o último parágrafo é apenas o endereço de sub -rede interno, que pode ser removido
'' Enquanto você levar os 11 primeiros dígitos de qualquer campo de startip ou endip, em comparação com os 11 melhores do IP do cliente, você pode encontrar o local correto
'' ////////////////////////////////////////////////////////Uvido /////////////////////////////////////////////////////////Tipos /////////////////////////////////////////////////////////Tipos /////////////////////////////////////////////////////////Tipos ////////////////////////////////Gons
Função checkip_trugEip ()
'' Pegue o cliente IP real
getClientip = request.ServerVariables (http_x_forwarded_for) '' Se o cliente usar o servidor proxy, use o método Request.ServerVariables (Remote_ADDR)
Se getClientip = então
GetClientip = EQUEST.SERVERVARIABLES (REMOTE_ADDR) '' Se o cliente não usar o proxy, então request.Servervariable (http_x_forwardededded_for) é o método vazio
final se
checkip_trugEip = getClientip
Função final
'' ////////////////////////////////////////////////////////Uvido /////////////////////////////////////////////////////////Tipos ////////////////////////////////
Função getAccessRecordSet (db, sql, mark, leia) ''
Definir Conn = GetAccessConn (db) '' '' O caminho relativo do parâmetro de entrada é DB-Database, SQL-SQL, Mark, Read é um método de leitura do banco de dados, 1,1 é apenas leitura, 1,3 é lido e Escreva para leitura e escrita é lida e escreva.
'' Constr = Provider = Microsoft.Jet.oledb.4.0;
'Conn.open constr
Definir getAccessRecordSet = server.createObject (adodb.oldset)
GetAccessRecordset.open SQL, Conn, Mark, Read
Função final
'' ////////////////////////////////////////////////////////Uvido /////////////////////////////////////////////////////////Tipos ///////////////////////////
Função getAccessConn (dB) '' 'para obter o objeto de conexão
Definir getAccessConn = server.createObject (adodb.connection)
'' Constr = Driver = {Microsoft Access Driver (*.mdb)};
Constr = Provider = Microsoft.Jet.oledb.4.0;
getAccessConn.open constr
Função final
'' ////////////////////////////////////////////////////////Uvido /////////////////////////////////////////////////////////Tipos ///////////////////////////
Dim getip
'' Getip = (Trim (request.Servervariables (Remote_addr))) ''
'' Getip = (TRIM (request.QueryString (vem))) '' Teste de IP de entrada sozinho
'Response.write (getip & <br>)
'' ////////////////////////////////////////////////////////Uvido /////////////////////////////////////////////////////////Tipos //////////////////////////
Função checkip_locations (checkstring) ''
Checkip_lock_locations = instrum (checkstring ,.) '' Para dar o valor à função
Função final
'' //////////////////////////////////////////////////// /////////////////////////////////////////////////////////Tipos /////////////////////////
'' As funções a seguir são o IP da divisão e a sequência restante do IP do IP à direita após a obtenção de cada segmentação
Função checkip_left (checkstring)
locations_left = checkip_locations (checkstring) '' '' '
iPlength_left = len (checkstring) '' O comprimento da sequência restante do IP
Divide_locations_left = iPlength_Left-locations_Left '' para obter o primeiro lugar onde o primeiro apareceu na sequência IP ".
ipstr_left = direita (checkstring, divide_locations_left) '' 'Após a obtenção da divisão, a sequência restante do IP restante à direita do "."
Checkip_left = ipstr_left '' para fornecer a string obtida acima à função
Função final
'' ////////////////////////////////////////////////////////Uvido //////////////////////////////////////////////////////////Tipos /////////////////////////
'' As funções a seguir são o IP e a sequência IP no lado esquerdo do símbolo ".
Função checkip_right (checkstring)
Localizações_right = checkip_locations (checkstring) ''
iPlength_right = len (checkstring) '' 'Obtenha o comprimento da string ip
Divide_locations_right = iPlength_right-locations_right '' 'para obter o primeiro lugar onde o primeiro apareceu na string ip, quantos bits estão da direita para a esquerda
ipstr11 = Trim (reft (esquerda (checkstring, locations_right) ,.,) '' '' o "." À esquerda do "."
'' Se o IP for dividido em 4 parágrafos, cada parágrafo é inferior a 3 dígitos e 0
Se Len (ipstr11) = 2 então ipstr11 = 0 e ipstr11
Se Len (ipstr11) = 3 então ipstr11 = ipstr11
Se Len (ipstr11) = 1 então ipstr11 = 00 & ipstr11
Checkip_right = ipstr11 '' 'antes do símbolo.