2012-02-14 20 views
0

ユーザーブラウザに関する情報を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> 

、ここでは、PHPを介して情報を収集し、データベースにセベ/それを送信するために使用st.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()); 

?> 

私は任意のスクリプト(無効noscript要素)をブロックしていなかったことを確認し、私は成功せず、FirefoxとChromeとエピファニーでそれを試した:画面とブラウザの幅/高さ、色、ピクセルについてのデータを深さ

1週間前に同じホストのWebサイトで全く同じコードを使用していたので、これがうまくいかない理由はわかりません。

ありがとうございました。

----- ----- EDIT @PiTheNumberへ

おかげで、私はFirebugのコンソールをチェックし

問題がに6時間以上を待っ

を解決し、問題の原因を追跡私は100点以下の評判を持っているので自分の質問に答えることができるので、今すぐ答えられません。

+1

何も保存されていませんか? Firebugはajaxクエリについて何を教えてくれるのですか?それは走ったか?結果は何ですか? st.phpはまったく実行されていますか? – PiTheNumber

+0

'ajax_post()'関数を呼び出すものは何ですか? – martincarlin87

答えて

1

これはmysql injectionで非常に便利です!あなたのインサート付き

使用mysql_real_escape():@PiTheNumberへ

$query = "INSERT INTO *********(dnt, ip, rh, re, ua, al, sw, sh, bw, bh, cd, pd) 
VALUES ('".mysql_real_escape($dnt)."'...)"; 
+0

ありがとう、訂正しました –

0

おかげで私はFirebugのコンソールをチェックし、画面の投稿の一部を壊した.phpファイルの書き換え/リダイレクトに問題を追跡ブラウザの幅/高さ、色とピクセルの深さ。

関連する問題