
正文
php纯真ip数据库 php的数据库配置在哪
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php 纯真IP库 怎么返回区域信息?
首先 php纯真ip数据库你直接把前台数据拿来就往数据库里查 很危险!!! 其次. php纯真ip数据库你html 需要知道成功与否 则 你不需要输出那么多文字这些文字完全可以放在前端js里面去 你后端只需要输出 0 ,1 那么前端在接到 ajax返回后 判断是否为 0 则知道 是应该 让票数+1 还是 。
相关问答
Q1: 我做的php 网站,我在网上下载了ip 纯真版数据库,能显示地区 比如 “吉林省四平市”,我想把它提取出来
?php
//第一步:透过代理获取用户真实的IP地址
$theip=getip();
function getIP()
{
static $realip;
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
//第二步:通过读取IP地址库,找到所属地区
//假设表名为ip,字段有begin(起始),end(结束),area(地区代号)
$dblink=@mysql_connect("数据库服务器名","数据库用户名","数据库密码");
$dbselect=@mysql_select_db(数据库名);
if (!$dbselect){
die("数据库无法读取");
}
$result=mysql_query("select * from `ip` where `begin`=`$theip` and `end`=`$theip`");
$num=mysql_num_rows($result);
if($num0){
$info=mysql_fetch_array($result);
$page=$info['area'];
else{
$page='default'; //如果IP不在数据库中,则用缺省的页面
}
//第三步:转到相关页面,如代号为"js",转到"js.php"页面
$page.='.html'; //后缀你可以自己取
echo "script language=\"javascript\"window.location.replace(\"$page\")/script";
?
Q2: php获取了ip地址,用php怎么获取ip的地理位置?请大虾赐教!
通过纯真QQip地址库文件查询IP地理位置
2009-02-26 14:11
一、下载纯真IP地址库文件QQWry.Dat (网上有很多,并且可以定期升级)
二、创建类文件 IPLocation.php ,将下面代码直接拷贝到php文件中
?php
/**
* IP 地理位置查询类
*
* @author 马秉尧
* @version 1.5
* @copyright 2005 CoolCode.CN
*/
class IpLocation
{
/**
* QQWry.Dat文件指针(使用以前珊瑚虫QQ的IP)
*
* @var resource
*/
var $fp;
/**
* 第一条IP记录的偏移地址
*
* @var int
*/
var $firstip;
/**
* 最后一条IP记录的偏移地址
*
* @var int
*/
var $lastip;
/**
* IP记录的总条数(不包含版本信息记录)
*
* @var int
*/
var $totalip;
/**
* 返回读取的长整型数
*
* @access private
* @return int
*/
function getlong()
{
//将读取的little-endian编码的4个字节转化为长整型数
$result = unpack('Vlong', fread($this-fp, 4));
return $result['long'];
}
/**
* 返回读取的3个字节的长整型数
*
* @access private
* @return int
*/
function getlong3()
{
//将读取的little-endian编码的3个字节转化为长整型数
$result = unpack('Vlong', fread($this-fp, 3).chr(0));
return $result['long'];
}
/**
* 返回压缩后可进行比较的IP地址
*
* @access private
* @param string $ip
* @return string
*/
function packip($ip)
{
// 将IP地址转化为长整型数,如果在PHP5中,IP地址错误,则返回False,
// 这时intval将Flase转化为整数-1,之后压缩成big-endian编码的字符串
return pack('N', intval(ip2long($ip)));//intaval 获取变量的整数值
}
/**
* 返回读取的字符串
*
* @access private
* @param string $data
* @return string
*/
function getstring($data = "")
{
$char = fread($this-fp, 1);
while (ord($char) 0)
{ // 字符串按照C格式保存,以\0结束 ord()得到字符的ASCII码
$data .= $char; // 将读取的字符连接到给定字符串之后
$char = fread($this-fp, 1);
}
return $data;
}
/**
* 返回地区信息
*
* @access private
* @return string
*/
function getarea()
{
$byte = fread($this-fp, 1); // 标志字节
switch (ord($byte)) {
case 0: // 没有区域信息
$area = "";
break;
case 1:
case 2: // 标志字节为1或2,表示区域信息被重定向
fseek($this-fp, $this-getlong3());
$area = $this-getstring();
break;
default: // 否则,表示区域信息没有被重定向
$area = $this-getstring($byte);
break;
}
return $area;
}
/**
* 根据所给 IP 地址或域名返回所在地区信息
*
* @access public
* @param string $ip
* @return array
*/
function getlocation($ip)
{
if (!$this-fp) return null; // 如果数据文件没有被正确打开,则直接返回空
$location['ip'] = gethostbyname($ip); // 将输入的域名转化为IP地址
$ip = $this-packip($location['ip']); // 将输入的IP地址转化为可比较的IP地址
// 不合法的IP地址会被转化为255.255.255.255
// 对分搜索
$l = 0; // 搜索的下边界
$u = $this-totalip; // 搜索的上边界
$findip = $this-lastip; // 如果没有找到就返回最后一条IP记录(QQWry.Dat的版本信息)
while ($l = $u)
{ // 当上边界小于下边界时,查找失败
$i = floor(($l + $u) / 2); // 计算近似中间记录
fseek($this-fp, $this-firstip + $i * 7);
$beginip = strrev(fread($this-fp, 4)); // 获取中间记录的开始IP地址
// strrev函数在这里的作用是将little-endian的压缩IP地址转化为big-endian的格式
// 以便用于比较,后面相同。
if ($ip $beginip)
{ // 用户的IP小于中间记录的开始IP地址时
$u = $i - 1; // 将搜索的上边界修改为中间记录减一
}
else
{
fseek($this-fp, $this-getlong3());
$endip = strrev(fread($this-fp, 4)); // 获取中间记录的结束IP地址
if ($ip $endip)
{ // 用户的IP大于中间记录的结束IP地址时
$l = $i + 1; // 将搜索的下边界修改为中间记录加一
}
else
{ // 用户的IP在中间记录的IP范围内时
$findip = $this-firstip + $i * 7;
break; // 则表示找到结果,退出循环
}
}
}
//获取查找到的IP地理位置信息
fseek($this-fp, $findip);
$location['beginip'] = long2ip($this-getlong()); // 用户IP所在范围的开始地址
$offset = $this-getlong3();
fseek($this-fp, $offset);
$location['endip'] = long2ip($this-getlong()); // 用户IP所在范围的结束地址
$byte = fread($this-fp, 1); // 标志字节
switch (ord($byte))
{
case 1: // 标志字节为1,表示国家和区域信息都被同时重定向
$countryOffset = $this-getlong3(); // 重定向地址
fseek($this-fp, $countryOffset);
$byte = fread($this-fp, 1); // 标志字节
switch (ord($byte))
{
case 2: // 标志字节为2,表示国家信息又被重定向
fseek($this-fp, $this-getlong3());
$location['country'] = $this-getstring();
fseek($this-fp, $countryOffset + 4);
$location['area'] = $this-getarea();
break;
default: // 否则,表示国家信息没有被重定向
$location['country'] = $this-getstring($byte);
$location['area'] = $this-getarea();
break;
}
break;
case 2: // 标志字节为2,表示国家信息被重定向
fseek($this-fp, $this-getlong3());
$location['country'] = $this-getstring();
fseek($this-fp, $offset + 8);
$location['area'] = $this-getarea();
break;
default: // 否则,表示国家信息没有被重定向
$location['country'] = $this-getstring($byte);
$location['area'] = $this-getarea();
break;
}
if ($location['country'] == " CZ88.NET")
{ // CZ88.NET表示没有有效信息
$location['country'] = "未知";
}
if ($location['area'] == " CZ88.NET")
{
$location['area'] = "";
}
return $location;
}
/**
* 构造函数,打开 QQWry.Dat 文件并初始化类中的信息
*
* @param string $filename
* @return IpLocation
*/
function IpLocation($filename = "QQWry.Dat")
{
if (($this-fp = @fopen($filename, 'rb')) !== false)
{
$this-firstip = $this-getlong();
$this-lastip = $this-getlong();
$this-totalip = ($this-lastip - $this-firstip) / 7;
//注册析构函数,使其在程序执行结束时执行
register_shutdown_function(array($this, '_IpLocation'));
}
}
/**
* 析构函数,用于在页面执行结束后自动关闭打开的文件。
*
*/
function _IpLocation()
{
fclose($this-fp);
}
}
?
三、程序部分
require_once("includes/IPLocation.php") ; //这里引用刚创建的类文件
$ipLocation = new IpLocation("includes/QQWry.Dat") ; //这里引用ip地址库
$ips = $ipLocation-getlocation($userIP) ; //$ips 就是所得到的物理地址,$userIP是传入的IP ,例如(202.106.12.23)
来源:
下面是一个实例,获取IP并且检索出该IP地理位置
?
//获取IP
error_reporting (E_ERROR | E_WARNING | E_PARSE);
if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
$ip = getenv("REMOTE_ADDR");
}
else
{
$ip = "Unknown";
}
require_once("includes/IPLocation.php") ; //这里引用刚创建的类文件
$ipLocation = new IpLocation("includes/QQWry.Dat") ; //这里引用ip地址库
$ips = $ipLocation-getlocation($ip) ; //$ips 就是所得到的物理地址
var_dump($ips);
?
效果如下(我使用本地测试):
array(5) { ["ip"]= string(9) "127.0.0.1" ["beginip"]= string(9) "127.0.0.1" ["endip"]= string(9) "127.0.0.1" ["country"]= string(8) "本机地址" ["area"]= string(0) "" }
Q3: Discuz、Phpwind和Spacebuilder,哪一个好用?
discuz缺点:
不能批量编辑用户,如不能批量移动到指定用户组。
帖间随机广告代码不能“每条随机广告一行,用回车分开”。
没有“沉底”功能。
没有道具,用户不能自行改名。
不能批量删除某个用户若干天内的所有回复或主题。
优点:
discuz免费。
使用快速回复框时不会说“您提交的参数错误。请仔细阅读论坛帮助文件,确保您有相应的操作权限。”
不会因为css代码下载不完全而导致版面格式混乱。
积分、用户组、发帖数级别设置更灵活。
比asp+access版论坛更节约空间。转换后数据库大小只有动网Access数据库的三分之一。
速度快。
可以匿名发帖。
可以设置昵称。
可以直接使用纯真IP库。
后台设置简单明了。
可以“用户栏目定制”。
可以“合并用户”。
可以在后台直接更改用户名。
页面上下都有页码,方便翻页。
可以前台批量操作。
不会多重引用。
用户编辑帖子可以自己更改主题分类。
phpwind特点:
独创、成熟
phpwind独创的技术架构和程序设计,获得国家专利认证,从根基着手塑造快速、稳健、可扩展的论坛程序。7年砺炼,在用户需求基础上进行不断创新与完善,无论企业还是娱乐,全面满足论坛建设。
安全
高效防护算法、程序监控技术、注入式入侵过滤技术、防CC攻击技术、安全验证机制构筑的站点安全体系,将风险防患于未然
快捷、稳定、高效
核心参数的合理配置、负载均衡处理技术、数据库分表技术、文件读写稳定性算法帮助您最大限度地节省硬件资源,保障站点在服务器繁忙时快速稳定运行。
不仅为站长而设计
站长建站,影响的却是网民。PHPWind“不仅为站长而设计”的设计理念,将人性化融入论坛功能的点点滴滴。清晰的用户等级与权限设置,便捷完整的论坛功能与管理操作,详细地日志与统计记录,集成交易与支付,轻松备份/恢复数据给予站长和每一位会员良好的用户体验。
可扩展
开源、规范化的代码编写、标准化的插件接口和清晰简洁的模板体系理念,让站点无限延伸至未来。
完美整合
PHPWind所取得的同业合作,为您提供更多建站软件选择和无间隙的软件服务,帮助站点多面需求。查看详情
丰富的第三方资源
近千款风格,近百款插件,仍在不断丰富。查看详情
操作系统要求
PHPWind具备跨平台特性,支持 Linux/Unix及Windows 2000/2003/ XP等操作系统。
针对上述操作系统,我们队软件做了大量的测试和实地检验,保证PHPWind可以安全稳定的运行,但您仍需做好服务器操作系统的安全防备措施,例如Windows用户需更改MYSQL的初始密码,使用较新的稳定的软件版本等。
语言及数据库支撑环境要求可用的 web 服务器(如 Apache、Zeus、IIS 等)
php 5.2.x及以上
MySQL5.1.x及以上
Zend Optimizer 3.x及以上(可以不用)
如果您租用虚拟主机,请咨询虚拟主机提供商,您的空间服务器是否已安装了上述软件。
由于
PHPWind的数据表具有前缀设计,因此通常情况下可以将PHPWind与其他软件安装在同一个数据库中,或采用不同的前缀名在同一个数据库中安装多个PHPWind
论坛而不产生冲突。
您的 MySQL 数据库账号应当拥有 CREATE、DROP、ALTER 等执行权限。
安装可能用到的工具软件
PHPWind论坛系统的安装使用非常简单,因此您可能需要用到的工具软件也非常少。
1)您可能需要一个FTP客户端软件来上传PHPWind程序文件;
2)PHPWind是一个开源系统,您可以按自己的想法来修改程序代码,从而得到自己想要的社区呈现效果,或者社区系统某些配置文件的参数需要修改,此时您可能需要一个简单的文本文件编辑软件,一般操作系统自带的如Windows的记事本或第三方软件如EditPlus,都可以。
Spacebuilder - 特色
1.产品架构:采用“平台+应用”的设计思想,可以方便及快捷的扩展新的应用;
2. Ajax:表现层采用大量的jQuery技术,使用户获得良好的用户体验;
3. asp.net mvc:采用微软最新的asp.net
mvc(c#)进行表现层开发。彻底消除了ViewState可以万全控制html代码的输出;Controller与View完全分离充分避免了皮肤机制的性能损失;原生态的url
routing更利于urlrewrite。
4. 数据存储:目前采用SQL Server2000/SQLServer2005/SQL
Server2008进行数据存储,由于数据访问层采用了Provide设计模式所以可以方便的移植到其他关系型数据库;
5. 数据访问:为了提升性能以及数据库安全性,数据访问全部采用存储过程;
6. 高效缓存:使用可分区的缓存技术,并且具有优秀的缓存过期策略,使站点获得性能提升的同时,保证缓存与数据库数据同步;
7. 全文检索:以Lucene为核心实现全文检索功能,实现索引库自动更新,并提供企业级的全文检索性能;
8. 扩展机制:优秀的皮肤实现机制,使客户可以方便的对现有皮肤进行修改或开发新的皮肤;核心模块提供了全局事件,客户可以开发自己的Module;
9. 配置文件:配置信息均采用XML格式,易于管理设置;
10. 所有页面均采用xhtml+css进行设计,符合web标准,兼容所有主流浏览器(IE、Firefox),降低页面流量,提高加载速度;
php纯真ip数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php的数据库配置在哪、php纯真ip数据库的信息别忘了在本站进行查找喔。






