php判斷是否過期
① php怎麼實現會員過期和會員升級
會員升級的時候,存儲會員過期日期屬性,每次會員登錄時,判斷下當前是否已過期,過期就作廢該會員優惠,沒有過期,該會員繼續。會員做一次升級,重復更新過期日期和升級後是否有疊加多餘優惠
② 如何判斷PHP的Cookie已經過期
網站生成cookie時都會設置一個過期時間的親,根據那個去判斷的啊!
比如:setCookie($cookieName,$value,time()+秒數);如果有存儲cookie時間及過期時間可以這樣來判斷:oldtime+秒數>time()---沒過期,否則過期
③ php中怎樣判斷session過期
SESSION 的有效時間在 php.ini 里配置。
過期以後 SESSION 變數值為 NULL ,任意判斷一個 SESSION 變數值即可。
④ php 日期 到期問題 在線等
我寫了一個,你看看:
<?php
$time1=strtotime(date('Y-m-d',time()));//獲得當時時間戳
$time2=strtotime(date('Y-m-d',strtotime("+365day")));//獲得一年之後的時間戳
$time3=strtotime(date('Y-m-d',time()));//獲得當前時間戳,用作對比
if($time3>=$time2){
echo'到期時間是:'.Date('Y-m-d',$time2);
unset($time1);
}
?>
⑤ 求:php網頁中時間過期提示源代碼
$d=ceil((strtotime('2020-2-19')-time())/3600/24);
if($d>0){
echo "距離結束還剩".$d."天";
}else{
echo "已失效";
}
⑥ PHP-PHP可以拿到memcache中的key的過期時間嗎
memcached 數據過期機制 lazy expiration
內部不會監視記錄是否過期,而是在get時查看記錄的時間戳,檢查記錄是否過期。這種技術被稱為lazy(惰性)expiration。因此,memcached不會在過期監視上耗費CPU時間,換句話說,也不能 檢測 某個key的過期時間。。
可以使用一種較笨的方法:
definde('MEM_TIME_OUT',1800);
$memKey = "testkey";
$val = 'This is test value';
mem_set($key,$val); //調用
function mem_set($key,$val) {
$memcache -> set($memKey,$val, 0, MEM_TIME_OUT);
//當調用set 的時候順便加一條記錄時間
$memcache -> set('TIME_'.$memKey,time(), 0, MEM_TIME_OUT);
}
function mem_get($key,$is_time = false) {
$memKey = $is_time ? 'TIME_'.$key : $key;
$val = $memcache -> get($key);
if($is_time) {
$val = MEM_TIME_OUT - (time() - $val);
}
return $val;
}
大概意思就是這樣。。 期待高手給出更完美,簡單的方法。。
⑦ PHP+MYsql 根據時間戳判斷是否過期並進行相關排序方式,求幫忙解決下,謝謝。點擊看內容!!!
(select*fromtest1wheretime>=100orderbytimedesc)
union
(select*fromtest1wheretime<100orderbytimeasc)
試試, 電腦上沒有mysql, 所以不能運行, 注意 time 列, 可能是關鍵字 不能運行
⑧ PHP可以拿到memcache中的key的過期時間嗎
memcached 數據過期機制 lazy expiration
內部不會監視記錄是否過期,而是在get時查看記錄的時間戳,檢查記錄是否過期。這種技術被稱為lazy(惰性)expiration。因此,memcached不會在過期監視上耗費CPU時間,換句話說,也不能 檢測 某個key的過期時間。
可以使用一種較笨的方法:
definde('MEM_TIME_OUT',1800);
$memKey = "testkey";
$val = 'This is test value';
mem_set($key,$val); //調用
function mem_set($key,$val) {
$memcache -> set($memKey,$val, 0, MEM_TIME_OUT);
//當調用set 的時候順便加一條記錄時間
$memcache -> set('TIME_'.$memKey,time(), 0, MEM_TIME_OUT);
}
function mem_get($key,$is_time = false) {
$memKey = $is_time ? 'TIME_'.$key : $key;
$val = $memcache -> get($key);
if($is_time) {
$val = MEM_TIME_OUT - (time() - $val);
}
return $val;
}
⑨ PHP中設置一個嚴格30分鍾過期Session面試題的4種答案
今天在我的微博上發出一個問題:
我在面試的時候,
經常會問一個問題:
「如何設置一個30分鍾過期的Session?」,
大家不要覺得看似簡單,
這裡麵包含的知識挺多,
特別適合考察基本功是否扎實,
誰來回答試試?
呵呵
為什麼問這個問題呢?
1.我在stackoverflow上看到了有人討論這個問題
2.想起來我經常問這個問題,
所以~~
在這里,
我來解答下這個題目.
第一種回答
那麼,
最常見的一種回答是:
設置Session的過期時間,
也就是session.gc_maxlifetime,
這種回答是不正確的,
原因如下:
1.
首先,
這個PHP是用一定的概率來運行session的gc的,
也就是session.gc_probability和session.gc_divisor(介紹參看
PHP使用Session遇到的一個Permission
denied
Notice解決辦法),
這個默認的值分別是1和100,
也就是有1%的機會,
PHP會在一個Session啟動時,
運行Session
gc.
不能保證到30分鍾的時候一定會過期.
2.
那設置一個大概率的清理機會呢?
還是不妥,
為什麼?
因為PHP使用stat
Session文件的修改時間來判斷是否過期,
如果增大這個概率一來會降低性能,
二來,
PHP使用」一個」文件來保存和一個會話相關的Session變數,
假設我5分鍾前設置了一個a=1的Session變數,
5分鍾後又設置了一個b=2的Seesion變數,
那麼這個Session文件的修改時間為添加b時刻的時間,
那麼a就不能在30分鍾的時候,
被清理了.
另外還有下面第三個原因.
3.
PHP默認的(Linux為例),
是使用/tmp
作為Session的默認存儲目錄,
並且手冊中也有如下的描述:
Note:
如果不同的腳本具有不同的
session.gc_maxlifetime
數值但是共享了同一個地方存儲會話數據,則具有最小數值的腳本會清理數據。此情況下,與
session.save_path
一起使用本指令。
也就是說,
如果有倆個應用都沒有指定自己獨立的save_path,
一個設置了過期時間為2分鍾(假設為A),
一個設置為30分鍾(假設為B),
那麼每次當A的Session
gc運行的時候,
就會同時刪除屬於應用B的Session
files.
所以,
第一種答案是不」完全嚴格」正確的.
第二種答案
還有一種常見的答案是:
設置Session
ID的載體,
Cookie的過期時間,
也就是session.cookie_lifetime.
這種回答也是不正確的,
原因如下:
這個過期只是Cookie過期,
換個說法這點就考察Cookie和Session的區別,
Session過期是伺服器過期,
而Cookie過期是客戶端(瀏覽器)來保證的,
即使你設置了Cookie過期,
這個只能保證標准瀏覽器到期的時候,
不會發送這個Cookie(包含著Session
ID),
而如果通過構造請求,
還是可以使用這個Session
ID的值.
第三種答案
使用memcache,
redis等,
okey,
這種答案是一種正確答案.
不過,
很顯然出題者肯定還會接著問你,
如果只是使用PHP呢?
第四種答案
當然,
面試不是為了難道你,
而是為了考察思考的周密性.
在這個過程中我會提示出這些陷阱,
所以一般來說,
符合題意的做法是:
1.
設置Cookie過期時間30分鍾,
並設置Session的lifetime也為30分鍾.
2.
自己為每一個Session值增加Time
stamp.
3.
每次訪問之前,
判斷時間戳.
最後,
有同學問,
為什麼要設置30分鍾的過期時間:
這個,
首先這是為了面試,
第二,
實際使用場景的話,
比如30分鍾就過期的優惠劵?
thanks
:)