-2

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

  1. 我有一个在我的本地主机服务器上运行的项目,带有路径http://localhost/project_folder/Controller/function

  2. 我可以使用提到的相对路径设置 Cookie 路径/project_folder/Controller/function,它可以工作

  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 路径?

4

1 回答 1

0

我首先想到的是,如果可能的话,您应该避免通过 JavaScript 设置 Cookie,并使用 CodeIgniter内置帮助程序原生 PHP 函数

对于你的问题:

要动态决定您是哪台服务器,您可以使用 PHP超级全局 $_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)
    }
}
于 2019-03-26T05:37:17.743 回答