首頁 後端開發 php教程 老大,小弟有些迷惑的东西

老大,小弟有些迷惑的东西

Jun 13, 2016 pm 01:30 PM
lock search session time

请教各位老大,小弟有些迷惑的东西。
小弟的系统(一个cms)中有个搜索页面是这样的 以下代码是为了防止用户频繁的搜索
$lockfile = './time.lock.inc'; //time.lock.inc 内容为: 1337659312
$lasttime = file_get_contents($lockfile);

if(!empty($lasttime) && ($lasttime + $cfg_search_time) > time())
{
  ShowMsg('请勿频繁操作','-1');
  exit();
}
每次搜索完后会更新当前的时间到 time.lock.inc

这段代码其实是防止了所有的用户在指定$cfg_search_time内不能同时进行2次以上的操作,但是这样肯定不妥。
原因如下(不知是否妥当),请各位老大帮忙分析分析:
假如$cfg_search_time=1 同时有20人在并发搜索 理想情况中间不乱费一丝时间(服务器及网速消耗时间忽略不计)需要20秒

因为是这样 我想做下改进 在time.lock.inc存储2个信息 一个IP 一个时间戳
$dataiplist0=>array('14.453.22.55'=>1337659312,...);
?>
然后每次都获取一次IP 在每次搜索的时候针对指定IP来进行检测 同一IP1秒之内只能搜索一次,这样就可以并发搜索了,但是这里就有个问题 假如一个内网段的用户都是用同一个外网IP上网,这样就可能将整个内网都当成一个用户在处理了,不知道这些问题各位大哥遇到过没,怎么处理。

最后弱弱的问下,这样能有效的控制用户恶意骚扰吗,如果不能,各位大大是否能给个好的建议。。。




------解决方案--------------------
保存array到这个文件,
以session id为key,值为上次搜索的时间戳。
------解决方案--------------------
这样子,因为搜索的人应该不会很多,当然个别(动作)论坛除外
可以使用memcache 来保存数据

用ip+用户名+搜索时间的组合方式来判断


------解决方案--------------------
你一开始的锁定是针对所有用户的,所以用文件锁是正确的

后来你又想只锁定单个用户,那么用 session 就可以了
------解决方案--------------------
session控制即可, 如果要防黑客另当别论, session对它们毫无作用, 不提交cookie就是了.
------解决方案--------------------
新建一表,把搜索的用户放进去。判断是否有记录或者时间在一定范围内。就不让再查了

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SpringBoot Session怎麼設定會話超時 SpringBoot Session怎麼設定會話超時 May 15, 2023 pm 02:37 PM

SpringBoot Session怎麼設定會話超時

session失效怎麼解決 session失效怎麼解決 Oct 18, 2023 pm 05:19 PM

session失效怎麼解決

PHP Session 跨域問題的解決方法 PHP Session 跨域問題的解決方法 Oct 12, 2023 pm 03:00 PM

PHP Session 跨域問題的解決方法

session php預設失效時間是多少 session php預設失效時間是多少 Nov 01, 2022 am 09:14 AM

session php預設失效時間是多少

php session刷新後沒有了怎麼辦 php session刷新後沒有了怎麼辦 Jan 18, 2023 pm 01:39 PM

php session刷新後沒有了怎麼辦

time包的單調時鐘處理 time包的單調時鐘處理 Aug 04, 2023 pm 05:45 PM

time包的單調時鐘處理

Redis的分享session應用如何實現簡訊登入 Redis的分享session應用如何實現簡訊登入 Jun 03, 2023 pm 03:11 PM

Redis的分享session應用如何實現簡訊登入

PHP如何在多個檔案中正確讀取和寫入Session數據 PHP如何在多個檔案中正確讀取和寫入Session數據 Mar 23, 2023 am 11:12 AM

PHP如何在多個檔案中正確讀取和寫入Session數據

See all articles