如果使用,则无需使用PHP的会话处理 加密的cookie 。基本上,标准会话将数据存储在服务器(内存缓存,文件或数据库)上,数据的ID /密钥放在提供给用户代理的cookie中。
加密的cookie只是将数据存储在用户代理的cookie中,并完全放弃ID /密钥。当存储卸载到用户时,这会减少服务器负载。
如果数据不够重要,无法加密,您也可以 HMAC签署cookie 内容,以防止人们改变它,即使他们可以看到原始内容。
你可能想试试我的简单 PHP工具包 使用加密cookie的库。
$_SESSION = \Kit\Cookie::get('session'); ...do stuff... \Kit\Cookie::set('session', $_SESSION);
只需确保在将任何输出发送给用户之前保存cookie,因为所有标头都需要先发送。
我在调用session时做了什么
//开始会话并设置var
在session_start();
$ _SESSION [ '登录'] = '是';
$ _SESSION [ 'someinfo'] = $变种;
//在打电话时
$ var = $ _SESSION ['someinfo'];
我希望这有帮助
-kris
尝试构建自己的会话机制时,很少有事情需要注意。
你要做的第一件事就是编写一个PHP Session包装器。将包含PHP Session功能的类。因此,当您想要使用Sessions时,您可以实例化会话类并使用会话执行所需的操作。你可以这样做:
class Session { /** * Starts new or resumes existing session * * @access public * @return bool */ public function start() { if(session_start()) { return true; } return false; } /** * End existing session, destroy, unset and delete session cookie * * @access public * @return void */ public function end() { if($this->status != true) { $this->start(); } session_destroy(); session_unset(); setcookie(session_name(), null, 0, "/"); } /** * Set new session item * * @access public * @param mixed * @param mixed * @return mixed */ public function set($key, $value) { return $_SESSION[$key] = $value; } /** * Checks if session key is already set * * @access public * @param mixed - session key * @return bool */ public function has($key) { if(isset($_SESSION[$key])) { return true; } return false; } /** * Get session item * * @access public * @param mixed * @return mixed */ public function get($key) { if(!isset($_SESSION[$key])) { return false; } return $_SESSION[$key]; } }
然后您可以像这样使用此会话类:
$session = new Session(); $session->start(); $session->set('id', 5); echo $session->get('id);
我喜欢这个,因为我可以像对象一样使用PHP Sessions,而不必使用PHP函数。 但请注意,无论如何使用PHP函数,在使用此类时,您只是看不到它。这样做可以帮助您深入理解PHP会话的工作方式。
如果您决定咬紧牙关并编写自己的会话机制,则很少有事情需要注意。您需要决定的第一件事是存储会话信息的位置? 您可以将它们保存在数据库,文件系统,cookie等中...... 默认情况下,PHP在文件系统上保存会话。编写自己的会话机制的最简单方法是将会话保存到cookie中。如果您使用Codeigniter会话,Codeigniter默认执行此操作。
您可以编写自己的对象,这将有您读取,编写,编辑,删除...会话数组的方法。在保存到cookie之前,必须序列化该数组。将会话保存在cookie中后,您可以使用您编写的方法将其删除,编辑或删除等。这样做时,请注意安全性,因为用户可以查看其cookie。你必须加密会话值。
然后,如果您决定将会话保存到数据库中,则可以使用相同的方法,但这次将会话保存到数据库中而不是cookie。
最好的方法是编写Session Interface,每个会话类都会实现。这样您就可以使用Session类,而不关心会话存储的位置。
如果您不明白我现在在说什么,那么只需构建自己的会话包装器,这可以帮助您了解有关会话的更多信息。并为您提供了使用OOP处理会话的好方法。完成后,您可以使用该API编写会话接口,并在每个Session类中实现该接口,并编写自己的逻辑,以便在何处以及在何处保存会话数据。
还有一件事,PHP Sessions机制没有任何问题。