<codepage = 936%>
<Html>
<head>
<Title> dokumen tanpa judul </iteme>
<meta http-equiv = konten-tipe konten = teks/html;
</head>
<body>
<%
redup finishgetip, showip, allip
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// THR///////////////////////////////////////////////////////////////////////////////8 Gestman
'' Program ini tidak terlalu ramping, dan kemudian memodifikasinya nanti
'' Database yang digunakan dalam program ini adalah- "Feng Zhihong" -written- "Hacquent" -IP Database dan
Penulis "Guohua Software Guohua Soft"-"Feng Guohua"-"Tabel Alokasi Alamat IP Global.Chm" yang ditulis oleh keduanya
'' Terima kasih atas data yang disediakan oleh "Feng Zhihong" dan "Feng Guohua"
Ada banyak alamat IP duplikat dalam database, saya harap seseorang yang tertarik dapat menghapusnya dan mengurangi database
'Program saya sangat canggung.
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// THR///////////////////////////////////////////////////////////////////////////////8 Gestman
Solusi '':
'' IP klien yang diperoleh umumnya 202.11.25.1, dan format IP dalam database adalah 202.011.025.001, yang perlu diperoleh.
'' IP klien dikonversi ke format yang sama dengan IP dalam database
'' Karena IP saat ini yang kami gunakan dibagi menjadi 4 segmen, setiap bagian dari 3 tempat, dan tengah dipisahkan oleh "."
'' Jadi ide saya adalah membagi IP klien menjadi 4 segmen dari "."
'' Lalu periksa setiap paragraf secara terpisah, jika 3 bit, itu tidak akan berubah; jika ada kurang dari 3, itu adalah 2 tempat, dan 1 0 sebelum paragraf ini, 1, alasan yang sama, lalu 2 0
Setelah pemformatan IP, bagian terakhir dari IP dihapus, yaitu, 11 bit pertama termasuk "
'' Karena Anda dapat melihat dari database, tiga paragraf pertama StartIp dan EndIP adalah sama, dan paragraf terakhir hanyalah alamat subnet internal, yang dapat dihapus
'' Jadi selama Anda mengambil 11 digit pertama dari bidang apa pun dari Startip atau EndIP, dibandingkan dengan 11 teratas IP klien, Anda dapat menemukan lokasi yang benar
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////////////// Gons
Fungsi checkip_trueip ()
'' Ambil IP klien nyata
getClientIP = request.serverVariable (http_x_forwarded_for) '' Jika klien menggunakan server proxy, gunakan metode request.servaribles (remote_addr)
Jika getClientiP = lalu
GetClientIP = Equest.ServerVarible (Remote_Addr) '' Jika klien tidak menggunakan proxy, maka permintaan
akhiri jika
checkip_trueip = getClientIP
fungsi akhir
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// PERBICURAN ////////////////////////////////////////
Fungsi getAccessRecordset (db, sql, tanda, baca) ''
set conn = getAccessConn (db) '' '' jalur relatif parameter input adalah db-database, pernyataan sql-sql, tanda, baca adalah metode pembacaan basis data, 1,1 hanya dibaca, 1,3 dibaca dan Tulis untuk membaca dan menulis adalah baca dan tulis.
'' Constr = Provider = Microsoft.jet.oledb.4.0;
'Conn.open Constr
Setel getAccessRecordset = server.CreateObject (adodb.oldset)
GetAccessRecordset.open SQL, Conn, Mark, baca
fungsi akhir
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// THR ///////////////////////////////////////////////////////////
Fungsi getAccessConn (db) '' 'untuk mendapatkan objek koneksi
Setel getAccessConn = server.CreateObject (adodb.connection)
'' Constr = driver = {Microsoft Access Driver (*.mdb)};
constr = penyedia = microsoft.jet.oledb.4.0;
getAccessConn.open Constr
fungsi akhir
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// THR ///////////////////////////////////////////////////////////
redup getip
'' Getip = (trim (request.serverVariable (remote_addr)) ''
'' Getip = (trim (request.queryString (datang))) '' input ip test sendiri
'Response.write (getip & <br>)
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// THR /////////////////////////////////////////////////
Fungsi checkip_locations (checkstring) ''
Checkip_lock_locations = instr (checkstring ,.) '' untuk memberikan nilai pada fungsi
fungsi akhir
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// THR ///////////////////////////////
'' Fungsi -fungsi berikut adalah IP Divisi, dan IP yang tersisa dari IP di sebelah kanan setelah setiap segmentasi diperoleh
Fungsi checkip_left (checkstring)
locations_left = checkip_locations (checkString) '' ''
iPlength_Left = len (checkString) '' Panjang string yang tersisa dari IP
Divide_locations_Left = iPlength_Left-locations_Left '' untuk mendapatkan tempat pertama di mana yang pertama muncul di string IP "."
IPSTR_LEFT = kanan (checkString, divide_locations_left) '' 'setelah divisi diperoleh, string yang tersisa dari IP yang tersisa di sebelah kanan "."
Checkip_left = ipstr_left '' untuk memberikan string yang diperoleh di atas ke fungsi
fungsi akhir
'' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////// THR ///////////////////////////////
'Fungsi -fungsi berikut adalah IP, dan string IP di sisi kiri "."
Fungsi checkip_right (checkstring)
Locations_right = checkip_locations (checkString) ''
iPlength_right = len (checkString) '' 'Dapatkan panjang string IP
Divide_locations_right = iPlength_right-locations_right '' 'untuk mendapatkan tempat pertama di mana yang pertama muncul di string IP, berapa banyak bit yang berasal dari kanan ke kiri
ipstr11 = trim (reft (kiri (checkstring, cocations_right) ,.,) '' '' the "." Di sebelah kiri "."
'' Jika IP dibagi menjadi 4 paragraf, setiap paragraf kurang dari 3 digit, dan 0
If len (ipstr11) = 2 maka ipstr11 = 0 & ipstr11
if len (ipstr11) = 3 maka ipstr11 = ipstr11
If len (ipstr11) = 1 maka ipstr11 = 00 & ipstr11
Checkip_right = ipstr11 '' 'sebelum simbol "."