为所有用户或只想登录的用户创建PHP会话?
目前,我的CMS为每个访问该网站的用户创建一个PHP会话。我正在考虑只为想要登录的用户创建一个会话。我在这里遇到的问题是,登录用户的一些UI元素在所有页面上,因此在每个页面请求中,系统必须检查用户是否登录,这意味着我没有其他选项可以在每个页面请求上启动会话?或者我错了?为每个用户创建会话是否正常,即使剂量不想登录?为所有用户或只想登录的用户创建PHP会话?
简而言之,我想知道是否A.在我的用例中有一个选项只为想要登录的用户创建一个PHP会话B.如果它认为不好的做法为每个用户创建一个会话,无论他是否想登录。如果情况并非如此,我可以留下他们真的...
你没有(真实的)选择。你无法知道,用户是否登录(或没有)会话。
所以我是对的摆在首位,如你所说,在我使用情况下,我没有其他的选择呢?不过,我想知道是什么,如果这是在一般认为“不好的做法”与否。 – wowpatrick 2011-01-13 22:30:46
我想这是所有我想知道,谢谢! – wowpatrick 2011-01-13 22:43:00
难道你不能只是找一个空的$ _SESSION值来看看他们是否登录?
纠正我,如果我错了,但如果我不启动会话(我想,以避免不希望登录,谁所有用户的事,如常客)在$ _SESSION永远是不存在的,所以这不是一个真正的选择。 – wowpatrick 2011-01-13 22:37:45
在大多数情况下,登录是通过会话进行管理的,因此您必须在页面开始处创建会话以确定它们是否已登录。你真的没有选择......这是不错的做法,这是常见的做法。
快速回答:
在您的用例中,为每个用户创建一个会话是完全正确的。会议是微不足道的,没有什么可担心的表现(就你的情况而言)。
你正在使用的方法并不差。事实上,我会说这是非常接近最佳做法。
长答案: 作为企业界的PHP程序员,我有6年以上的经验,无论他们是否登录,为每个用户创建一个会话是非常正常的事实。会话可以用于为用户提供许多方便的功能,即使他们没有登录 - 例如购物车等。您正在做的事情正确。如果你想提高性能,可以使用谷歌的Pagespeed和雅虎的YSlow等工具 - 他们会给你关于网站最佳实践的提示。
它是可能避免每次创建一个会话。那么如果会话文件很小?为什么在不必要时扩散它们?
这是我做的,本质:
检查传入请求会话cookie的存在,只有做session_start()
如果你收到一个。
浏览网站(通常情况下)的退出用户不会发送会话cookie,因此他们不会触发session_start()
。简单。
一旦有人登录到您的网站,并且您确实想开始一个会话(会话在您的应用程序和PHP意义上都是逻辑上的),然后使用session_start()
等来处理设置cookie。
一旦有人注销,请确保您销毁会话Cookie,而不仅仅是PHP会话本身。
很明显,用户可能会阻止你的cookie操作并破坏他们,但他们可以这样做。
会话是不是一件坏事,除非你想存储在您的会话变量千兆字节的数据(和我所看到的网站在那里数据的岗位兆回来,在会话参数第四) – 2011-01-13 22:26:20
谢谢!很高兴知道! – wowpatrick 2011-01-13 22:45:08