如何从不同的链接(本地和服务器)自定义cookie路径

问题描述 投票:-1回答:1

我在设置正确的Cookie路径时遇到了一些麻烦。我想要实现什么?

  1. 我有一个在我的localhost服务器上运行的项目,路径为http://localhost/project_folder/Controller/function
  2. 我可以使用提到的相对路径/project_folder/Controller/function设置Cookie路径,它可以工作
  3. 但是当项目在另一台服务器上运行时,结构有点不同,即:http://localhost/project部分被http://www.example.com/Controller取代,那么麻烦就开始了

我正在使用CodeIgniter框架。

为了达到目标,我尝试使用base_url()函数CodeIgniter提供,如果我更改配置中的站点路径,它在第二台服务器上工作,但不能在本地服务器上工作,反之亦然......

在这种情况下,我该如何正确处理Cookie路径?


编辑:

这是一个简单的Cookie集(我在JavaScript中使用自定义cookie功能,我通过JavaScript设置Cookie):

createCookie('filter_products', params, '1', '<?php echo base_url('Controller/function'); ?>');

问题是,base_url()函数返回如下所述的路径:

http://localhost/project_folder/Controller/function

但是在服务器上localhost/project_folder/部分被域名替换,那么如何动态创建Cookie路径呢?

php codeigniter url cookies
1个回答
0
投票

我想到的第一件事是,如果可能的话,你应该避免通过JavaScript设置Cookies并使用CodeIgniter built-in helpernative PHP functions

对于你的问题:

要动态决定您使用的服务器,可以使用PHP super-global $_SERVER值,该值可从代码中的任何位置访问。 SERVER_NAME字段包含主机的实际名称,因此您可以使用以下内容:

<?php

if (isset($_SERVER, $_SERVER['SERVER_NAME'])) {
    if ($_SERVER['SERVER_NAME'] === 'localhost') {
        // set base path to localhost/project_folder
    } else {
        // set base path to www.example.com <- MORE SECURE
        // or, set base path to $_SERVER['SERVER_NAME'] <- INSECURE (any server could be written to the config)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.