<%@言語= vbscript codepage = 936%>
<html>
<head>
<title>無題のドキュメント</title>
<メタhttp-equiv = content-type content = text/html;
</head>
<body>
<%
dim finidegetip、showip、allip
'/////////////////////////////////////// //////////////gestingead /////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///ゴン
'プログラムはあまり合理化されていないので、後で変更します
'このプログラムで使用されているデータベースは、「Feng Zhihong」-Written-「ハンティング」 - IPデータベースと
「Guohua Software Guohua Soft」 - 「Feng Guohua」の著者 - 「グローバルIPアドレスAllocation Table.chm」
「Feng Zhihong」と「Feng Guohua」から提供されたデータに感謝します
「データベースにはまだ多くの重複IPアドレスがあります。
「私のプログラムは非常に不器用です。
'/////////////////////////////////////// //////////////gestingead /////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///ゴン
'解決:
'取得したクライアントIPは通常202.11.25.1であり、データベースのIP形式は202.011.025.001であり、取得する必要があります
'クライアントIPは、データベースのIPと同じ形式に変換されます
「現在使用しているIPは4つのセクション、3つの場所の各セクションに分割され、中央は「。」で分離されているため、」
「だから私のアイデアは、クライアントのIPを「」から4つの段落に分割することです。つまり、202/11/25/1
'次に、各段落を個別に確認します。3桁の場合、3桁未満である場合、このセクションの前に1 0である場合、同じ理由で、2 0を追加します。
「フォーマットIPが取得された後、IPの最後のセクションが削除されます。つまり、データベースのStartIPフィールドの上位11ビットと比較して、同じ値を見つけます。価値
「データベースから見ることができるため、startIPとendIPの最初の3つの段落は同じであり、最後の段落は内部サブネットアドレスだけで、削除できます。
「クライアントIPのトップ11と比較して、StartIPまたはEndipの任意のフィールドの上位11を取得する限り、適切な場所を見つけることができます
'/////////////////////////////////////// //////////////gestingead /////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// //////// Gestman
function checkip_trueip()
'クライアントを実際のIPを取得します
getClientIP = request.servervariables(http_x_forwardeded_for) 'クライアントがプロキシサーバーを使用する場合、request.servervariables(remote_addr)メソッドを使用します
getClientIP = thenの場合
getClientIP = equest.Servervariables(remote_addr) 'クライアントがエージェントを使用しない場合、servervariables(http_x_forwardededded_for)は空の値です
ifを終了します
checkip_trueip = getClientIP
エンド関数
'/////////////////////////////////////// //////////////gestingead /////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// /////////////////// ggig
関数getAccessRecordset(db、sql、mark、read) 'レコードセットオブジェクトを取得する
set conn = getAccessConn(db) '入力パラメーターはdb-databaseの相対パス、sql-sqlステートメント、mark、readはデータベース読み取り方法であり、1,1は読み取りと書き込みです
'const = provider = microsoft.jet.oledb.4.0;
'conn.open const
getAccessRecordset = server.createObject(adodb.oldset)を設定します
getAccessRecordset.open sql、conn、mark、read
エンド関数
'/////////////////////////////////////// //////////////gestingead ////////////////////////////
関数getAccessConn(db) ''接続オブジェクトを取得します
getAccessConn = server.createObject(adodb.Connection)を設定します
'const = driver = {microsoftアクセスドライバー(*.mdb)};
const = provider = microsoft.jet.oledb.4.0;
getaccessconn.open const
エンド関数
'/////////////////////////////////////// //////////////gestingead ///////////////////////
dim getip
'getIp =(trim(request.servervariables(remote_addr))') 'クライアントからIPを取得します
'getIp =(trim(request.querystring(come))') '自分でIPテストを入力します
'Response.Write(getIP&<br>)
'/////////////////////////////////////// //////////////gestingead /////////////////////
関数checkip_locations(checkstring) 'IPの分離文字の位置関数に戻る
checkip_locations = struns(checkstring、。) '関数に関数を与える
エンド関数
'/////////////////////////////////////// //////////////gestingead ///////////////////
'次の機能はディビジョンIPであり、各セグメンテーションの直後にIPのIPの残りの文字列が取得されます
function checkip_left(checkstring)
locations_left = checkip_locations(checkstring) '' IPの残りの文字列に最初に表示された最初の場所を取得するには
iplength_left = len(checkstring) 'ipの残りの文字列の長さを取得します
divide_locations_left = iplengted_left-locations_left '"。
ipstr_left = right(checkstring、divide_locations_left) 'この除算を取得した後、 "。
checkip_left = ipstr_left 'は、上記の文字列を関数に与えます
エンド関数
'/////////////////////////////////////// //////////////gestingead ///////////////////
「次の関数はIPで分割され、各セグメンテーションが取得された後のIP文字列。
function checkip_right(checkstring)
locations_right = checkip_locations(checkstring) 'IPで取得した "。
iplength_right = len(checkstring) 'IP文字列の長さを取得します
divide_locations_right = iplention_right-locations_right '""
IPSTR11 = TRIM(左(CheckString、local)、。、。、。、 ')')「左側の左の文字列が削除されます
'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 '「。」の前に文字列を取得します。
機能を終了します
中国最大のクールステーションデモンストレーションセンター!