setcookie() 函数不工作

setcookie() function not working

我目前正在开发一个小网站,我必须在该网站上创建一个帐户创建系统。为了知道用户是否已经连接,我想使用 cookie,因为这看起来是最简单的方法。但是,在查看 php.net 上的官方文档和其他一些论坛后,我仍然无法创建我的 cookie。这是我的代码:

function connexionOK() {
  $cookieName = "CookieCo";
  $cookieValue = "true";
  $isSent = setcookie($cookieName, $cookieValue, time() + 3600, "/");

  if($isSent) {
     echo '<script type="text/javascript">';
     echo "alert('Cookie envoyé');";
     echo "</script>";
  }
  else {
     echo '<script type="text/javascript">';
     echo "alert('Cookie failed');";
     echo "</script>";
  }}

所以页面确实在提醒我 'Cookie failed'。

感谢所有一直试图帮助我的人! :)

尝试

if(isset($_COOKIE['CookieCo'])){
     echo '<script type="text/javascript">';
     echo "alert('Cookie envoyé');";
     echo "</script>";
  }
  else {
     echo '<script type="text/javascript">';
     echo "alert('Cookie failed');";
     echo "</script>";
  }

您可能在 headers 已发送后调用此函数:

试试看是否出现异常:

function connexionOK() {
    $cookieName = "CookieCo";
    $cookieValue = "true";
    if(headers_sent()){
        throw new Exception('Cannot set cookie, headers already sent');
    }else{
        $isSent = setcookie($cookieName, $cookieValue, time() + 3600, "/");
        if($isSent){
            echo '<script type="text/javascript">';
            echo "alert('Cookie set');";
            echo "</script>";
        }else{
            echo '<script type="text/javascript">';
            echo "alert('Cookie not set');";
            echo "</script>";
        }
    }
}

connexionOK();

如果是这样,您将需要重构并确保在发送 headers 之前设置 cookie。

编辑:包含上面的代码是为了更清楚地说明问题 - 它写得不好并且包含很多冗余,因为在发送 headers 时调用 set setCookie 已经抛出异常并可能终止执行.如果不是这种情况,您将需要添加检查并相应地处理它们。