2

私は最近、友人から挑戦を受けました。良い解決策がないので、ここで共有したいと思いました。

ウェブサイトの訪問者ヒット数が必要だとすると、訪問するたびに数が恒久的に増加します。

問題

GETリクエストを使用してサーバーの状態を変更することは悪い習慣と見なされます。また、自分のWebサイトにアクセスしたユーザーの数をカウントしたいので、なんとかして状態を保存する必要があります。

これにどのようにアプローチしますか?その慣習を破って、GETリクエストでサーバーを変更する必要がありますか?それとも、私がやってのけることができるもっと手の込んだ計画はありますか?

4

2 に答える 2

3

あなたがしている主張は一般的に真実です。ただし、ここでは、誰かがGETリクエストを行ったかどうかを正確に追跡する必要があります。したがって、そのような要求に対してこの処理を行うことは理にかなっています!

キャッシングメカニズムと組み合わせて使用​​する場合は、少し注意が必要です。訪問者をカウントする部分はキャッシュに入れることができないため、カウントを追跡するには常にサーバー側が必要です。

その他のソリューションは次のとおりです。

  • Google Analyticsなどの外部ツールはJavaScriptを使用して追跡画像を使用し(画像の取得はPOSTリクエストをシミュレートする方法ですが、とにかくGETです)、Cookieと組み合わせて一意の訪問者のみを追跡します。
  • ログ分析は別の方法です。Webサーバーは、他の情報(IPアドレス、ユーザーエージェントなど)とともに、すべての要求をファイルに書き込むことができます。アクセスログの分析が解決策になる可能性があります。

[編集]特にトラッキング画像が好きです。両方のソリューションを簡単にします。

于 2012-08-22T21:28:51.690 に答える
0

訪問を記録するために私が行うことは、PHPauto_prepend_fileまたはを使用することauto_append_fileです。これらのファイルには、次のようなものがあります。

error_reporting(0);
$conn = mysqli_connect('localhost', 'visitor_counter', 'password', 'visitors');
$ip = mysqli_real_escape_string($conn, $_SERVER['REMOTE_ADDR']);
$query = "UPDATE `visits` SET `count` = `count` + 1 WHERE `ip` = '$ip'";
mysqli_query($conn, $query);

共有ホストを使用しているので、次の.htaccessようなファイルを使用する必要があります。

php_value auto_prepend_file /php/head.php

お役に立てれば!

于 2012-08-22T21:26:24.967 に答える