Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Http 我什么时候应该使用会话变量而不是cookie?_Http_Cookies_Session Variables - Fatal编程技术网

Http 我什么时候应该使用会话变量而不是cookie?

Http 我什么时候应该使用会话变量而不是cookie?,http,cookies,session-variables,Http,Cookies,Session Variables,会话变量和cookie似乎与我非常相似。我理解技术上的差异,但您如何决定何时使用其中一个与另一个?Cookies可以比单个会话持续更长时间。但是,用户也可能会删除Cookie,或者您的用户的浏览器不接受Cookie(在这种情况下,只有服务器端会话可以工作)。大多数情况下,会话状态是使用Cookie持久化的。所以这并不是一个或另一个的问题,而是如何将它们结合起来 使用框架的会话基础设施可能会使事情变得更容易,但使用cookie手动跟踪状态通常会提供更细粒度的控制。正确的解决方案取决于您试图完成的任

会话变量和cookie似乎与我非常相似。我理解技术上的差异,但您如何决定何时使用其中一个与另一个?

Cookies可以比单个会话持续更长时间。但是,用户也可能会删除Cookie,或者您的用户的浏览器不接受Cookie(在这种情况下,只有服务器端会话可以工作)。

大多数情况下,会话状态是使用Cookie持久化的。所以这并不是一个或另一个的问题,而是如何将它们结合起来


使用框架的会话基础设施可能会使事情变得更容易,但使用cookie手动跟踪状态通常会提供更细粒度的控制。正确的解决方案取决于您试图完成的任务。

会话存储在服务器上。如果您在cookie中存储了某些内容,那么用户的浏览器会在每个请求中发送该信息,从用户的角度来看,这可能会降低您的站点速度。我尽量避免在可能的情况下使用cookies。

cookies会在每次请求时发送到服务器,因此如果您计划存储相当数量的数据,请将其存储在会话中

否则,如果您正在存储少量数据,cookie就可以了

任何敏感数据都应该存储在会话中,因为cookie不是100%安全的。Cookie的一个优点是,您可以在通常存储会话数据的服务器上节省内存。


  • 会话存储在服务器上,这意味着客户端无法访问您存储的有关会话的信息。存储在服务器上的会话数据不需要随每页一起完整传输;客户端只需要发送一个ID,然后从服务器加载数据

  • 另一方面,cookies存储在客户机上。它们可以经久耐用,并且当您拥有一个web服务器集群时,可以让您更顺利地工作。但是,与会话不同,存储在cookie中的数据在每次页面请求时都会被完整传输

  • 避免将数据存储在cookie中

    • 它可以被最终用户看到、阅读和操纵,或者被那些有恶意意图的人截获。除了“会话id”,您不能信任Cookie中的任何数据
    • 它会增加您的带宽,如果您为每个用户的每页请求添加1k的数据,那么您的带宽可能会增加10-15%。从$$的角度来看,这可能并不昂贵,但从性能的角度来看,这是可能的。它会有效地将每台服务器上的带宽减少10-15%,也就是说,它可能会导致您需要更多的服务器
  • 会话数据中可以存储的内容取决于数据量和用户数
    无用户数
    *
    会话数据的大小
    必须小于服务器上可用的可用内存


Cookie是客户端的,会话是服务器端的

对用户可以信任的小块数据(如字体设置、站点主题等)和服务器端数据的不透明ID(如会话ID)使用cookie。预计这些数据可能随时丢失,并且不可信(即需要进行清理)

将会话数据用于较大的数据块(因为许多系统可以存储对象、数据结构等)和您必须信任的数据块,如授权状态等。通常,使用会话数据存储较大的状态数据

如果GUI、缓存等需要,您也可以在cookie中存储授权状态之类的内容,但千万不要信任它,也不要依赖它的存在。Cookie很容易删除,也很容易伪造。会话数据更难伪造,因为您的应用程序控制它。

  • 始终使用会话
  • 仅当您需要更长的登录会话时才使用cookie-然后添加具有加密用户ID的cookie

仅当数据对于cookie来说太大,或者如果数据太大以至于使用cookie会降低性能时,才使用会话

例如,如果您正在保存较小的数据,那么cookie中会话ID的大小,如两个登录令牌或类似的东西。。。那么我不明白你为什么会在cookies上使用会话


另外请注意,PHP会话文件默认保存到磁盘,而Cookie仅保存在客户端。

会话存储在服务器端。如果访问者在cookie中存储了某些内容,浏览器将发送每个请求的用户信息

这往往会消耗大量服务器的计算机时间,降低用户体验。一些浏览器也不支持Cookie,使会话比Cookie更具优势。。。我强烈建议参加会议


这可能有助于:(php.net)

您的明确指南

注意- cookie存储在用户的浏览器上,而会话存储在主机服务器上

何时使用

  • 如果希望应用程序始终记住用户的数据,即使用户关闭了浏览器,也要使用cookie。例如,无论何时键入www.facebook.com,它都会将您带到您的帐户,即使您的浏览器已关闭并重新打开

    因为一旦关闭浏览器,会话中保存的任何数据都会被清除

  • 当要存储的用户信息比正常情况大得多时,使用cookie。 ... 对于会话,如果你有一个更大的用户群,比如Facebook,想想在主机上存储所有用户会话会是什么样子

  • 当要存储的用户信息不大于正常值,并且您不希望公众能够访问您的用户变量时,请使用会话


  • PHP会话的缺点之一是会话处理的工作方式。具体来说,一次只能有一个进程/请求打开一个会话进行写入。在

    session_start() 
    
    会话文件已锁定。如果更多的过程
    session_write_close()