我在设置正确的Cookie路径时遇到了一些麻烦。我想要实现什么?
http://localhost/project_folder/Controller/function
/project_folder/Controller/function
设置Cookie路径,它可以工作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路径呢?
我想到的第一件事是,如果可能的话,你应该避免通过JavaScript设置Cookies并使用CodeIgniter built-in helper或native 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)
}
}