伊田生活ブログのロゴ
HOME  >  雑記
カテゴリー : 雑記 - メモ
•いいねボタン •クエリ •グリニッジ標準時
公開日:

いいね機能のこと(2-14)


2024年2月14日

昨日、このブログにいいねボタンを導入しました。


この「いいねボタン」は、「👍」のマークをクリックするとファイルのカウンターが1つカウントアップするという、シンプルなものです。(いいねは、リアルタイムでは反映されない仕様となっています。)いいねボタンを上記の記事に設置したのは昨日の早朝のことです。

夜、サーバー上のファイルを見てみると、なんと、いいねのカウンターは3となっていました。こんな無名のサイトなのに1日で3つもいいねが来るとは、いいねボタンの効果は絶大だ、などと思いました。最初にいいねされた時間は、朝の7時25分頃でした。(カウンターは、最初にいいねされた時刻と最後にいいねされた時刻を記録しています。)

今朝、カウンターのファイルを見てみると、昨日3だった数字が1つ増えて4になっていました。

そして、新しく別の記事のいいねカウンターが、0から1になっていました。その時刻はやはり、朝の7時25分頃でした。

そこで私はちょっとおかしいと感じました。アナリティクスで確認しても(その時 朝の7時40分頃でしたが、)リアルタイムのユーザー数は0となっていて、30分以内に誰かが記事にアクセスした形跡はありませんでした。もしかしたらこれはクローラーのせいではないかと、私はそこで考えました。

このいいね機能は、PHPを使用して実現しています。ボタンはハイパーリンクであり、「like_counter.php?id=〇〇」のように、カウンターのPHPのURLにクエリとして記事のIDを付加しています。そしてこのURLは、記事の中にハイパーリンクとしてそのまま記述しています。そのため、PHPのURLがクローラーによって発見され、アクセスされたことによって、いいねカウンターがカウントアップしてしまったのかもしれません。

クローラーなどの、人間以外のアクセスによる「誤いいね」を防ぐために、以下のような対処をしたいと思います。

  • ハイパーリンクでURLを直接開くのではなくJavaScriptの中でURLを開くようにする。
  • URLに付加するクエリを動的に作成する。→案:グリニッジ標準時をクエリに付加しPHP側で照合する。

URLには、「いいねボタン」が押された時点のグリニッジ標準時を、クエリとして付加するようにしたら、どうでしょうか。そしてPHP側でも、グリニッジ標準時を取得するようにします。PHPではクエリに付加された時刻情報を照合し、所定の時間以内(たとえば、5分以内)であればカウントアップ処理を実行するようにしたらどうだろう、と考えています。(時刻を完全一致としないのは、若干の時刻ずれが想定されるからです。)


いいね機能を実装しましたが、想定外の動作をするようなので、処理方法を少し変更しようと思います。具体的には、「• JavaScript から URL にアクセスするようにする」、「• クエリ文字列としてグリニッジ標準時を付加する」という2つの対策を、まずは講じてみようと思います。