【问题标题】:Php session variablephp会话变量
【发布时间】:2011-06-09 15:35:30
【问题描述】:

我在本地服务器 (WAMPSERVER) 中使用会话变量编写了一个购物车。另一个站点等于我的会话变量 $_SESSION['cart']。因此,我将产品添加到我的购物车中,另一个站点也会更新,如果我在另一个站点中添加产品,我的购物车也会更新。我怎么解决这个问题。

[编辑] 我的意思是我的两个站点的会话变量名称相同。所以他们发生了冲突。

【问题讨论】:

  • 我不明白你的问题。你能澄清一下吗?
  • 您是否正在尝试制作跨域工作的基于会话的购物车?如果是这样,这些域只是不同的主机名(a.abc.com、b.abc.com)还是完全不同?
  • 很难说这里要问什么...
  • 我在本地服务器(WAMPSERVER)中创建了我的购物车。我的两个站点的会话名称在会话名称 $_SESSION['cart'] 中是相同的。

标签: php


【解决方案1】:

如果您想共享会话数据(这听起来有点像您的问题),那么您可以:

  • 将会话数据存储在可从两台服务器访问的数据库中。根据手动管理的 cookie id 手动加载 $_SESSION。
  • 设置两个服务器共享的网络文件系统。使用http://www.php.net/manual/en/function.session-save-path.php 查找 PHP 存储会话文件的位置,并使其在两台服务器上都可用。这取决于使用的网络文件系统,但可能不可靠。 (但无论如何你都在使用 WAMP..)

这里列出了一些其他(可能更好的)解决方案:Cross domains sessions - shared shopping cart cross domains

【讨论】:

    【解决方案2】:

    function: session_save_path ([ string $path ] ) 可能有帮助。为每个站点使用不同的路径。

    或
    这个问题就像在一个数据库中安装多个站点的问题一样,在这种情况下,您应该为您的表使用 prefix_。
    像这样,您应该在使用会话的任何地方使用 PREFIX_。
    例如在数据库中我们有这样的东西:
    $sql = "SELECT * FROM ".Config::getInstance()->dbprefix."users WHERE ...;"; 在这种情况下,我们需要这样的东西: $_SESSION[Config::getInstance()->domainname."card"];

    【讨论】:

      【解决方案3】:

      很难理解你在说什么。所以,如果我有点不对劲,请原谅我。

      据我了解,您目前有一个网站(example.com)和一个通过 WAMP(大概是 localhost)的本地网站,并且您希望这两个 $_SESSION['cart'] 变量充当一个?

      或者更简单地说,您希望您的本地购物车与您的在线购物车同步,反之亦然。对吧?

      如果您可以完全控制这两个站点,我建议您通过 url 传递一个加密的会话 ID。如:

      pseudo code
       temp_var = localhost_cookie
       mydomain.com/page.php?a=temp_var
       mydomain_cookie = gets a
       destroy temp_var
      

      未经测试,这就是我现在能想到的全部。

      【讨论】:

        猜你喜欢
        • 2012-08-03
        • 2013-05-01
        • 1970-01-01
        • 2012-07-06
        • 2013-04-13
        • 2015-07-02
        • 2014-08-02
        • 2011-07-19
        相关资源
        最近更新 更多