[請益] 計數器防灌水

看板PHP作者 (不務正業的賊)時間16年前 (2009/07/21 09:05), 編輯推噓10(10034)
留言44則, 4人參與, 最新討論串1/1
負責的圖書館網站有在作期刊點擊次數統計 (把IP、使用者ID、期刊名、時間等資訊寫入DB,再以程式統計) 一開始並沒有禁止短時間內重覆點擊 自從有單位要能統計個人使用次數後 就有灌水的情況出現 上個月實在太離譜了,有一個單位點擊次數爆增10倍多 看來不能不改了... 先想到用SESSION,程式檢查SESSION不存在才寫入log 不過這樣SESSION存在期間,點其它期刊也不會計次 所以又想到把期刊名放在SESSION裡 不過這樣交替點不同期刊還是能灌次數... 不能光看IP,因為來自同單位的USER都同IP 我的情況怎麼作比較好呢? 還有session能用函式訂有效時間長短嗎? 放一段log給各位看看可能比較容易瞭解: id ip date time access_jname access_user 1500980114, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980115, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980148, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980149, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980151, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980152, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18-262 1500980153, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18-262 1500980212, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18-262 1500980213, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18-262 1500980214, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18-262 1500980215, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980216, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980264, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980265, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980266, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 1500980267, 192.168.161.85, 20090616, 09:49, 期刊名太長略, 18- 已省略部分,114~267都是6/16 09:49點的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.241.104.166

07/21 09:07, , 1F
所以你想要的情境是?哪種情況的點擊才算?
07/21 09:07, 1F

07/21 09:08, , 2F
啊,我看懂了@@
07/21 09:08, 2F

07/21 09:09, , 3F
如果不考慮 session 儲存超多資訊的情況下…
07/21 09:09, 3F

07/21 09:09, , 4F
那就把期刊編號和時間都存進去就好囉
07/21 09:09, 4F

07/21 09:10, , 5F
如果 session 中有現在瀏覽的期刊編號的話,就檢查
07/21 09:10, 5F

07/21 09:10, , 6F
session 中該期刊上次瀏覽的時間,如果差值大於某數
07/21 09:10, 6F

07/21 09:11, , 7F
才判定為有效點擊,然後更新此期刊的點閱時間
07/21 09:11, 7F

07/21 09:12, , 8F
session 中看是要用二維陣列還是一維陣列來存都可以
07/21 09:12, 8F

07/21 09:23, , 9F
寫入資料庫吧,SESSION關掉BORWSER就沒用了
07/21 09:23, 9F

07/21 09:23, , 10F
或是禁止COOKIES,也可以洗得爽爽的
07/21 09:23, 10F

07/21 09:24, , 11F
不能看IP的話,就看帳號?SESSION的timeout可以拉長
07/21 09:24, 11F

07/21 09:25, , 12F
寫入資料庫是不是就要存 使用者*期刊數 的 record 啊
07/21 09:25, 12F

07/21 09:26, , 13F
雖然 session 也是一樣… 這樣就要為資料庫加上定期
07/21 09:26, 13F

07/21 09:26, , 14F
清除過期 record 的功能了 :p
07/21 09:26, 14F

07/21 09:30, , 15F
如果要 login 才能點閱的話 session 應該就夠了…
07/21 09:30, 15F

07/21 09:30, , 16F
如果 guest 點閱也算的話… 存到資料庫好像也無用…
07/21 09:30, 16F

07/21 09:30, , 17F
關掉 browser 清除 cookie 似乎就無敵了 XD
07/21 09:30, 17F

07/21 09:33, , 18F
一般來說 這種部分應該都是login後才能看得吧?
07/21 09:33, 18F

07/21 09:33, , 19F
應該還會區分權限...不過同單位同IP是有點誇張
07/21 09:33, 19F

07/21 09:34, , 20F
如果是有裝PORXY,應該是非匿名的,有機會可以取得
07/21 09:34, 20F

07/21 09:34, , 21F
原本的IP,參考之前的GETIP
07/21 09:34, 21F

07/21 09:35, , 22F
因樣大部分都是有PRIVATE IP 可以去區分
07/21 09:35, 22F

07/21 09:35, , 23F
07/21 09:35, 23F

07/21 09:36, , 24F
其實我覺得作到這樣就跟正版遊戲加上 starforce 一樣
07/21 09:36, 24F

07/21 09:36, , 25F
寫資料庫是因為遇過無聊人士一直登入 洗次數之類的
07/21 09:36, 25F

07/21 09:37, , 26F
的感覺了… XD 唉,最近的正版遊戲都把玩家當小偷…
07/21 09:37, 26F

07/21 09:37, , 27F
也是… 遇到這種的不擋他又不行…
07/21 09:37, 27F

07/21 11:20, , 28F
哇 好多建議 謝謝各位~~~(慢慢消化)
07/21 11:20, 28F

07/21 11:21, , 29F
初期沒有個人使用統計 的確未login也算點擊
07/21 11:21, 29F
※ 編輯: ThiefFan 來自: 210.241.104.166 (07/21 11:30)

07/21 11:30, , 30F
放一段log給各位參考
07/21 11:30, 30F

07/21 11:59, , 31F
#16tMVBwg 參考看看,兩年前我問的 XD
07/21 11:59, 31F

07/21 12:38, , 32F
一百多下 應該是用F5辦到的XD
07/21 12:38, 32F

07/21 13:38, , 33F
補充18是單位號 226是使用者號 18-就是沒登入的
07/21 13:38, 33F

07/21 13:38, , 34F
放一起好像很白痴...orz
07/21 13:38, 34F

07/21 13:39, , 35F
roga大的方式好像可以參考 研究一下...
07/21 13:39, 35F

07/22 11:55, , 36F
不過roga大的方式卡同一個問題 就是同IP不同USER
07/22 11:55, 36F

07/22 11:55, , 37F
點同一本期刊時不會被計算到...
07/22 11:55, 37F

07/22 11:59, , 38F
還是去研究一下GETIP...囧
07/22 11:59, 38F

07/22 15:39, , 39F
妳分兩個欄位存 user id 和 期刊 id 不就好了
07/22 15:39, 39F

07/22 15:41, , 40F
還有,要統計個人點擊數,其實不必要紀錄IP..
07/22 15:41, 40F

07/22 15:41, , 41F
重點應該放在"誰"在"何時" "看了什麼"
07/22 15:41, 41F

07/22 16:22, , 42F
記錄IP是要作單位別統計 因有不登入使用的情形
07/22 16:22, 42F

07/22 16:23, , 43F
如所附log的 18- 可能是同單位不同人
07/22 16:23, 43F

01/19 09:15, , 44F
對了 最後是用了roga大的方式 insert前先檢查今日次數
01/19 09:15, 44F
文章代碼(AID): #1APHH4tZ (PHP)
文章代碼(AID): #1APHH4tZ (PHP)