Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:基于cookie的会话_Php_Session_Cookies_Memcached - Fatal编程技术网

php:基于cookie的会话

php:基于cookie的会话,php,session,cookies,memcached,Php,Session,Cookies,Memcached,关于如何集成基于cookie的会话系统,是否有任何机构有任何信息/链接?我使用过file/mysql,目前正在使用memcached。我想玩apc会话,但我想尝试一下Cookie,只是我不太了解它 我想我必须编写自己的会话处理程序类。在PHP中,会话数据通常存储在一个文件中。cookie中存储的唯一内容是会话标识符。当启用会话并找到有效的会话cookie时,PHP会将用户会话数据从文件加载到一个名为funnily Though session的超全局文件中 使用session_start()启动

关于如何集成基于cookie的会话系统,是否有任何机构有任何信息/链接?我使用过file/mysql,目前正在使用memcached。我想玩apc会话,但我想尝试一下Cookie,只是我不太了解它


我想我必须编写自己的会话处理程序类。

在PHP中,会话数据通常存储在一个文件中。cookie中存储的唯一内容是会话标识符。当启用会话并找到有效的会话cookie时,PHP会将用户会话数据从文件加载到一个名为funnily Though session的超全局文件中

使用
session_start()启动基本会话。然后使用简单的数组索引将项目添加到会话对象或从会话对象中删除,例如

$_SESSION['favcolour'] = 'blue'; 
后来

$favcolour = $_SESSION['favcolour'];
可以通过调用来创建基本的仅cookie会话(无本地存储)

 set_cookie('favcolour','blue'[,other params]);
在将任何文本发送到浏览器之前,然后从cookie超全局

$favcolour = $_COOKIE['favcolour'];
如果只执行cookie会话,则不需要调用
session\u start()

可选的[,其他参数]更高级,可以在此处阅读

课程可能会变成一个非常复杂的讨论,我建议你做一些轻松的工作,然后扩展你的知识

直流电

你想知道的关于PHP会话的一切

直流电

要重用PHP的会话处理代码,您需要使用
session\u set\u save\u handler
添加一个写处理程序,然后在该处理程序中什么也不做。这是因为关闭浏览器的输出后会调用它,因此无法向浏览器发送任何内容

在将非标题数据写入浏览器之前,请使用set_cookie函数并将$_会话数组的内容(序列化和加密后)存储到cookie中。当应用程序启动时,您可以读取cookie并将其取消序列化,然后将其放入$\u会话数组中

这是一个关于该做什么的快速提示,因为我从来没有这样做过,我更喜欢编写我自己的cookie代码。可能会有一些问题,但这并不难,一些测试应该可以找到任何问题


DC

我不确定我是否明白。你的意思是将会话数据存储在cookie中?这是个好主意吗?请注意,cookie最多只能存储
4KB
的数据。这就是您通常看不到基于cookie的会话存储的原因。还要考虑到许多用户的浏览器安全策略完全关闭了Cookie或将其设置为限制访问。@cballou:常规的旧会话通常也使用Cookie。不过,它们只存储sessiond,其余数据存储在服务器上。虽然我认为如果cookies被禁用,PHP会尝试将sessiond填充到
GET
参数中。@Pekka是的,如果你有一个非常大容量的站点@cballou ya,这是一个好主意,我知道这个限制。。请注意,关闭cookie的“许多用户”是相当无效的。只有不到1%的访问者这样做,而且大多数情况下,这些都是机器人,但我可能不会只使用cookie,特别是如果你不想让用户篡改(或读取)数据。如果你有一个非常繁忙的网站,基于文件的会话太占用资源。但如果我想安全性高于一切,我会使用数据库,因为文件可以读取。我不需要知道如何使用会话。我完全理解这一点。基于cookie的会话(不是cookie中的标识符存储)是一种有效的技术,它可以最大限度地减少服务器db/文件/缓存查找的数量,并将会话的所有数据存储在加密cookie中。我想这里没有人理解我的意思。以上答案的第二部分(“仅限基本cookie会话”)向您展示了如何在“浏览器会话”中使用cookie,即直到用户关闭浏览器为止。加密由你决定。此方法不使用db/file/cache lookupBTW。如果您的数据超过4k(随浏览器而异),则此方法将失败。