我想通過ajax發送有關用戶瀏覽器的信息到mysql數據庫,這種方法在另一個網站上完美工作,現在部分工作,這意味着有關屏幕的數據和瀏覽器寬度/高度,顏色和像素深度不會出現在我的數據庫中,並且通過php收集的信息被髮送/保存。通過ajax發送信息部分工作/失敗
以下是我在我的index.html文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en">
<head>
<title>Welcome</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<script type="text/javascript">
function ajax_post() {
var hr = new XMLHttpRequest();
var url = "st.php";
var sw = screen.width;
var sh = screen.height;
var bw = document.documentElement.clientWidth;
var bh = document.documentElement.clientHeight;
var cd = screen.colorDepth;
var pd = screen.pixelDepth;
var vars = "sw="+sw+"&sh="+sh+"&bw="+bw+"&bh="+bh+"&cd="+cd+"&pd="+pd;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
}
}
hr.send(vars);
};
ajax_post();
</script>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
My content here
</body>
</html>
這裏是st.php文件的使用通過PHP來收集信息,併發送/內容是塞弗到數據庫:
<?php
$dnt = date(DATE_COOKIE);
$ip = $_SERVER['REMOTE_ADDR'];
$rh = gethostbyaddr($ip);
$re = $_SERVER['HTTP_REFERER'];
$ua = $_SERVER['HTTP_USER_AGENT'];
$al = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$sw = $_POST['sw'];
$sh = $_POST['sh'];
$bw = $_POST['bw'];
$bh = $_POST['bh'];
$cd = $_POST['cd'];
$pd = $_POST['pd'];
$db_host = ********; // the host
$db_user = ********; // the user
$db_password = ***********; // the password
$connection = mysql_connect($db_host, $db_user, $db_password) or die(mysql_error());
mysql_select_db(*******) or die(mysql_error());
$query = "INSERT INTO *********(dnt, ip, rh, re, ua, al, sw, sh, bw, bh, cd, pd)
VALUES ('".mysql_real_escape($dnt)."','".mysql_real_escape($ip)."','".mysql_real_escape($rh)."','".mysql_real_escape($re)."','".mysql_real_escape($ua)."','".mysql_real_escape($al)."','".mysql_real_escape($sw)."','".mysql_real_escape($sh)."','".mysql_real_escape($bw)."','".mysql_real_escape($bh)."','".mysql_real_escape($cd)."','".mysql_real_escape($pd)."')";
mysql_query($query) or die(mysql_error());
?>
我檢查,我沒有阻止任何腳本(去激活非腳本),我試圖在Firefox和鉻和主顯沒有任何成功:沒有關於屏幕和瀏覽器寬度/高度,顏色和像素數據深度。
我不知道爲什麼這不起作用,因爲我一個星期前在同一臺主機上的網站上使用完全相同的代碼,並且工作完美。
謝謝你的幫助。
----- -----編輯
感謝@PiTheNumber我檢查了Firebug的控制檯和跟蹤問題的起源
問題解決
等待6個小時能夠回答我自己的問題,因爲我的名聲不到100分,因此現在無法回答。
是否存儲任何東西? Firebug告訴你關於ajax查詢的內容?它運行了嗎?結果是什麼? st.php是否被執行? – PiTheNumber 2012-02-14 08:26:46
是否有任何調用'ajax_post()'函數的東西? – martincarlin87 2012-02-14 09:24:17