【发布时间】:2018-04-24 22:20:17
【问题描述】:
我最近开始做一些 php,并使用 cookie 制作了用于更改语言的代码。它在本地主机上工作得很好,但是当我上传它时,浏览器似乎没有保存任何 cookie。
所以我尝试为本地主机和服务器设置域,但它仍然不起作用。
$whitelist = array(
'127.0.0.1',
'::1'
);
if(in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
$domain = '.localhost';
} else {
$domain = '.bjarnesc.de';
}
if (isset($_GET['lang'])) {
$lang = $_GET['lang'];
setcookie('lang', $lang, (time()+(86400*30)), "/", $domain);
$_COOKIE['lang'] = $lang;
}
else if (!isset($_COOKIE['lang'])) {
setcookie('lang', 'de', (time()+(86400*30)), "/", $domain);
$_COOKIE['lang'] = 'de';
}
if ($_COOKIE['lang'] == 'en') {
include("../languages/en.php");
} else if ($_COOKIE['lang'] == 'de') {
include("../languages/de.php");
}
【问题讨论】:
-
为什么会有一个点 '.'域名前
.bjarnesc.de? -
@Karkouch 它是规范的要求,但主要被完成所有工作的浏览器忽略
-
只是在这里猜测,但也许您已将 PHP 配置为在本地自动启动会话,而您的 prod 环境并非如此?
-
尽管我浏览了很多很多帖子,但我现在才找到一个明确的解释,cookie 必须始终设置在文件的开头,所以现在它可以工作了。无论如何感谢您的回答:)