From 91d17e7dd89b18781befb32ca9479c88015af561 Mon Sep 17 00:00:00 2001 From: Dnomd343 Date: Wed, 17 Mar 2021 00:13:02 +0800 Subject: [PATCH] feat: accurate city address in China --- backend/ChinaCity.db | Bin 0 -> 32768 bytes backend/city.php | 44 ++++++++++++++++++++++++++++++++++++++++++ backend/queryInfo.php | 26 ++++++++++++++++--------- 3 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 backend/ChinaCity.db create mode 100644 backend/city.php diff --git a/backend/ChinaCity.db b/backend/ChinaCity.db new file mode 100644 index 0000000000000000000000000000000000000000..07f9640e0b9594b7449255978cf95be28290b983 GIT binary patch literal 32768 zcmeI4dvx7bb?2?e)#K__(t-&2O=Micqm9*jb+4qWp#vl#fi@`wNZU+1<<+K?kOzc> zgh#;lA=|PgTejn;EWctqwiC-QDb~ZX)-aFswaQG(D$@?bT6F36yZ6!=W+7)1U-|NuFU7uRV|JMGjX<$tQ zYZ_S7z?ufuG_aTN75VCKXCVh53GOR`}ybB z@4N5zSE0Ut9{Sjm8`eMh&@)fo*yM3KUiIHQl5b0(^+ea-NcSyWKkWMZuJ3kL?En6> zFUQ*a)-_8+u=qkXP@qW#(SkF?*>{`2jLwsPAa zwY}Ij*7kVY2ih`iuTB1a@-LIK$wSF6B|n^eS8_wLu{CP_!`5@Hqpgp%-rw5S`g1M+ z(DGke=35T8e7WVLEqAuOv8ACoY<{KrZ1eW!N1N|&PBq`u^n<2vG|e?lG(Fq&k)}JF z-qh5Ts3iV4@ls+(;?s!_CbEgwHU4AcUpHQBJkq$S@#Br}ZhUiNOT%{>{3)-4k^ms>`AX{R#4oiJNck zzB!y*TAn>zJ#ZyDaH_AbH=RnS)4kbTkZ*{=;qY`gmG8^;riRk#{@!dR$k)f|nNn`h?(|sEID{*vU zLVag?=~`$y_;L)b9-j}dU!`q7a%bovcs7PcS1*N!uSl*;I*ssy!Ixra_2|pt@D(PN z&8cl>F!*8&jV|pCFJ7l@c2HC9O9x-L0X;b_sSs;GQhh##F3*lc7llfj$krD;6GNlf z;mXos(Cmt~o{pmjr=)7yBGmvr1fPqc<-O<1r{^_aq|)fYQ!z9g+aJwbrL7i`pF_cu zF*G_c99})beA6uAfVA=17+M)EgyUl@QkKT4-u_JRL<}u2?hmK5!daFujXs0V#L&vp z5$jo+?Cb5z1fPzf;lfCC=_oyCkU7Q``PsGs5woBFGB0cwEldN)I@cS_|x_l*? z9|z4ki^Z-UilNoHleSZ|3bKLV_u}Y_2W(u^WPd97-PLI2wCpP7bk#Qye0((;9oT_3 z`Wcs>so-NVba`Kp;7*kmTO(QQKyM}&{Pt>8YlMc;73e_lTQL-`=hv5> z`6e6uYloJfJ5VVU!)wQ)9s4r5-u{7fDuvs+hmB|;l`9P~UC+9-ae&s1CNC^bHP0^v|5;9m1*0DRq}HvxI2dGWMH4+*O?WQ8VKGULs=u6 zGIpn)2ZFm|Xl2Ld@^cp@Ht3K}**jw>hlWl8L!yypUF3SA*pD)^T%l*Qs8MJk=5Ly~!DH7Wz3ty9@%=-b!@+<<=`g&$7*0JeqvgDE#*@tk{V}w%?Qk@=FOzm>EHd{6 z*%(^gbGUkNMs1xY(N!jfvi%V(qZmi??H>yI;^>q-Rt6vGd|`hsNXJl&DjXhBTelth zb3G|%(k65D>`T=nW0*98>0r@T4}K}uJRCmHmqHnvqcRut#?bQK(dy}a46Ojog+d!+ zXmz2a&4PDuJ)^GMV`y}Bil_v^bodXjAA?`K0Ug~>&r&8nZ7}$S7+RU0i7p*OT{3Bm zBp19bhE@+KYNcl#cbGvgcxw!e7V=UT?#v867rZ5ghF4G6GG*LC5TLy|hAz*`^GGU8 zi=GFA+hS2#Prg%{QVPTRg>bE<->Uz9v)skWog4A`#4sEueS@$27p?&ZSY`jtjjZQD{}7_| zbqCg9ZV6~3AwrJxhpn7>!!3y(^|X1ovio4T^W;Vj0WiYD!NKk~xJK2<-OOtvE`ERm z0AQ&5W(U|wDu4}&@6TnrUvDiA?$t0Hf;eY}85-#BcEIxdE(~d-+z=;gU+-XF_v;*h zm9SbH*{`ezGZ{>Gzt#ca#00csBWp3h7=-`1?w@l2BDtGRC%%)!_+P#QuS9_$Pqv3C*$3ZHjEJ8|EpqbK7B~_JetcbT^z+fZGWI z`0s3m!HoF-=j*!Hb$z?*t6k4`mAW44x~JUg5#Lmk9}K3PgWl)NYTmSjt7we^+OGp!@754YaidV6a}%XeG8)^f3BSIgrq_qU{5ZfgF1 z^Vgean)fw7-TYwlKy!D~KQ{eU(>#3tOHIGi^p2*Urge#LC%&3^K2b_Ml(;AHmPAWq z)c8u{nZ}XEPc*)_@okOChQEdFpKsXF@OZ=h4e5rP>c3zA_4=9mJ@t>(-&g+&^(}Q# z-M_CpQMak?!*##Rl>c9UHsqg8^bq#c)_!^MN_6;4wC_Szt~f38>FddVDbYikp!N}e zfu!_fRIG>Mo1Xj^Z}v?#Vy1`it{@{FAG{s2*4fkM3aC5SD8$xefWxu2yTfXKQ%zxoF`GA923& zQ3jR3uF*ZJ#7$JsE^tJL^ExLLvEr*pp%}xqFT!1C!ky3S^k?6q74kDiu?;Stp3{kC z`5F8cuyJgIm*+<4A6Q2;hfjZyH9`%!@;LO74e~~`Yps{(j>B7YPV2-C^2W4laCl)eol9^g z25eN@;L6x3b) z?8VA;5iU&($(fkZZ4d9=ygYkA^QLo_AJc$u*VdFsACeJXIWFnwUq@+>H_mMxM3*LC zT{IS+;f-{A_;OxzbLX9r{k*Ym4=+s_tdPyD8`@nPo@l>%{AGoF^2?eY!A9Pwx0fHg zqkrf;>#8J4kT>q_`=6fhszr7(EVMTA?cr+|_zSIlYK_*$zCCy4 zdDFRZaD!RXaL1CC)vda$-AK5>%CS732Ub`KWo2w*;a;?>XW2~>jaAof4f00Aee1#= z&6`c+;)E2UIUepMFCSd6iP_jhhk0Y-zV+Uv%B~4ISCoO)5DhAh_w{2>jc7?+%!FuC zi(}#|UZl9o?8!C*34*+FakU=ZUq$Dm`-st4Pl5$WZe-lx=w-(*@U47 zPJ}xz0$X69y$C7yQy<;0#0dn2a|zAZsu(4=*5PyGGIe4jRt0y?*v84dXyk!e6`~HN zE>9igjg))%@O8(zd{xrY}Pg7mM$vuem#OwbK{~n_2=YeN4JMy$Q_r~8DOTOM zy1~)N68RLY9TueR!d^78?%~TXSZhnu%YzwP_wbc%;Ym$h=FAMS8Kdh4R}assHLeSwcW}xde&5)ncR-G@^bf*rCvK#fO zZaTEQunC>uDN?eWAa9)AU<`hF{*d+&c{ziPv>RL=zs6?6kfj-7L|PkbufhC9i4&v) zW?7B48yuEoaoPr;TALtmyxm~^-1$75#i$ucpS%%wqj@+n+%It_n@uzUlQQORFm)=y z?#zVo$we7;_pSFFUS7znHEa|CSv2GB29r;!?%ksJ3|N%7Cl7f?uPdFOFHam$VTUi^ zpt8vzZv@_dvE@Q_%czIV#TtY6!xtCB(M`aFo8*S2cBAkHS7uJCbEq|HS6(Z~!{IRs zgQE+3E87YPkHrC#XURk5YcNJZF-)Di*3t}wz6R3=XNMQf+yuNHm`pfaEu1>cswj&` z=hy`kyCnvb@+KTtu>=>$+TepA__fy232g=#pw14M8m*!EHMqL_v|s{HN9ieu zYW2WnJea<4wJ)TTX2=iJIw&8!UKzPe2ONq_orG_mEI|$C)Q)EIXhuhi?KE-)tKqB4 z6tQUd5~L$z@G7ix#kF>8s)K{Pfx)C8$~%v-+34Iyzf7I%K@DD>Jukho6IS!1u_UK+k_ole;fW(?hSnDKi&BtMsKMlVqM0eiR$5Tp zF36KusKJ%(mz3%z48U`nXrvcvFm`TZt0s)m<;4G=QT_j0UDvwycRkhhp{`%-YU*6> z{A%Z9=QEwZ(V6YMiJJc(cAV}gbv)E@Psdw2675m@EA406N7^55zqkGN_Kvpiw*6__ z`L-QY`|oc{x80Qde)8+dndH9Y)5!;uL&-O^{;2hvt&6QkTEEiz(bhX!H?%giEVulJ zmeVa;TK=Hro|ZSYB$^{?{b!m-njdbyxB2$wj;8N6eXZ$Y)2^l`nm*K&Zn`P){lwQ3 zGl_kPrxOn*h7#RW`v0nNzHy@QOO3zN_>RV&#&r$fZdhtK){t-bc*9){Z)!-?NA<7N zpQ#_If4KhM`rGR}>b_g|wI8eV|D+5+Phc z-#MD?@=1e1;j=Lqta@OY)|j!>3iD0pt`##Za%BCypp zh|UV0+ZucoqBAX~;Y7n23ZC1pz={k--y}J%so=S-!82D?tV6Vna;kzow{8K70#%)8FkBdqp(Xm}*NT{sHtuwZ9TZ6-em-$N; z$xUIni2;vH^T7dWKXKc8wc9@Mlt)xEb3<58C zC$wh7*29z6!yQL~*?z9{6BLZtu8ci_&n2D6_SK1lHb<1tYe; z^Ap30f*>N;6Db!CO6F$7*1jN-xjerY7+Y5E2;q&`8cd}Wi__ek;)oFnMr{4?*B2p| zUU38xEV&U|-+FEmi$FTEj?xT@Gh%D7{bX(=__Zo@Zp7AiK5-P`fpO?cp3&Nft-%l^ zY#Gr~E-wa+DHyRexV-Z+mvkgrpC#vlf)QJTqvNN`&&>*UtvN>vMr;iZcaNeOU}=qw zlIkfyY;{<$7M&Zs%qLegqGj8iUxPCP%9#hKB zR)u9XZtG#Pam-E8tU4!rDHyjkm`X9n4O6G8g5tDj#%*7PEz8E-m?2AU+}2>~X3~s1 zM|D~wx#zYnabKA!5gBT^T#`wW!)@iC92^}x7foMgJrr(pq7C&FAhwF99cBAB%1 z;vXtA1Ym#g46ok2m9do> zbazz>p4&Q@Vz$O6=A?7Q89@PVTT`5FP!S{0xf@$*@x<0TzjTIsLrAXTuOfw@;EAn+ z!!xCDey^9Dg{QSAw$^%Pr_EdWeQXl7cw*~dZR5EE(z%1>xjnIUaCP%ErB-#0&UH8h z1y5|P^Ouk6o((Yb!WE=@3J}{@mwfY8Lh)$ftTRP@k?HR#z-@2*f@P%-REu(0bx&{I z5S2~4CBI7@OY_YqvjwK7h#Tc#GoIU;{F^rE-V7wd zF&P~#p4%EceNGlfHie*AL@g+IZfl|)S56ku?6!|o>$$Cit3~eX9g%0n;#fDv_T1LN zI@Sok*bHvonwaOd)|$O|`Jg6d7RT70+X9n@+I^I0pHt87#=-vzp4&P&Ix;ENPsoTt zqEtkK+j_MS4j*|Q$#p2Y$WT7c6I<6hoPW+*D{y4hQK~1l2E%gbob`61aa*w9iR}uk zL^nsVo0!5FPizf7KN*#d0;}*VR}&OGv32nB!olcxQIgXdCrN8hY_0WfuB7DAnsko; z12$qSCo{Uga;g-a*`|p((G(*Yu{D_dSNZI;TB8+wC=)YcYp|{k>_0PLm2w@dLBWWv z!PP^$(ctIp0_Fn5wx-l@EN}6dUH#K>ZmiZ?lTVPPT7e(;#k`HxdeIgSV{4kX^H1_H z#%eu0b2>b{pw><;vKC{tUbOiITN0Ur(%3=4Sgpa~*0a=b>0G-62RhJGfYth4h}Jgc zEf_#?W-tl{jM!QSm9foOqjkV8OtVRi*w$bR4^8c41PVrMy>#4dKyl0sdxGx+8?mjy zC`X+$H-x8iBen)d?7}&xICt#GB8=D?3`tb>%yB~uh6@Y@BeuTtQo)by3`S!cvGtwj z&qn(eHMZlP^1ViEedipvn_mW2h6%}YJq3tuO>xV!b1a%lN*o!u5Kb2qXWZ6zu((G% z4Qpp%*f9tXw|&)SNH-kZtZj@%B0TG6#MVo9{&aL{gx0!UDQoX3bgizNK_H2)sjQJ9 zb0>38p>y>Y%h$H)P6EzPi=A9kQC$*ugjUl18w!o92U?yj63R*%Jbg|PWp?PcLc?kmR~N_m zpOr9GuqAlI^`YYW8;0XP3E>^{BFx}W#@^~ye^HsbsG^|D~>DUHPt$ciq+X zrmjS1)cH#1na+`)Q2)QF{rl}-Z=Y%3*Zy?-gVg`K+kVjYmu*+u4zzu~?YG+A-WDYP zDfzABQu0_bpZs|8uH>7N32ywq(t4_ObL%Hs-`o1O)?~}yw)|1cxt8rMkF@++OK(e8 z^Z#i6v*ruUW6h5>zn}a5uW70_{oAIa-1h(Nrc6^?qMCRmaU$^r`2RrSHI4t1%Kxdx zXB!`E%ryR7!{0Uhr-n-nyBj{Us_wt9{^|M$>xb&!Q1_#{Z`Li=9jW_D-AC*0sN2AF z<9~vp(OOi;uB+s?$>}Q0mfs?`T{K#2Fl8KFQ)A;19kE^df}+t{-+G6urU2j>IFV>= zw6+Gzaj;R?20BZFqS4wK%<2fnF7XfPpy+9>iMHbscj$oSQjs7P6g{nVFr`0EQ5ElS zijH3uJ*{ARrV1PpCoQcue(^`Xf z?u@Q10xK9sf`OpuX|01vC8$*G#-=r)Nzv0Yn%lnS4*`Lt?3?Ut8T1 z*&MEFiPs~OVxSGh`&J7cEgXjdQ@cQLo!DBVp5nc$yAk8UfwQI2p_a0z_^YeGaQTb8 z@)y{dc<^n-Us)}3_3#*zuNKdT+jpA}$KW!#4aN7~AkfU!X!{6uB~3b;&J6Vw-?MtS z=-3}G4IaS#i6=Z}3y+Q&=n^rTP@mupPgF7Qz)M2!-e zqg&adplD3mVBC_G{gtLfYBsMiX@j}`6J6Y;#EpYV8WmyE_%+`-FUJT&n2YTPHm}iW zgUfqPM_ZSyifh&>r))IZzEIpnQi_3DWVQ>!8;!2P(G?~8bd?MX$0(uEI0u6xUQ@Ac ztxD`Nz?z;hX)nRV0o^0RX5Ho>Nl`Q=ZE(0{ROvt>HMFAyPf#=_{VF_jRWLpQ6GS>= z(gyRBvrsTuEqEENjY<2~+;bsOYAHEVionLC4Mr~9wiivg>z*P^x;D4Ut`{rYPII$B zTas{zP@Un8Oj`#kraI-brCB<13`HZ;2A3!FP)WOkAQBDI+Q_sY{=i`t7wK^O%#Azr zMI+O`^KFMHI3k@ocXYUDWZK|x%Sjts3uALLGHozX2!%0>PI-A?b^&C%HaEh0+-P+C zl(!t0*eV*IUg=;?{6Xaeb)bbYKJABhyg(&%G=uOQx5lRpjt)=S!dOWHYF0Epy#l`! z&7ae{IjhoPZG75yKDxhr>I|?P56Y*t@o9tYuDxG3+#nWheA;(@d8>`B*0AyZpy>HD zdH+*O(V3$p_C+y>LKNl(MbD=lT%Eh9gq|zT>ojIfJ)d?kg}ld@3aKB zwxbe_E-FX(_E-nY3+KY?d38YeiGEnRwivA21H;N>Fg0ME0m&E~jl87r(^51HkI}WR zhAB3ybLV2!x+MmeC&oj9ODj9L>S3`t28Y+j)j135;udNq#ikgnT1T<3~Avr_11XDf{c|U!HP8& zJ{RxcfHDN?zy)*0|G!w*{FCqhKic`e&R^>MnU3#u{CUTfj^{d_>iCV0!H(Cr|L^v{ zZeM6W%$xrYx4*M}eS2No-?aU^wv%ncZNK04p0>BPwI;ul{FCHM$+6^P$@eEy$=9_0 zUF%=8PPguD{aovBw&q%IZuw!$e{H$eGRceokF>n2<&Dk%r}@7%UvECzys7zP&388c zd~;({*z_NpUTE6d^vS08G`+Q{HSwLqpCn#Nj3pjRyg!j53-JBMKX06B9BX`}@!rOb zja?1jYxs+XnTA~rpKbVHL$={(>wm!g|Cj6c*MGkLx9ZWVCKG z?z%TK?Ug@4$%wYSq|ue0`E%~%)N>k+nUWE0gZ0eqOkRm2vV)w@1GkhM(eC!G_s*4{ zo7cfTz>`oeb(f518yanztc(sT;vfiSg>$!*9M4{9yz9vF?4lZ{V1w+rlF@A6c;a$( zavz5b+k%%tc*2s=Y%kcgP5$*ff)P?>f|Ai}-}>MM(yk1RaWS-78_hO&dG=hi{{@}8 zz#Pp(LCI+L3d}XANhJ}XI4)i*8O`=%6P1i_mS|kpfhI7v(QH5VsYBI?60pW*TlC#h zax~jdTetc+fPiyD&WDzaW&6elHtS_5D1DG*L zTPk;J>AslW^!7s+DKxcg-yjp`gL`lIU^`E*FOoX#PvvyF-&*?B8$KA`j-mX zAaz1(T)|y2xH>VcsE9SAb6H+cx-$kV-X(BBJI?AU&y?jb59 zBxm0Z_LShg#ES+;&uyYs$!~M8h*Ehg`Zwz9JJ{^X{%GChoM3k)sBcZ}9E0KTF#S^< zC%+>fYP{E4mlsre=M({V>ZA>dad*7 z0p6~hSLaSNLfMj$UO%@>TvM3?mjAY~jr4larZ$oaSvm5XhH|_ZrN5Fy#t~te8D% zFf7`5uWvoQ#mq*@8#K@9X1v$KSEo($M5|H`HUsZ{b$VOJbr%k!aH}q(Fw$Ff?_#6V zn@OL+YW<}FBsbD)ur7VMR}#9O%!XxIjr4k$V0TWhrL34L$&K`Sc=xR4jgx0=_A{ax z>Gfk%lp+nxdIQUq2PGrD1}npgT2uuU%w^P)kzU{V-px`A`-pYJ8vq;W_3+pZUGkIv zKrebKP%_f%$G${{`aG?5IC2PJGe&y-*hkNDx~VEaG^=D^P%_f%JD-}QCZvfuo6(_f zq<018$@WzYQbQv-og3*j7#Ag_qBXl=u`;>WrEwcuIZru@pk$=iV6E6oN<7m! z^=B#7NUy=9f3zghwu7;?*PA)G&ZCR7R6H14q|qj3q}N)rTzVRU_oQ=@UswyISH|R8 zhf536IgXLRZEP6ttMK_rJ!L|jXia-PC>h=Lk{^CftvOPN;@PdZW}~|vUepy{6%E|j z{05bh(OrYxExYT$`XvhZ8I)>t*SF@~iCZyoAC3iJqr1NK!uI8ByCj-=7oRN|-8Gmj zvP3f~kK}00=&o;l{eqr5;_)HN1WR-d-L1`=P)85xfwc#f4lNniwbtZA^zMFY8Q_F-5srID`Ef*H?Hf)K9g6Sh0d8bFv&dQy1w<|nBG^(RZDB|?4og94=?OB$#u^{ z;b~AbuIphqzVpahZ|$_8_{@qavY_Dw&O$wFQ$h_Vz{KFXW~so-{K_AgEHDXLw~2~I zbglEs*z?iWaZSt>q?AZ}D%P5?usr+%N>!~ChfPlB$v6zpI-qBgV$sf+il2?a6wPdp z>D~@51j(Pc0p?8```aoez@Lf1Y>{yOw6w++#N7jbItEwvyj0n73CXckY)vcncnsEW zoZ)H;OX89jN(DX^gIyu2faHuV(MZ}ndILN=EUlq)_GzE$|8Hq~&;Musze20m{=KGw zH4Ut3U`+#S8d%f7ng-T1u%>~ZN(}_VMzZa9b&;A-sl?L4x)Bfz8_70U*-Zz-O_Z_e z4~C6o`_^O_r%%yZsVLa+Krn11+qdRXH_0RtLGD5yNx)$v*#_HBWjD!l!6q5o7nI#E zK7;5+hm`JyvcWD$O$_^jvcX%AidCtk>IffW8_A9wtclI*d5cJwJ_?47WE;%&iSUI( zCK{ZKQuwfu>>3o+mc&WR?1 zZzS7b2)K2wtO%`1Y#7NlxV$i?D*(vss?|zG8Ob)7izStVN~W7=JZ2~v$@Z;x9Z{8F zg%7F(VInDy%AhMTGK!#NBzpy()+>6|T-?~SHj?ef=6)tsR_q)WZ5df3 z*?w%EU61Vm)|C>>nY4(JY~PySz3Y^!m#mH^myBc^tUNYJe)0wk&YfYF#7MSpz2JT~ zI-|OLk7_GMvVCjb9g%Y(WrqJU~;q%Iy;1hhuOwycMk>8U$W@j2zo1open('ChinaCity.db'); // 中国省市经纬度数据库 + } +} + +function getLoc($region, $city) { // 根据省份/城市信息查询经纬度 + $db = new cityDB; + $data['region'] = $region; + $data['city'] = $city; + $query_str='SELECT * FROM main WHERE level1="'.$region.'" AND level2="'.$city.'";'; + $raw = $db->query($query_str)->fetchArray(SQLITE3_ASSOC); + if (!$raw) { // 查无数据 + $query_str='SELECT * FROM main WHERE level1="'.$region.'" AND level2="-";'; // 尝试仅查询省份数据 + $raw = $db->query($query_str)->fetchArray(SQLITE3_ASSOC); + if (!$raw) { // 省份错误,返回北京经纬度 + $data['lat'] = '39.91'; + $data['lon'] = '116.73'; + return $data; + } + if ($city == '') { + $query_str='SELECT * FROM main WHERE level1="'.$region.'" LIMIT 1,1;'; // 获取省会记录 + $raw = $db->query($query_str)->fetchArray(SQLITE3_ASSOC); + $data['city'] = $raw['level2']; + } + } + $data['lat'] = $raw['lat']; + $data['lon'] = $raw['lon']; + return $data; +} + +?> \ No newline at end of file diff --git a/backend/queryInfo.php b/backend/queryInfo.php index 3a7140d..bb8b84e 100644 --- a/backend/queryInfo.php +++ b/backend/queryInfo.php @@ -1,14 +1,12 @@ getDetail($ip); $specialInfo = checkSpecial($ip); if (is_string($specialInfo)) { $info['ip'] = $ip; @@ -20,9 +18,9 @@ function getIPInfo($ip) { $info['loc'] = null; $info['isp'] = $specialInfo; } else { - $data = IPinfo::getInfo($ip); $IPIP = new IPDB('ipipfree.ipdb'); $addr = $IPIP->getDistrict($ip); + $data = IPinfo::getInfo($ip); $country = getCountry($data['country']); $info['ip'] = $data['ip']; $info['as'] = $data['as']; @@ -36,14 +34,24 @@ function getIPInfo($ip) { if ($addr[0] == '中国') { $info['country'] = 'CN - China(中国)'; $info['timezone'] = 'Asia/Shanghai'; - if ($addr[1] && $addr[2]) { - $info['region'] = $addr[1]; - $info['city'] = $addr[2]; + if ($addr[1] == '') { + $addr[1] = '北京'; } + $cityLoc = getLoc($addr[1], $addr[2]); + $info['region'] = $cityLoc['region']; + $info['city'] = $cityLoc['city']; + $info['loc'] = $cityLoc['lat'] . ',' . $cityLoc['lon']; } } - $info['scope'] = tryCIDR($detail['beginIP'], $detail['endIP']); - $info['detail'] = $detail['dataA'] . $detail['dataB']; + if (filter_var($ip, \FILTER_VALIDATE_IP,\FILTER_FLAG_IPV4)) { + $qqwry = new QQWry('qqwry.dat'); + $detail = $qqwry->getDetail($ip); + $info['scope'] = tryCIDR($detail['beginIP'], $detail['endIP']); + $info['detail'] = $detail['dataA'] . $detail['dataB']; + } else { + $info['scope'] = $info['ip']; + $info['detail'] = $info['as'] . ' ' . $info['isp']; + } if ($_GET['cli'] == "true") { // 使用命令行模式 $cli = "IP: ".$info['ip'] . PHP_EOL;