Aba*_*dis 14 php database session
如何在数据库中存储会话?我用这段代码做到了:
function write ($session_id, $session_data)
// write session data to the database.
{
if (!empty($this->fieldarray)) {
if ($this->fieldarray['session_id'] != $session_id) {
// user is starting a new session with previous data
$this->fieldarray = array();
} // if
} // if
if (empty($this->fieldarray)) {
// create new record
$array['session_id'] = $session_id;
$array['date_created'] = getTimeStamp();
$array['last_updated'] = getTimeStamp();
$array['session_data'] = addslashes($session_data);
$this->_dml_insertRecord($array);
} else {
// update existing record
if (isset($_SESSION['logon_user_id'])) {
$array['user_id'] = $_SESSION['logon_user_id'];
} // if
$array['last_updated'] = getTimeStamp();
$array['session_data'] = addslashes($session_data);
$this->_dml_updateRecord($array, $this->fieldarray);
} // if
return TRUE;
} // write
Run Code Online (Sandbox Code Playgroud)
但我应该如何像以前一样自动删除它.我的意思是如何在超时后自动删除会话?
小智 1
我很久以前就不得不处理这个问题,有两种解决方案,两种都不是很好,但就这样了。
按照事件的顺序(松散地),您的脚本将检查是否有会话 ID 发送到服务器,然后它将查看该会话是否在您的数据库中,以及该会话是否已过期。一旦建立了与会话数据库的连接,您可能会考虑对过期日期超过当前时间戳的所有记录运行 DELETE 查询。然后搜索用户刚刚发送的ID。每次人们使用您的网站时都会以这种方式进行清理
您可能会考虑另外执行的下一种方法是使用 CHRON 作业或其他自动化脚本,该脚本经常运行以清除会话表中的过期条目。如果您的网站流量较少且不频繁,那么这是一个好方法。
方法的组合就是这样。当您验证会话时,请在脚本中检查找到会话数据时的过期日期。如果找到 ID,但会话已过期,则删除该会话并开始新的会话。如果您这样做,您就不会遇到太多 ID 冲突问题或大量查询减慢服务器速度。您仍然可以在每天结束时运行 chron 作业来进行完整的清理。
确保您的系统是否有某种类型的注销按钮,手动注销的行为将触发用户会话的删除。
| 归档时间: |
|
| 查看次数: |
40432 次 |
| 最近记录: |