網址訪問者
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地址、訪問頁面、來源網址、瀏覽器類型等信息。