【问题标题】:Cookies are not setting with setcookie();cookie 不是用 setcookie() 设置的;
【发布时间】:2018-06-05 02:38:18
【问题描述】:

我有一台服务器,在将所有内容设置到我的主服务器之前,我会在其中测试所有内容。当我使用 setcookie(); 设置 cookie 时出现问题;

我正在使用一个cookie来设置一个ajax会话,代码是这样的:

require '../init.php';
$user = $_POST['user'];
$pass = $_POST['pass'];
$newhash = createHash();

//LOGIN STUFF
if(strtolower($user) == strtolower($userA['user']))
{
    if($pass == $userA['pass'])
    {
        $expiration = ( time() + ( 24 * 60 * 60 * 365) );
        setcookie('session', $newhash, $expiration, '/');
        $userAdd = MYSQL_::Bits("INSERT INTO users_sessions (hash,userid) VALUES ('$newhash','$userAID')");
        //LOGIN STUFF
    }
    else
    {
        $datos = array('response' => 'fail','reason' => 'pass');
    }
}
else
{
    $datos = array('response' => 'fail','reason' => 'user');
}
header('Content-Type: application/json');
echo json_encode($datos, JSON_FORCE_OBJECT);  

这段代码在 localhost 上运行良好,但是当我把它放在我的主主机上时,它就不行了。我一直在阅读有关 stackoverflow 的所有这些相关帖子,但没有人有解决方案,它说在 cookie 之前不能没有任何东西,但不可能在它之前设置没有任何东西的 cookie。我希望有人有答案:-(

【问题讨论】:

  • 我不完全确定这是否会导致问题,但您是否尝试过除 session 之外的任何其他名称?我感觉这会导致与会话 cookie 发生冲突。
  • setCookie()之前不能有html输出,因为cookie是header的一部分,header必须在html输出之前发送。
  • @KIKOSoftware - 但是它如何在本地主机上为他工作?
  • @Darius.V:我正在回应他的评论:“......它说在 cookie 之前不能有任何东西,但不可能在没有任何东西之前设置 cookie它。”。澄清一下,不能有html输出,甚至不能有一个空格,但是可以有php代码。
  • 什么是createHash();?据我所知,它是未定义的。你有错误吗?

标签: php json ajax cookies


【解决方案1】:

您在 init.php 或 init 包含的任何文件中的某处有输出。
输出可以是直接的,就像在回声中一样。
或者 PHP 标记之前的空格,或者我认为甚至是 PHP 创建的错误/通知。
正如我在 cmets 中所写,找出您的输出在哪里,我们无法帮助您。

您可以如前所述在您的代码中移动然后设置cookie,看看它在哪里起作用,哪里不起作用。
当它停止工作时,您已经找到了创建输出的行。

【讨论】:

  • 非常感谢,出现问题是因为<?php之前的文档开头有一个空格@y真的觉得好笨哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 2011-08-16
  • 2017-05-18
  • 1970-01-01
  • 2012-04-29
相关资源
最近更新 更多