php,根据IP切换城市代码问题

php,根据IP切换城市代码问题,第1张

124.205.181.2 显示是北京 电信通 显示

222.35.115.218 显示是北京 顺义区 铁通

为什么我这里可以?

你有没有搭建好环境,文件有没有放对位置?

============

把QQWry.dat放在这个文件的data目录中

<?php

$ipdatafile = 'data/QQWry.dat'

$ip = '121.33.8.90'//广州的IP

//$ip = '219.234.251.60'//北京的IP

//$ip = '211.160.165.66'//上海的IP

//生产环境用这个代码

//$ip=$_SERVER['REMOTE_ADDR']

$ret = convertip_full($ip,$ipdatafile)

echo $ret

if(preg_match("|上海|",$ret))

{

echo "上海\n<br>"

echo ""

}

elseif(preg_match("|北京|",$ret))

{

echo "北京\n<br>"

echo ""

}

else

{

echo "其它地方\n<br>"

echo ""

}

function convertip_full($ip, $ipdatafile) {

if(!$fd = fopen($ipdatafile,'rb')) {

return '- Invalid IP data file'

}

$ip = explode('.', $ip)

$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3]

if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ) return

@$ipbegin = implode('', unpack('L', $DataBegin))

if($ipbegin <0) $ipbegin += pow(2, 32)

@$ipend = implode('', unpack('L', $DataEnd))

if($ipend <0) $ipend += pow(2, 32)

$ipAllNum = ($ipend - $ipbegin) / 7 + 1

$BeginNum = $ip2num = $ip1num = 0

$ipAddr1 = $ipAddr2 = ''

$EndNum = $ipAllNum

while($ip1num >$ipNum || $ip2num <$ipNum) {

$Middle= intval(($EndNum + $BeginNum) / 2)

fseek($fd, $ipbegin + 7 * $Middle)

$ipData1 = fread($fd, 4)

if(strlen($ipData1) <4) {

fclose($fd)

return '- System Error'

}

$ip1num = implode('', unpack('L', $ipData1))

if($ip1num <0) $ip1num += pow(2, 32)

if($ip1num >$ipNum) {

$EndNum = $Middle

continue

}

$DataSeek = fread($fd, 3)

if(strlen($DataSeek) <3) {

fclose($fd)

return '- System Error'

}

$DataSeek = implode('', unpack('L', $DataSeek.chr(0))

不理解,你为什么要用session保存呢?要跨多个页面传值吗?

如果只是简单的来跳转,用你说的方法很好呢?

问:数据库是直接诶建个表让后自增列相对应各个城市ID吗

答:一种方法,你给所有的城市自编号;另有一法,就是用自增的id

由于在linux服务器上装了多个版本的PHP,常常感到疑惑的是,在Web中,php的版本是5.6的,而命令行中却可能是7.2的,这就很让人疑惑了,经过了不断摸索,终于发现的缘由。

首先,web中的php版本,是由你的nginx(apache)服务器配置决定的,在nginx(apache)配置文件中都指定了php的版本。

其次,命令行中的php版本,可以通过以下命令切换:

修改版本为php5.6: sudo update-alternatives --set php /usr/bin/php5.6

修改版本为php7.2: sudo update-alternatives --set php /usr/bin/php7.2

停用php5.6: sudo a2dismod php5.6

启用php7.2: sudo a2enmod php7.2


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/427294.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-26
下一篇2023-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存