求显示IP和地区城市的个性签名代码。 把QQ显IP的那个数据库导出变成你要的数据库吧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很多的 呵呵 自己用gd+qqwry做一个 应该不难的 我有一个ip2addr函数,详情可见 http://hknng.3322.org/hknng/archive.php/article/286.html<?phpif (!defined("IPFILE")) define ("IPFILE", "QQWry.dat");function bin2dec($strBin) { $intLen = strlen($strBin); for ( $i = 0, $intBase = 1, $intResult = 0; $i < $intLen; $i++, $intBase *= 256 ) $intResult += ord($strBin{$i}) * $intBase; return $intResult;}// error code: 1-open file error; 2-data error;function ip2addr($intIp) { $arrUnknown = array( "region" => "(unknown)", "address" => "(unknown)" ); $fileIp = fopen(IPFILE, "rb"); if (!$fileIp) return 1; $strBuf = fread($fileIp, 4); $intFirstRecord = bin2dec($strBuf); $strBuf = fread($fileIp, 4); $intLastRecord = bin2dec($strBuf); $intCount = floor(($intLastRecord - $intFirstRecord) / 7); if ($intCount < 1) return 2; $intStart = 0; $intEnd = $intCount; while ($intStart < $intEnd - 1) { $intMid = floor(($intStart + $intEnd) / 2); $intOffset = $intFirstRecord + $intMid * 7; fseek($fileIp, $intOffset); $strBuf = fread($fileIp, 4); $intMidStartIp = bin2dec($strBuf); if ($intIp == $intMidStartIp) { $intStart = $intMid; break; } if ($intIp > $intMidStartIp) $intStart = $intMid; else $intEnd = $intMid; } $intOffset = $intFirstRecord + $intStart * 7; fseek($fileIp, $intOffset); $strBuf = fread($fileIp, 4); $intStartIp = bin2dec($strBuf); $strBuf = fread($fileIp, 3); $intOffset = bin2dec($strBuf); fseek($fileIp, $intOffset); $strBuf = fread($fileIp, 4); $intEndIp = bin2dec($strBuf); if ($intIp < $intStartIp || $intIp > $intEndIp) return $arrUnknown; $intOffset += 4; while (($intFlag = ord(fgetc($fileIp))) == 1) { $strBuf = fread($fileIp, 3); $intOffset = bin2dec($strBuf); if ($intOffset < 12) return $arrUnknown; fseek($fileIp, $intOffset); } switch ($intFlag) { case 0: return $arrUnknown; break; case 2: $intOffsetAddr = $intOffset + 4; $strBuf = fread($fileIp, 3); $intOffset = bin2dec($strBuf); if ($intOffset < 12) return $arrUnknown; fseek($fileIp, $intOffset); while (($intFlag = ord(fgetc($fileIp))) == 2 || $intFlag == 1) { $strBuf = fread($fileIp, 3); $intOffset = bin2dec($strBuf); if ($intOffset < 12) return $arrUnknown; fseek($fileIp, $intOffset); } if (!$intFlag) return $arrUnknown; $arrAddr = array( "region" => chr($intFlag) ); while (ord($c = fgetc($fileIp))) $arrAddr["region"] .= $c; fseek($fileIp, $intOffsetAddr); while (($intFlag = ord(fgetc($fileIp))) == 2 || $intFlag == 1) { $strBuf = fread($fileIp, 3); $intOffset = bin2dec($strBuf); if ($intOffset < 12) { $arrAddr["address"] = "(unknown)"; return $arrAddr; } fseek($fileIp, $intOffset); } if (!$intFlag) { $arrAddr["address"] = "(unknown)"; return $arrAddr; } $arrAddr["address"] = chr($intFlag); while (ord($c = fgetc($fileIp))) $arrAddr["address"] .= $c; return $arrAddr; break; default: $arrAddr = array("region" => chr($intFlag)); while (ord($c = fgetc($fileIp))) $arrAddr["region"] .= $c; while (($intFlag = ord(fgetc($fileIp))) == 2 || $intFlag == 1) { $strBuf = fread($fileIp, 3); $intOffset = bin2dec($strBuf); if ($intOffset < 12) { $arrAddr["address"] = "(unknown)"; return $arrAddr; } fseek($fileIp, $intOffset); } if (!$intFlag) { $arrAddr["address"] = "(unknown)"; return $arrAddr; } $arrAddr["address"] = chr($intFlag); while (ord($c = fgetc($fileIp))) $arrAddr["address"] .= $c; return $arrAddr; }}?> 在一个页面下点击“添加”按钮 在该页面的下方出现输入框 填写相关信息 保存后在页面上方的数据同时更新 求用的几个登录验证的方式 如何做内容摘要 速度!!!专业问题 关于mysql-essential-5.0.7-beta-win32+apache_2.0.54-win32-x86-no_ssl+php-4.3.11-Win32在win2000下的问题 关于登陆时用COOKIE还是SESSION的问题 页面白屏一般是怎么了?怎么造成的? 求解"&"的用法,绝顶高手入来吧。 网络编程该学什么? php文件下载问题 请人帮忙,php里怎么根据一个符号分割字符串。 求一正则表达式
<?php
if (!defined("IPFILE")) define ("IPFILE", "QQWry.dat");function bin2dec($strBin) {
$intLen = strlen($strBin);
for (
$i = 0, $intBase = 1, $intResult = 0;
$i < $intLen; $i++, $intBase *= 256
) $intResult += ord($strBin{$i}) * $intBase;
return $intResult;
}// error code: 1-open file error; 2-data error;
function ip2addr($intIp) {
$arrUnknown = array(
"region" => "(unknown)",
"address" => "(unknown)"
);
$fileIp = fopen(IPFILE, "rb");
if (!$fileIp) return 1;
$strBuf = fread($fileIp, 4);
$intFirstRecord = bin2dec($strBuf);
$strBuf = fread($fileIp, 4);
$intLastRecord = bin2dec($strBuf);
$intCount = floor(($intLastRecord - $intFirstRecord) / 7);
if ($intCount < 1) return 2;
$intStart = 0;
$intEnd = $intCount;
while ($intStart < $intEnd - 1) {
$intMid = floor(($intStart + $intEnd) / 2);
$intOffset = $intFirstRecord + $intMid * 7;
fseek($fileIp, $intOffset);
$strBuf = fread($fileIp, 4);
$intMidStartIp = bin2dec($strBuf);
if ($intIp == $intMidStartIp) {
$intStart = $intMid;
break;
}
if ($intIp > $intMidStartIp) $intStart = $intMid;
else $intEnd = $intMid;
}
$intOffset = $intFirstRecord + $intStart * 7;
fseek($fileIp, $intOffset);
$strBuf = fread($fileIp, 4);
$intStartIp = bin2dec($strBuf);
$strBuf = fread($fileIp, 3);
$intOffset = bin2dec($strBuf);
fseek($fileIp, $intOffset);
$strBuf = fread($fileIp, 4);
$intEndIp = bin2dec($strBuf);
if ($intIp < $intStartIp || $intIp > $intEndIp) return $arrUnknown;
$intOffset += 4;
while (($intFlag = ord(fgetc($fileIp))) == 1) {
$strBuf = fread($fileIp, 3);
$intOffset = bin2dec($strBuf);
if ($intOffset < 12) return $arrUnknown;
fseek($fileIp, $intOffset);
}
switch ($intFlag) {
case 0:
return $arrUnknown;
break;
case 2:
$intOffsetAddr = $intOffset + 4;
$strBuf = fread($fileIp, 3);
$intOffset = bin2dec($strBuf);
if ($intOffset < 12) return $arrUnknown;
fseek($fileIp, $intOffset);
while (($intFlag = ord(fgetc($fileIp))) == 2 || $intFlag == 1) {
$strBuf = fread($fileIp, 3);
$intOffset = bin2dec($strBuf);
if ($intOffset < 12) return $arrUnknown;
fseek($fileIp, $intOffset);
}
if (!$intFlag) return $arrUnknown;
$arrAddr = array(
"region" => chr($intFlag)
);
while (ord($c = fgetc($fileIp))) $arrAddr["region"] .= $c;
fseek($fileIp, $intOffsetAddr);
while (($intFlag = ord(fgetc($fileIp))) == 2 || $intFlag == 1) {
$strBuf = fread($fileIp, 3);
$intOffset = bin2dec($strBuf);
if ($intOffset < 12) {
$arrAddr["address"] = "(unknown)";
return $arrAddr;
}
fseek($fileIp, $intOffset);
}
if (!$intFlag) {
$arrAddr["address"] = "(unknown)";
return $arrAddr;
}
$arrAddr["address"] = chr($intFlag);
while (ord($c = fgetc($fileIp))) $arrAddr["address"] .= $c;
return $arrAddr;
break;
default:
$arrAddr = array("region" => chr($intFlag));
while (ord($c = fgetc($fileIp))) $arrAddr["region"] .= $c;
while (($intFlag = ord(fgetc($fileIp))) == 2 || $intFlag == 1) {
$strBuf = fread($fileIp, 3);
$intOffset = bin2dec($strBuf);
if ($intOffset < 12) {
$arrAddr["address"] = "(unknown)";
return $arrAddr;
}
fseek($fileIp, $intOffset);
}
if (!$intFlag) {
$arrAddr["address"] = "(unknown)";
return $arrAddr;
}
$arrAddr["address"] = chr($intFlag);
while (ord($c = fgetc($fileIp))) $arrAddr["address"] .= $c;
return $arrAddr;
}
}
?>