网址访问者
1. 网站根据访问者的IP切换城市,是怎么弄的
是不是类似于 58同城网的效果?
首先你要有一个可以随时更新的IP数据包 现在很多主流程序都有 比如phpWIND里面的 ipdata 文件里,或是....
因为IP是不断更新的
之后的就和访问者的来源IP来分配不同的信息页面。
需要一个JS来调用
具体代码我不清楚,只是为了引导一下楼主!
2. 如何实现网站根据访问者的ip自动跳转到相应地方区域
不知道你用的是什么编程语言,给你贴个PHP的吧,网上有很多源码可以自己找一下
<?php
//返回当前IP的城市字符串
function convertip($ip) {
//IP数据文件路径
$dat_path = 'QQWry.Dat';
//检查IP地址
if(!preg_match("/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/", $ip)) {
return 'IP Address Error';
}
//打开IP数据文件
if(!$fd = @fopen($dat_path, 'rb')){
return 'IP date file not exists or access denied';
}
//分解IP进行运算,得出整形数
$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
//获取IP数据索引开始和结束位置
$DataBegin = fread($fd, 4);
$DataEnd = fread($fd, 4);
$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 = 0;
$EndNum = $ipAllNum;
//使用二分查找法从索引记录中搜索匹配的IP记录
while($ip1num>$ipNum || $ip2num<$ipNum) {
$Middle= intval(($EndNum + $BeginNum) / 2);
//偏移指针到索引位置读取4个字节
fseek($fd, $ipbegin + 7 * $Middle);
$ipData1 = fread($fd, 4);
if(strlen($ipData1) < 4) {
fclose($fd);
return 'System Error';
}
//提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
//提取的长整型数大于我们IP地址则修改结束位置进行下一次循环
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)));
fseek($fd, $DataSeek);
$ipData2 = fread($fd, 4);
if(strlen($ipData2) < 4) {
fclose($fd);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
//没找到提示未知
if($ip2num < $ipNum) {
if($Middle == $BeginNum) {
fclose($fd);
return 'Unknown';
}
$BeginNum = $Middle;
}
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(1)) {
$ipSeek = fread($fd, 3);
if(strlen($ipSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
fseek($fd, $ipSeek);
$ipFlag = fread($fd, 1);
}
if($ipFlag == chr(2)) {
$AddrSeek = fread($fd, 3);
if(strlen($AddrSeek) < 3) {
fclose($fd);
return 'System Error';
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($fd, $AddrSeek);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
} else {
fseek($fd, -1, SEEK_CUR);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0)){
$ipAddr2 .= $char;
}
}
fclose($fd);
//最后做相应的替换操作后返回结果
if(preg_match('/http/i', $ipAddr2)) {
$ipAddr2 = '';
}
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);
$ipaddr = preg_replace('/^s*/is', '', $ipaddr);
$ipaddr = preg_replace('/s*$/is', '', $ipaddr);
if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
$ipaddr = 'Unknown';
}
return $ipaddr;
}
//查找字符串
function findstr($str, $substr)
{
$m = strlen($str);
$n = strlen($substr );
if ($m < $n) return false ;
for ($i=0; $i <=($m-$n+1); $i ++){
$sub = substr( $str, $i, $n);
if ( strcmp($sub, $substr) == 0) return true;
}
return false ;
}
?>
<?php
$Clientip=$_SERVER["REMOTE_ADDR"];
$ClientSity=convertip($Clientip);
if (findstr($ClientSity,"北京")){
//out.print("beijing");
Header("Location: http://www.qq.com");
}else{
//out.print("false beijing");
Header("Location: http://www.163.com");
}
?>
3. 如何分析网站访问者的行为
一个用户要访问一个网站,他都会使用到哪些事物、留下哪些踪迹呢?鼠标,键盘,浏览器这三样无疑是必不可少的,登录网站之后,他的整个访问轨迹,停留时间等等。那么,这些事物和踪迹又能告诉我们什么呢?
第一,用户的鼠标点击某种程度上可以告诉我们用户在某个网页上的视觉轨迹。因为根据人的一般行为规律,用户会先点击他最先注意到的网页元素,无论这个元素是个按钮还是其它。因此,对用户鼠标点击的总结和分析将能够告诉我们用户在一个网页上的视觉大致浏览轨迹,由此可以得出一个网页设计是否合理,是否能够使得用户真正注意并且能够点击到企业需要让他点击的位置。最终影响到整个网站的信息架构甚而网站结构。
第二,浏览器,对于浏览器和用户操作系统信息的获取已经不是什么新鲜的功能,它们能够告诉我们的无非是用户使用机器的一些基本信息,此处不再多做叙述。
第三,访问轨迹,停留时间。对于这两项就大有文章可做了,从大的层面而言,它可以告诉我们用户在整个访问网站的过程中都做了哪些事情,既用户的客观行为,从小的层面而言,它可以告诉我们一些我们不通过分析访问轨迹无法得知的网站在用户操作流程上可能存在的问题,加上停留时间的参数进行分析的话,甚至可以告诉我们访问网站的用户的类型。以下分别举例说明这两种情况。
例一,我们通过网站访问轨迹的分析,发现一个用户在购买某件商品的付款流程中,总是在结算过程中跳出,那么,此时就可能存在两个可能:第一,结算页面存在误操作。第二:用户还想继续购买其它物品。此时我们结合对结算页面的鼠标点击分析,发现用户是点击了错误的链接导致总是意外跳出。此时,就可以断言,这个结算页面的设计存在问题,需要改进。
例二:有两名用户,其中一个登录新浪之后首先点击“科技”频道,随后点击了“互联网”,另外一个先点击了“科技”频道,随后点击了“数码”但在数码仅停留了很短的一个时间立即点到了“互联网”,那么,某种程度上这两名用户的操作习惯存在一致性,而且根据他们所感兴趣的内容可以一定几率上判定他们是it行业从业人员。通过对无数次同样的归类,我们就可以通过对这些数据的分析,得到我们网站用户的大致类型,所谓知己知彼才能百战百胜,知道我们面对的是什么样的用户,策略的制定才能有的放矢。
综上所述,我们不难看出网站访问行为分析的几个基本维度和它所能带来的好处。目前的网站流量统计分析产品普遍缺乏这样的维度,导致只是数据堆砌洏无法对这些用户行为获得有效的获知。而只有了解了用户的行为,企业才能有的放矢,做出相应的策略。
4. 一个网站可以通过哪些方法获取访问者的哪些信息
一般是分析日志或者嵌入统计系统代码,
可以获得访问者的浏览时间、ip地址、访问页面、来源网址、浏览器类型等信息。