【问题标题】:Using PHP Sessions使用 PHP 会话
【发布时间】:2010-10-29 15:13:56
【问题描述】:

所以,我今天一直在玩 PHP 中的会话,自从我大约 6 个月前开始使用 PHP(看起来很可怕)以来,我一直在拖延是否应该使用会话(看起来很可怕),我发现它是非常简单。但是我使用 time() 作为会话 id,我会解释为什么...

我在 php.net 网站上找到了关于会话参考的页面,其中一个代码示例使用它来管理会话:

session_start();

if( !isset($_SESSION['last_access']) || (time() - $_SESSION['last_access']) > 60)
 $_SESSION['last_access'] = time();

但是,这很快就会过期。当然,我可以将 60 更改为一个非常高的数字,但这是针对客户平均花费 3 到 4 个小时的网站,只需将产品添加到购物车,所以我不能让会话过期,除非他们关闭页面。

如何将相同的会话 ID 传输到我们网站上的所有页面,而不考虑 time()。我真的不想用时间来管理会话 ID。

我确实在这样的网址中使用了常量SID

<?php echo '<a href="theotherpage.php?sessid='.SID.'">go to another page</a>'; ?> 但是,按照 PHP 网站的建议,使用该常量不起作用。

有人可以帮我在整个网站上保持相同的会话 ID,无论时间如何?

非常感谢您的帮助,谢谢! :)

【问题讨论】:

  • 您误解了这段代码的作用。我只是在会话中以 60 秒的间隔更新最后一次访问时间。它不会使会话过期,而且会话 id 也完全不同。
  • 那我如何获取会话 ID?对于网站的每个访问者来说,它都是独一无二的吗?
  • session_id() 会得到它
  • 如果您对它感兴趣,可以使用session_id 获取会话ID,但它会自动为您处理,您通常不需要处理。

标签: php html session


【解决方案1】:

我认为您可能对会话有误解。假设启用了他们的 cookie,您将永远不需要使用会话 ID。会话 ID 本身存储在 cookie 中。如果您想让会话保持更长时间,只需使用 ini_set('session.gc_maxlifetime', 20);并将 20 更改为您希望它存活的分钟数。

请记住,您必须使用 start_session();在每个文件的最顶部,以确保特定文件使用会话。 (这将是在 php 文件顶部包含 1 个主要包含配置文件的一个很好的理由,因此您可以轻松地将其添加到 1 个文件并添加到所有页面)

【讨论】:

  • 当用户将产品添加到购物车时,我使用会话 ID 作为数据库中特定访问者的 ID,这就是我这样做的原因。而且我对这件事也没有发言权,不幸的是我被命令这样做。
  • 糟糕。我正在使用 session_start(),我只是忘记将它粘贴到问题中。
  • 我从来没有真正使用过,但是你可以通过调用 session_id() 来获取他们当前会话的会话 ID。同样,假设他们启用了 cookie,只要您愿意,您就可以通过 ini_set 函数保持会话打开。这允许你告诉它保持会话打开直到你想要它关闭。
猜你喜欢
  • 2013-03-17
  • 2019-10-28
  • 1970-01-01
  • 2014-07-31
  • 2017-08-17
  • 2018-11-13
  • 2011-04-09
  • 1970-01-01
  • 2014-01-29
相关资源
最近更新 更多