• 締切済み

<img src=".php?id=id">をカウントしないようにしたい

PHPでクリックされた回数をカウントしているのですが <?php $id=$_GET["id"]; カウント読み込み処理 カウント加算処理 header("Location: url"); ?> もし不正に<img src="http://hoge/count.php?id=id"> とした場合、クリックした回数ではなく 表示された回数をカウントされてしまいます。 <img src="http://hoge/count.php?id=id"> とした場合はカウントしない方法はありますか? よろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

http://hoge/count.php?id=id にて GETリクエストが来た時に、カウンタするのではなく 本物のカウンタスクリプトをコールするjavascriptを 応答するようにしては如何ですか?  本当のクリックならばjavascriptが動きますし イメージとしてリクエストされれば、javascriptが動かないので 本物のカウンタは動きません。 さらに直接本物をリクエストされないようにセッション管理も 組み合わせておく必要が有るでしょうが。

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

すべてが自サイト内の話なら、Referer使って呼び出し元が他サイトではないことを確認するとか。 もしくは、クッキーを使って同一ユーザー(閲覧者)の複数クリックを無視するとか。一定時間以内のものは無視するとか。 クリック(カウンター呼び出し)のすべてのログを時間と共に保存しておいて、クリック感覚の短いものが多くあれば怪しいと、統計的に判断(あとから人間の目で)して無効にするか。 なんとなくバナー広告システムの気がしますけど(違うかな?)、そうだとするとありとあらゆる防護措置を入れた上で、ログを取ってあとから人間の目で判断することは必須ですね。 他には、同一IPアドレスからの連続したクリックは無効とか、海外IPアドレスからは無効(海外プロキシ対策)とか、ブラウザ以外(ロボットなど)は無効、などですかね。

関連するQ&A

  • <img src=http://にしたい

    PHPでWebページのソースを取得して そのソースの中の<img>タグの src属性がもしhttp://で始まらなかった場合 取得したURLをsrc属性に加える方法はないでしょうか? 例 URL=http://www.○○.com ソース <img src="/image/01.jpg"> ↓ <img src="http://www.○○.com/image/01.jpg"> に変更したいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • srcに「banner.」で始まるファイルを指定しているimgタグが消える

    急に謎の症状が発生して困っています。 何か知っている方がいたらご教示お願いします。 謎の症状が起きるスクリプトの例------------------------ echo '<div>'; echo '<a href="hoge1"><img src="img/banner.jpg"></a>'; echo '<a href="hoge2"><img src="img/banner2.gif"></a>'; echo '<a href="hoge3"><img src="banner.gif"></a>'; echo '<a href="hoge4"><img src="banner.png"></a>'; echo '<a href="hoge5"><img src="hogehoge.gif"></a>'; echo '</div>'; ------------------------------------------------------ 上記のようなスクリプトを実行した場合に、3行目の「img/banner2.gif」と6行目の「hogehoge.gif」を指定しているimgタグしか表示されません。 残りはimgタグの部分だけ綺麗さっぱりに消えてaタグの部分だけ表示されます。実行結果が下記のようになるのです。(実際には改行されませんが、見やすいように改行してます。) 実行結果--------------------------------------- <div> <a href="hoge1"></a> <a href="hoge2"><img src="img/banner2.gif"></a> <a href="hoge3"></a> <a href="hoge4"></a> <a href="hoge5"><img src="hogehoge.gif"></a> </div> ----------------------------------------------- banner.gifやimg/banner.gifは表示されるファイルと同じディレクトリの中に存在しています。 昨日ちゃんと表示されていたのを確認しました。そのときからサーバーの設定は変更していないので、何が原因なのかが分かりません。 過去に同じような症状が起こった方はいないでしょうか? PHPのエラーログを見てもエラーも警告もありませんでした。 【環境】 OS: CentOS/5 HTTPD: Apache/2.2.3 PHP: PHP/5.1.6(eAccelarator、ZendOptimizerが入ってます) ちなみに「banner」だけだとOKでした。「banner.」が付くとダメみたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • imgタグのsrcの指定

    PHPおよびHtmlの構文にて、下記のsrcの指定は正しいのでしょうか? 実はこれ、Freeのスクリプトのコードですが、出力をすると、imgのリンクがhttp://bestpartnerusa.com/images/default_photo.php?profile=4と出力されてしまい、写真の部分が×表示されてしまいます。なにか、お気づきの点がありましたら、ご教示をお願いします。 echo "<a href=\"index.php?page=view_profile&id=".$profile[ id ]."\"><img height=100 border=0 hspace=0 vspace=0 src='images/default_photo.php?profile=".$profile[ id ]."'></a>";

    • ベストアンサー
    • PHP
  • アフィリエイトのようなカウントシステム

    アフィリエイトのように自分で配布したURLごとにカウントするというものを作りたいと思っています。 リンクを <a href="jump.php?no=1">マイHP</a> <a href="jump.php?no=2">マイHP</a> <a href="jump.php?no=3">マイHP</a> として、$_GET['no'] の値を見てカウント集計するという感じで考えてはいるのですが、どうすれば「no」ごとにカウントを取れるのかがわかりません。 単にカウントを取るプログラムは組めるんですが・・・ --------------------------------------------- <? header("Location: http://www.○○○.php"); ?> <?php $filename = "count.dat"; $file = fopen($filename, "r"); $count = fread($file, filesize($filename)); fclose($file); $count = $count + 1; print "$count"; $file = fopen($filename, "w"); fwrite($file, $count); fclose($file); ?> --------------------------------------------- このプログラムを応用して「no」ごとのカウントは出来るでしょうか?それとも、他のやり方の方がいいのでしょうか? どうかお教え願います。

    • 締切済み
    • PHP
  • Location後の処理について

    header("Location:./hoge.php"); などとして画面遷移を行った場合、これより下の行に書かれた処理は行われているのでしょうか? たとえば if (認証処理) { ログファイルに書込 header("Location:./hoge.php"); } とすればログを書いた後に遷移するのはわかりますが、 if (認証処理) { header("Location:./hoge.php"); ログファイルに書込 } 何らかの処理2 とした場合、ログに書き込みや処理2などは実行されているのでしょうか?

    • ベストアンサー
    • PHP
  • HTMLからimgのsrcのみを正規表現で抽出する

    Webサイトから画像だけをダウンロードするツールをJavaの勉強がてら作成しており、HTML内に含まれた全てのimgタグのsrc部分のみを抽出したいと考えています。 現在、正規表現を使ってHTMLからimgタグのsrcを抽出し、srcの一覧を取得するようなメソッドを作成していますが、私の実力が及ばないばかりに上手く出来ずに困っております。 以下のようなHTMLが有った場合の例を挙げます。 <html> <body> <img src="hoge.jpeg"> <img src="./hoge.jpeg"> <img src="./fuga/hoge.jpeg"> <img src="../fuga/hoge.jpeg"> <img src="http://fuga/hoge.jpeg"> </body> </html> 上記のHTMLがString型に格納されてますので、 作成した抽出用メソッドの引数に渡すと以下のようなString[]型の文字列を返す想定をしています。 [0]=hoge.jpeg [1]=./hoge.jpeg [2]=./fuga/hoge.jpeg [3]=../fuga/hoge.jpeg [4]=http://fuga/hoge.jpeg しかしながら現在、以下のような結果となり、最後の1件しか取得できていない状況です。 [0]=http://fuga/hoge.jpeg 恐らく正規表現が正しくないせいだとは思いますが、どのようにすれば取得できるのか分からず困っています。 もしこの問題についての解決策をご存じの方がおりましたら、ご教示いただけましたら幸いです。 よろしくお願いします 以下、作成中のテストソースです。 //---------------------------------------------------- import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String testHtml = "<html><body><img src=\"hoge.jpeg\"><img src=\"./hoge.jpeg\"><img src=\"./fuga/hoge.jpeg\"><img src=\"../fuga/hoge.jpeg\"><img src=\"http://fuga/hoge.jpeg\"></body></html>"; String[] res = extractImgSrc(testHtml); // 結果表示 for (int i = 0; i < res.length; i++) { System.out.println("res[" + i + "]=" + res[i]); } } // imgタグのsrcからurlを抽出 public static String[] extractImgSrc(String html) { List<String> result = new ArrayList<String>(); Pattern p = Pattern.compile("<\\s*img.*src\\s*=\\s*([\\\"'])?([^ \\\"']*)[^>]*>"); Matcher m = p.matcher(html); while (m.find()) { result.add(m.group(2)); } return result.toArray(new String[result.size()]); } }

    • ベストアンサー
    • Java
  • locationでジャンプした場合GETパラメータは認識されるの?(携帯編)

    (携帯サイトの場合です) I.まず下記のようにlocationヘッダでジャンプさせます。 header("Location: http://hoge.com/test.php?id=ok"); II.ジャンプ先で $id = $_GET["ok"]; とした場合GETパラメータは正常に取得できるのでしょうか。 お分かりになる方よろしくお願い致します。

    • 締切済み
    • PHP
  • link.php?id=***みたいにPHPでリンクをまとめたいのです

    link.php?id=***みたいにPHPでリンクをまとめたいのですが、うまくいきません。 <? $id['site1'] = 'http://www.example.com'; $id['site2'] = 'http://www.example.jp'; header($id[$_GET['id']]); ?> となっているのですが、動作しません。。 どう記述すればいいのでしょうか?教えてください。

  • クリックカウンタ

    クリック(送信)ボタンとカウント数を表示するindex.php カウント処理をするcounter.php カウント数を保存するdata.php index.phpにはカウンタを複数設置します。 送信するときにname=個別ID、value=そのIDの現在のカウンタ数+1 表示するときはdata.phpから対応するIDの数を表示します index.phpからcounter.phpにpostかgetで送信する。 送信はAjaxで行っていますので気にしないでください。 例index.phpでdata.phpを読み込み なんらかの方法でhoge1、huge2のクリック数を表示 今現在hoge1は20クリックとする hoge1の送信でcounter.php?hoge1=21 と送ると $_GET[hoge1]=21をdata.phpのhoge1の部分を21に更新する というような動作を実現したいのですが、ファイル操作やこういう場合の保存方法がわかりません(PHP暦二日目) クリックカウンタがひとつだけならアクセスカウンターの要領でいけるのですが・・・ 何かききたいことがあれば理解できる範囲で精一杯答えます。よろしくお願いします。

    • 締切済み
    • PHP
  • 重複を除くカウントの取得方法

    御晩です。 ----------------- <?php //カウント $id= "$k_id"; $id = mb_convert_encoding($k_id,"EUC-JP","SJIS"); $id_count = $DB->getone("SELECT count(*) FROM ".$k_koukoku_log_table." ".$k_koukoku_inp_table." where a_num =$k_id"); ?> カウント数は<?=$id_count?>です。 ----------------- 上記は重複もカウントされてしまいます。 ユーザー個々に広告番号があり($k_id)、その広告番号をクリックされた回数を同一人物(重複)を除いてのカウントを表示したいと思っています。

    • ベストアンサー
    • MySQL

専門家に質問してみよう