【问题标题】:php cookies only working on localhostphp cookie 仅适用于本地主机
【发布时间】: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 必须始终设置在文件的开头,所以现在它可以工作了。无论如何感谢您的回答:)

标签: php cookies localhost


【解决方案1】:

最可能的问题是 - 由于包含的文件或同一文件本身中的空格,已发送标头。要么修复它,要么在开始时设置 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-16
    • 2017-02-25
    • 2023-04-05
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    相关资源
    最近更新 更多