簡體   English   中英

創建一個具有唯一ID的會話1小時-PHP

[英]Creating a session with a unique ID for 1 hour - PHP

我試圖為該用戶創建一個持續1小時的會話ID。

用戶登錄一次-生成randomid-添加到會話中。

用戶在1小時內再次登錄,應用相同的會話ID。

如果用戶在一小時后登錄,則生成一個新的ID。

到目前為止,我有這個

session_start();  
//create random sid
$today = date('YmdHi');
$startDate = date('YmdHi', strtotime('2012-03-14 09:06:00'));
$range = $today - $startDate;
$rand = rand(0, $range);
$sid= ($startDate + $rand);

 //first time user

if(isset($_SESSION['sessionid'])) {

    $_SESSION['sessionid'] = $sid;

}
   //visiting user
else
    {
        $_SESSION['sessionid'] = $_SESSION['sessionid'];
     }

echo $_SESSION['sessionid']; 

如何添加1小時超時? 我看到了使用Cookie的示例。 我希望只能使用服務器端會話嗎?

有任何想法嗎?

如果您希望會話在首次訪問后600秒后過期:

<?php
  $lifetime=600;
  session_set_cookie_params($lifetime);
  session_start();
?>

如果您希望會話在用戶最近一次訪問后600秒過期:

<?php
  $lifetime=600;
  session_start();
  setcookie(session_name(),session_id(),time()+$lifetime);
?>

文件: http//php.net/manual/en/book.session.php

如果要將隨機ID附加到一個小時后刷新的會話中,只需存儲該會話上一次生成的時間即可。

例如:

session_start();

function regenerate() {
    $_SESSION['code'] = uniqid();
    $_SESSION['code_time'] = time();
}

if (empty($_SESSION['code']) || time() - $_SESSION['code_time'] > 3600)
    //if there's no code, or the code has expired
    regenerate();

echo "Your code is " . $_SESSION['code'] . " it was generated on " . date('m/d/Y h:i:s a', $_SESSION['code_time']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM