<codepage = 936%>
<html>
<head>
<title>無題のドキュメント</title>
<メタhttp-equiv = content-type content = text/html;
</head>
<body>
<%
dim finidegetip、showip、allip
'' //////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// /////////////////////////////// Gestman
''プログラムはあまり合理化されていないので、後で変更します
''このプログラムで使用されているデータベースは、「Feng Zhihong」-Written- "Hacquent" -IPデータベースです。
「Guohua Software Guohua Soft」の著者 - 「Feng Guohua」 - 「グローバルIPアドレスアロケーションTable.chm」
「Feng Zhihong」と「Feng Guohua」から提供されたデータに感謝します
データベースには多くの重複IPアドレスがあります。興味のある人が削除してデータベースを削減できることを願っています
「私のプログラムは非常に不器用です。
'' //////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// /////////////////////////////// Gestman
'' 解決:
''取得したクライアントIPは通常202.11.25.1であり、データベースのIP形式は202.011.025.001で、取得する必要があります。
''クライアントIPは、データベース内のIPと同じ形式に変換されます
「使用する現在のIPは4つのセグメント、3つの場所の各セクションに分割され、中央は「」によって分離されているためです。
「だから私のアイデアは、クライアントのIPを「」から4つのセグメントに分割することです。
'その後、各段落を個別にチェックします。3ビットの場合、3つ未満の場合、この段落の前に2つの場所があります。
フォーマットIPの後、IPの最後のセクションは削除されます。つまり、「」を含む最初の11ビットと比較して、同じ値を見つけて同じ値を見つけます
''データベースから見ることができるため、startipとendipの最初の3つの段落は同じであり、最後の段落は単なる内部サブネットアドレスです。
'' StartIPまたはEndIPの任意のフィールドの最初の11桁を服用している限り、クライアントIPのトップ11と比較して、正しい場所を見つけることができます
'' //////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// //////////////////////////ゴン
function checkip_trueip()
''クライアントを実際のIPを取得します
getClientIP = request.servervariables(http_x_forwarded_for) ''クライアントがプロキシサーバーを使用する場合、request.servervariables(remote_addr)メソッドを使用します
getClientIP = thenの場合
getClientIP = equest.Servervariables(remote_addr) ''クライアントがプロキシを使用しない場合、servervariables(http_x_forwardededded_for)は空の値です
ifを終了します
checkip_trueip = getClientIP
エンド関数
'' //////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////
関数getAccessRecordset(db、sql、mark、read) ''
set conn = getAccessConn(db) '' '入力パラメーターの相対パスはdb-database、sql-sqlステートメント、mark、readはデータベース読み取り方法であり、1,1は読み取りのみ、1,3は読み取り、読み取り、読み書きのための書き込みは読み取りと書き込みです。
'const = provider = microsoft.jet.oledb.4.0;
'conn.open const
getAccessRecordset = server.createObject(adodb.oldset)を設定します
getAccessRecordset.open sql、conn、mark、read
エンド関数
'' //////////////////////////////////////// ///////////////////////////////////////////////// ////////////////////
関数getAccessConn(DB) '' '接続オブジェクトを取得します
getAccessConn = server.createObject(adodb.Connection)を設定します
'const = driver = {Microsoft Access Driver(*.MDB)};
const = provider = microsoft.jet.oledb.4.0;
getaccessconn.open const
エンド関数
'' //////////////////////////////////////// ///////////////////////////////////////////////// ////////////////////
dim getip
'getIp =(trim(request.servervariables(remote_addr))' '
'' getIp =(trim(request.querystring(come))) ''自分による入力IPテスト
'Response.Write(getIP&<br>)
'' //////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////
function checkip_locations(checkstring) ''
checkip_lock_locations = strun(checkstring、。) ''
エンド関数
'' //////////////////////////////////////// ///////////////////////////////////////////////// //////////////////
''次の関数はディビジョンIPであり、各セグメンテーションが取得された直後にIPのIPの残りの文字列が取得されます
function checkip_left(checkstring)
locations_left = checkip_locations(checkstring) '' ''
iplength_left = len(checkstring) '' ipの残りの文字列の長さ
divide_locations_left = ipleng_left-locations_left '' IP文字列に最初に登場した最初の場所を取得します。
IPSTR_LEFT = right(checkString、divide_locations_left) '' 'disionの右側に残っているIPの残りの文字列が取得された後、。
checkip_left = ipstr_left ''上記の文字列を関数に与える
エンド関数
'' //////////////////////////////////////// ///////////////////////////////////////////////// //////////////////
''次の関数は、各セグメンテーションが取得された後の「。」の左側のIP文字列です。
function checkip_right(checkstring)
locations_right = checkip_locations(checkstring) ''
iplength_right = len(checkstring) '' 'IP文字列の長さを取得します
divide_locations_right = iplengted_right-locations_right '' 'IP文字列に最初に登場した最初の場所、右から左にあるビット数
ipstr11 = trim(reft(left(checkstring、locations_right)、。、。) '' '' '' '' '"の左側の"。 "。
'' IPが4つの段落に分割されている場合、各段落は3桁未満、0は0です。
LEN(IPSTR11)= 2の場合、IPSTR11 = 0&IPSTR11
LEN(IPSTR11)= 3の場合、IPSTR11 = IPSTR11
LEN(IPSTR11)= 1の場合、IPSTR11 = 00&IPSTR11
checkip_right = ipsstr11 '' '"