【问题标题】:CodeIgniter Cookie won't set but Session is working?CodeIgniter Cookie 不会设置但 Session 正在工作?
【发布时间】:2013-12-14 13:03:51
【问题描述】:

我正在与 CodeIgniter 合作,使用 Twitter 和 Facebook 为我的网站设置一些用户登录功能,这部分工作正常,会话工作正常。

当我尝试设置 cookie 时它不起作用

//Setup a guid
$guid = uniqid();

//Setup a random cookie and point it to db user
$cookie = array(
  'name'   => 'TheCookieName',
  'value'  => $guid,
  'expire' => 100,
  'domain' => BASE_URL,
  'secure' => TRUE
);

    set_cookie($cookie);

  var_dump(get_cookie('TheCookieName')); // bool(false)

我的自动加载文件很简单

$autoload['helper'] = array('paging_helper','url','cookie');

我显然错过了一些琐碎的事情?有什么线索吗?

谢谢

【问题讨论】:

    标签: php codeigniter cookies


    【解决方案1】:

    问题可能出在您的域变量中 BASE_URL 不是 CI 常量的一部分,它可能不包含您所期望的或 cookie 初始化所需的内容。

    尝试这样做:

    //Setup a guid
    $guid = uniqid();
    
    //Setup a random cookie and point it to db user
    $cookie = array(
      'name'   => 'TheCookieName',
      'value'  => $guid,
      'expire' => 86500, // have a high cookie time till you make sure you actually set the cookie
      'domain' => '.example.org', // the first . to make sure subdomains isn't a problem
      'path' => '/',
      'secure' => TRUE
    );
    
        set_cookie($cookie);
    

    请记住,在发出新请求之前,cookie 永远不可用。
    重定向到 cookie 设置中指定的域上的另一个页面,然后再次检查 cookie。

    【讨论】:

    • 在将 BASE_URL 设置为空并让 CI 解决之后,它起作用了,但由于某种原因,我不得不调用该函数,例如 -- set_cookie($param, $param, $param, $etc)而不是作为数组传递。不知道为什么,但它有效。
    • 听起来很奇怪...你确定你没有使用 setcookie() 而不是 set_cookie()?
    • @Repox 如果我们在 localhost/folder_name/ 测试我们的代码,域中应该有什么?
    • @Aryans 您应该是安全的,无需提供任何东西 - 关于您更改该设置的任何特定原因?
    • @Repox 当我设置我的 cookie 时它已设置并且工作正常,但是当我关闭浏览器时它也丢失了,不知道为什么?
    【解决方案2】:

    确保为 https 设置 secure => TRUE

    【讨论】:

      【解决方案3】:

      您不能在同一个实例中设置和访问 cookie。您应该在设置 cookie 后重定向或刷新。这就是为什么 var_dumping get_cookie 总是返回 false 的原因。您还应该设置其余的参数。 见setcookie

      【讨论】:

      • 即使我重定向 cookie 仍然是错误的。另请注意 set_cookie() 是 CodeIgniter 函数,而不是原生 PHP setcookie()
      • @SeanHJenkins 你能试试 var_dumping $_COOKIE["TheCookieName"]
      猜你喜欢
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2020-08-13
      • 2017-09-28
      相关资源
      最近更新 更多