0

ユーザーの訪問ごとにテーブルに詳細を 1 つだけ入力したい。どのページにたどり着いたかに関係なく、彼の訪問は重要です。だから私はこれをheader.phpに挿入しました//すべてのphpファイルに含まれるヘッダーファイル。

 //$retuser is not defined in veryfirst visit

if(!isset($retuser)){ 

    $ip=getRealIpAddr();
    if(isset($_SESSION['user_id'])) {
        $uid=$_SESSION['user_id'];
    } else {$uid=0;
    }
    $query="insert into visitors (vistime,visip,visiden) values(now(),'{$ip}','{$uid}')";
    $result = mysql_query($query,$connection);
    if (!$result) {
        echo "DB Error, could not insert comments\n";
        echo 'MySQL Error: ' . mysql_error();
        exit;
    }
    $retuser=1;
}

これで、ページをリロードするたびにユーザー エントリが挿入されます。これを解決する方法は?

アップデート :

ユーザーがタブを閉じるまで、 $retuser が機能するか、または生きるようにします。タブを閉じると、$retuser を破棄する必要があります。

4

1 に答える 1

0

訪問者を追跡する際に留意すべき点がいくつかあります。幸運にも user_id を使用しているため、カジュアル ブラウザ (非認証) の追跡で発生する多くの問題について心配する必要はありません。

  1. SESSIONSは、ユーザーがブラウザのタブまたはウィンドウを閉じたときに閉じる必要があり、通常は閉じます。ユーザーは、ブラウザでタブを開いたままにしておくことで、セッションを開いたままにすることができます。
  2. user_id を設定していますが、session_id を保存する必要があります。これは、同じブラウザを使用しているか、すべてのページでブラウザを閉じているかを判断するのに役立ちます (cURL などのボットではこのように見えます)。2 つの異なるブラウザー間で 2 つのログイン セッションを開いてもらいたいですか? サイトはどの程度安全である必要がありますか?
  3. ユーザーは、ブラウザを閉じていなくても、複数の IP からアクセスしているように見えることがあります。これは、セルラー ネットワーク (モバイル ビジター) およびインターネット プロキシ プールでの設計によるものです。2 つの異なるタワーから来た同じユーザーは、モバイル デバイスでの 1 つのセッション中に複数回 IP を切り替えることができます。ボット ネットもこのように動作しますが、技術的には、ボット ネットを止めようとしない限り、追跡したいユーザーではありません。
  4. 1 つの IP アドレスから複数のユーザーを取得できます。これは、ローカル ネットワークで発生します。異なるローカル IP アドレスを持つローカル ネットワーク上の 2 人、1 つのパブリック Web IP アドレス (通常はゲートウェイ、ルーター、またはモデムなど)。ローカル マシンの NIC で MAC アドレスを取得しようとすることは技術的に可能ですが、すべての状況で機能するとは限りません (また、ブラウザーのアクセス許可や安全でないサイトに関する警告を受け取った場合は、侵襲的と思われます)。現在、ローカル ネットワークで 5 台のマシンを実行しており、テストのために 5 台すべてを含むページを頻繁に開きます。これにより、私が同じユーザーであっても、トラフィックがはるかに多いように見えます。サイトが複数のセッションをブロックする場合、通常はマシンごとに新しいアカウントを作成します。(サイトで少し「テスト」を行う必要があります。
  5. ユーザーが同じマシン上で複数のブラウザーを使用してブラウジングしている場合、ユーザーは一度に複数のセッションを開くことができます。

クエリをプルして、ユーザーが一定時間内にサイトにアクセスしているかどうかを確認できます。ただし問題は、正当なユーザーが昼食やトイレに行ったためにブラウザを開いたままにし、10 分後に戻ってきた場合、それSESSIONはまだアクティブなままです。彼らはどこにも行っていません。遅延のためにセッションをフラッシュすると、潜在的なトラックをショートさせてしまいます。

Javascript コンポーネントを使用して、最後にマウスを動かした時や、フォーカスを持ってページから離れた時を追跡できますが、リスナーが貪欲な場合、サイトの表示が遅くなる可能性があります。さらに、誰かが Javascript を無効にしたり、スクリプトをブロックしたりしても、サイトを合法的に閲覧することができます。

于 2013-04-27T17:36:26.070 に答える