Php 从头开始的会话处理
我想从头创建一个会话处理程序。我不想使用Php 从头开始的会话处理,php,session,Php,Session,我想从头创建一个会话处理程序。我不想使用session\u set\u save\u处理程序。但是我在任何地方都找不到任何东西,我只是不知道从哪里开始。有人能给我指出正确的方向或解释一下最好的方法吗 谢谢!:) 调用会话时的操作 //启动会话并设置变量的 会话_start() $\会话['login']='yes' $\会话['someinfo']=$var //打电话的时候 会话_start() $var=$\会话['someinfo'] 我希望这有帮助 -kris在尝试构建自己的会话机制时,
session\u set\u save\u处理程序
。但是我在任何地方都找不到任何东西,我只是不知道从哪里开始。有人能给我指出正确的方向或解释一下最好的方法吗
谢谢!:) 调用会话时的操作 //启动会话并设置变量的 会话_start() $\会话['login']='yes' $\会话['someinfo']=$var //打电话的时候 会话_start() $var=$\会话['someinfo'] 我希望这有帮助
-kris在尝试构建自己的会话机制时,没有什么需要注意的 您可以做的第一件事是编写一个PHP会话包装器。类,该类将封装PHP会话功能。因此,当您想要使用会话时,您可以实例化会话类并使用会话执行您想要的操作。您可以这样做:
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);
然后您可以像这样使用此会话类:
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会话,而不必使用PHP函数。
但是请注意,您无论如何都在使用PHP函数,但在使用此类时却看不到它。这样做可以帮助您深入了解PHP会话的工作原理
如果您决定咬紧牙关,编写自己的会话机制,那么没有什么需要注意的。您需要决定的第一件事是将会话信息存储在哪里?
您可以将它们保存在数据库、文件系统、cookie等中。。。
默认情况下,PHP将会话保存在文件系统上。编写自己的会话机制的最简单方法是将会话保存到cookie中。默认情况下,如果您使用Codeigniter会话,Codeigniter会这样做
您可以编写自己的对象,该对象具有读取、写入、编辑和删除的方法。。。会话数组。在保存到cookie之前,必须序列化该数组。会话保存在cookie中后,您可以使用编写的方法将其取出、编辑或删除等。这样做时,请注意安全性,因为用户可以查看其cookie。您必须加密会话值
然后,若您决定将会话保存到数据库中,那个么您可以使用相同的方法,但这次将会话保存到数据库中,而不是保存到cookie中
最好的方法是编写每个会话类都将实现的会话接口。这样,您就可以使用会话类,而不必关心会话存储在哪里
如果你不明白我现在说的是什么,那么就构建你自己的会话包装器,这可以帮助你了解更多关于会话的信息。并为您提供了使用OOP处理会话的好方法。一旦有了它,您就可以使用该API编写会话接口,并在每个会话类中实现该接口,并编写您自己的逻辑—如何以及在何处保存会话数据
还有一件事,PHP会话机制没有任何问题。如果使用PHP会话,则不需要使用PHP的会话处理。基本上,标准会话将数据存储在服务器(memcache、文件或数据库)上,数据的ID/密钥放在给用户代理的cookie中 加密cookie只是将数据存储在用户代理上的cookie中,完全放弃ID/密钥。当存储卸载给用户时,这会减少服务器负载 如果数据不够重要,无法进行加密,也可以只加密内容,以防止人们更改数据,即使他们可以看到原始内容 你可能想试试我的简单库,它使用加密的cookies
$_SESSION = \Kit\Cookie::get('session');
...do stuff...
\Kit\Cookie::set('session', $_SESSION);
只需确保在向用户发送任何输出之前保存cookie,因为需要首先发送所有头。取决于您想要的会话为什么不使用会话设置保存处理程序?@Bondye这是什么意思?用户,我可以使用它,但我想进入更高级的编程。这只是练习,你的问题我不清楚。您需要来自scracth的会话处理程序。为什么?什么课程?我不知道你说的“什么课程”是什么意思,但这是为了练习。我读了一些东西,很明显,饼干是有可能的。我就是不知道怎么做这是基本的PHP。我不想使用过程会话,我想创建一个自定义处理程序。抱歉搞混了。正是我要找的!非常感谢!