我应该使用Session变量还是全局超变量

时间:2016-06-08 20:06:11

标签: php html

我在这里遇到一些小情况,但我想尝试并确保以正确的方式接近这一点。

我有一个由多家商店使用的网络应用程序。 每个商店都通过htaccess和htpasswd进行身份验证,以便连接到正确的数据库。 这部分效果很好!

每家商店都有多名员工,但每位员工都使用一台独立的计算机/工作站。

因此,Shop登录,获得身份验证,连接到正确的数据库,然后加载登录页面。

在登录页面,用户使用名称和密码登录应用程序,他们很高兴。 此时,我正在将用户信息(UserID,安全级别等)加载到会话中。 我的问题的一部分是垃圾收集,因为每隔一段时间会话变量就会丢失。 每个页面都有会话开始作为第一件事,所以我想在一小时左右不活动会话被垃圾收集器和poof收集,它就消失了。

我正在考虑将用户信息加载到$GLOBALS超变量中,以避免由于不活动而丢失会话。 现在,我意识到有一些方法可以在PHP中延迟/停止垃圾收集器,但在我看来,如果我使用全局范围,它就不需要额外编码或配置PHP。 我是否正确假设只要每个用户在自己的机器上访问该网站,使用$GLOBALS只会适用于每个用户?

2 个答案:

答案 0 :(得分:2)

认为你对会话和全局变量有一般误解。

  

全局变量是整体上常见的变量   application ...它们的值可以在整个应用程序中使用   会话变量是常见的变量   整个应用,但对于一个特定的用户。它们也可以使用   整个应用程序...但他们在特定用户时死亡   会议结束。

https://stackoverflow.com/a/14848246/1022914

我建议使用会话。根据存储在数据库中的用户数据检查用户详细信息。如果它通过了身份验证,请创建包含要在您的页面中使用的用户数据的会话变量。这使得事情变得更容易

答案 1 :(得分:-2)

您可以使用缓存。它可以帮助您保持用户始终登录,如Facebook。