閲覧数をカウントする機能を実装したいです。
項目一覧が並んでおり、クリックすると詳細が表示されるページを作成しています。
詳細を閲覧した回数をカウントしたいのです。
現在、遷移先でページが読み込まれたらGET値を取得してPHPでDBへ接続カウントするという処理で実装しているのですが、
それだとページをリロードしたら閲覧数が増えてしまうので正確な閲覧数を取得できないと感じました。
html
1<a href="aaa?id=aaa">aaa</a> 2<a href="bbb?id=bbb">bbb</b>
リンクをクリックされたらIDをPHPに渡してカウントしたいのですが、どのような方法があるのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ページをリロードしたら閲覧数が増えてしまう
むしろそれが正しい仕様だと思います。
たとえばsessionStorageを利用すれば
おなじセッション内であればリロードをはじけるとは思います
もしくは history.pushStateで無理やりリロードを抑制するとか
sessionStorage
- from.html
HTML
1<a href="to.html">to</a>
- to.html
HTML
1<script> 2if(!sessionStorage.getItem('reload')){ 3 console.log("new"); 4 sessionStorage.setItem('reload',1); 5}else{ 6 console.log("reload"); 7} 8</script> 9<a href="from.html">from</a> 10<a href="javascript:location.reload()">reload</a> 11
pushState
- from.html
HTML
1<a href="to.html">to</a>
- to.html
HTML
1<script> 2history.pushState(null,null,document.referrer) 3</script> 4<a href="from.html">from</a> 5<a href="javascript:location.reload()">reload</a> 6
投稿2019/12/11 02:39
編集2019/12/11 03:39総合スコア116694
0
アクセスはユーザー(クライアント)一意情報(例えばIP)と共に全部保存しておいてカウント数を取得する際に適宜group byかけるので良いのではと。
ユニークアクセスとトータルアクセス両方見れるようになりますし。
投稿2019/12/11 03:14
総合スコア80875
0
ベストアンサー
それだとページリロードした際も$idにセットされないですか?
それはこれで解決できます。
Takumibooさんのコードを少し編集しました。
php
1session_start(); 2if (isset($_GET['id'])&&!isset($_SESSION['id'])) { 3 $id = $_GET['id']; 4$_SESSION['id'] = $id; 5} elseif(!isset($_GET['id'])){ 6 7 // idがなかった場合の処理 8 9 10}else{ 11//sessionがなかったときの処理 12} 13
セッションを破棄する方法
php
1session_start(); 2unset($_SESSION['id']);
投稿2019/12/11 02:47
編集2019/12/11 05:15総合スコア22
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/11 04:27
2019/12/11 05:12 編集
退会済みユーザー
2019/12/11 05:33
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。