本文目錄一覽:
Thinkphp5防止某個IP多次登錄的方法
//昨天寫的思路不對,重新寫….
/**
*檢查IP是否重複登錄多次
*/
public function check_ip(){
//獲取ip
$login_ip=$_SERVER[“REMOTE_ADDR”];
$login_time=date(“Y-m-d”,time());
if(Cache::get(‘cache_login_data’)==false){
//如果ip換成為false,那麼創建一個緩存,並賦值第一個
$login_data[0]=[‘login_ip’=$login_ip,’login_time’=$login_time];
Cache::set(‘cache_login_data’,$login_data);
}else{
//如果有cache,那麼將這條數據加入到緩存中最後一條去
$cache_login_data=Cache::get(‘cache_login_data’);
$count=0;
foreach($cache_login_dataas$k=$v){
//如果當前緩存中的值含有當前ip和時間,那麼計算當前時間內登錄次數
if($v[‘login_time’]==$login_time$v[‘login_ip’]==$login_ip){
$count++;
if($count10){
//當前ip登錄超過10次
$this-error(“你登錄超過了10次,請不要再來登了…”,”Login/index”);
}else{
//當前時間內有該IP登陸過,但是沒有超過10次
$cache_login_data[count($cache_login_data)+1]=[‘login_ip’=$login_ip,’login_time’=$login_time];
Cache::set(‘cache_login_data’,$cache_login_data);
}
}else{
//當前時間內,該IP沒有登陸過
$cache_login_data[count($cache_login_data)+1]=[‘login_ip’=$login_ip,’login_time’=$login_time];
Cache::set(‘cache_login_data’,$cache_login_data);
}
}
}
}
php如何防止程序重複執行
在用戶表中加四個欄位,一個記錄是否登錄,一個記錄登錄隨機碼(每次登錄不一樣),一個記錄最後登錄時間,一個記錄登錄ip,登錄後保存user_id及登錄隨機碼的session,在全局的配置文件中寫一個方法.每次訪問一個頁面都去查詢用戶表的登錄隨機碼及ip,如果發現ip或隨機碼不一致(因為同一區域網獲取的ip可能一樣,所以不能單純的判斷ip,加上驗證隨機碼),則彈出提示消息,並清空session,強迫下線.
php中如何防止重複登錄?php中有沒有類似struts2中application的東西?
application php 中沒有
我常用的方法是這個:
1、登陸狀態通過 session 來記錄
2、將 session 數據記錄到資料庫裡面
3、登陸時候,檢查session 庫中是否已經登陸.這個地方你自己考慮如何判定
4、退出是清掉 session 庫中對應的數據
原創文章,作者:QIHL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134193.html