【问题标题】:Saving 2 PHPSESSID accessing computer using same IP address保存2个使用相同IP地址访问计算机的PHPSESSID
【发布时间】:2013-11-23 14:52:52
【问题描述】:

服务器是 WAMP。我有 2 个 Sugarcrm 站点,一个用于生产,保存在 www/folder1 ,另一个用于开发,保存在 www/folder2 。我正在使用 IP 地址(比如 66.102.0.0/folder166.102.0.0/folder2 )访问它们。浏览器为它们都保存了 1 个 cookie (PHPSESSID)。如果我登录/注销到第一个站点,它也会影响其他站点。我可以像 folder1.localhostfolder2.localhost 这样在本地主机上创建子域,但是基于 IP 的子域是如何可能的,例如 folder1.66.102.0.0folder2.66.102.0.0 (看起来很有趣 :) )或者我可以为不同的文件夹使用不同的端口,例如 66.102.0.0:8066.102。 0.0:8080 ?那么浏览器是否会保存 2 个 cookie,如果同一 IP 地址上的端口不同?我无法更改登录/注销,这是 Sugarcrm 不是核心 php。 我可以使用不同的浏览器,但我的老板说要单独制作 cookie。或者是否有任何浏览器插件可以根据文件夹分隔 cookie?

【问题讨论】:

    标签: php apache cookies subdomain wamp


    【解决方案1】:

    调用 session_set_cookie_params() 将 cookie 限制到特定文件夹:

    $params = session_get_cookie_params();
    session_set_cookie_params($params['lifetime'], '/folder1');
    session_start();
    

    【讨论】:

    • 谢谢,好的,我正在尝试,但我希望我不要触摸/更改 SUGARCRM 核心。
    • 无论如何,这只会改变 php 会话路径而不是浏览器 phpsessionid。这件事已经做好了。现在我想要浏览器端不同的cookie。
    • 这不正确。 Cookie 与路径相关联。所以如果 PHPSESSID cookie 分配给 /folder1,它不会被 /folder2 看到,所以它会开始一个新的会话。
    【解决方案2】:

    是的。创建子域应该可以解决您的问题。我一直这样做。

    如果您以 66.102.0.0 的身份打开您的网站,那么您的会话是基于导致所有问题的那个 url。

    注意:此处提到的目录是特定于 windows wamp 的,但只要您找到合适的文件,这适用于所有操作系统中的 Apache。

    第 1 步。在您的 bin/apache/Apache*.*.*/conf/httpd.conf 中取消注释此行

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    

    第 2 步。 在您的 bin/apache/Apache*.*.*/conf/extra/httpd-vhosts.conf 文件中创建一个虚拟主机条目。

    NameVirtualHost *:80
    
    <VirtualHost *:80>
        DocumentRoot "D:/wamp/www"
        ServerName localhost
        ErrorLog "logs/localhost-error.log"
        CustomLog "logs/localhost-access.log" common
    </VirtualHost>
    
    <VirtualHost *:80>
        DocumentRoot "D:/wamp/www/folder1"
        ServerName folder1.localhost
        ErrorLog "logs/folder1.localhost-error.log"
        CustomLog "logs/folder1.localhost-access.log" common
    </VirtualHost>
    
    <VirtualHost *:80>
        DocumentRoot "D:/wamp/www/folder2"
        ServerName folder2.localhost
        ErrorLog "logs/folder2.localhost-error.log"
        CustomLog "logs/folder2.localhost-access.log" common
    </VirtualHost>
    

    第 3 步。 重新启动 wampserver / apache。

    第 4 步。 编辑您的主机文件。 C:\Windows\System32\drivers\etc\hosts

    添加条目。

    127.0.0.1 folder1.localhost # You probably want 66.102.0.0 over here instead of 127.0.0.1
    127.0.0.1 folder2.localhost
    

    【讨论】:

    • 您的 hosts 文件有误,您不能有多行具有相同的 IP。将所有别名放在同一行。
    • 嗯,它似乎工作。我已经做了很多年了。不过,从来没有真正阅读过官方格式。你也可以按照巴尔玛所说的去做。 127.0.0.1 name1 name2
    • 如何使用ip地址访问它们?
    • 您无法使用 IP 地址访问虚拟主机。虚拟主机需要不同的名称。
    • 如果您在浏览器栏中输入 IP 地址,那么您只能访问一个网站。您不能使用一个 IP 地址访问 2 个网站。但是两个不同的 url 会导致两个不同的网站(即使它们可能在同一个 IP 地址上)。如果您希望两个网站在同一个 IP 上,则需要不同的端口;但是由于您需要提及端口,因此它实际上有两个不同的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 2022-07-14
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多