PHP setcookie() 奇怪的行为

标签 php mysql cookies

quys,我的 PHP 应用程序有问题。

我有 2 个页面用于登录和注册。两个页面都使用通用的 cookies 类。一切正常,除了一件事:setcookie() 仅适用于 /signin 页面(cookie 值进入数据库,并且出现 cookie 'rwt')。

在注册页面上,cookie 值进入数据库,但 setcookie() 不起作用。

请帮忙。

附言这是唯一的问题,一切都适用于本地主机,但不适用于生产域

P.P.S $DBH 是PDO变量,包含正确的数据库信息。

登录页面

$cookie = new Cookies($DBH);
 ........

if ($signin->remember=="yes") {
    $cookie->account_set($signin->user);
}

注册页面

  $cookie = new Cookies($DBH);
   .........
   ........

if ($signup->check_availability()) {

    $signup->save();

    $cookie->account_set($signup->user);

    header("Location:/");

} else {
    $msgText = "This username already exists";
    echo "<div class=\"orangeMsg\">$msgText</div>";
}

cookies

 class Cookies
        {
            private $_DBH, $cookie_domain;  
            function __construct(PDO $DBH)
            {
                $this->_DBH=$DBH;
                $this->cookie_domain=$_SERVER['HTTP_HOST'];

            }
            public function account_set($value)
            {
                $cookie_value=uniquestr();
                // function from common.func.php
                $this->_DBH->query("UPDATE accounts SET cookie='$cookie_value' WHERE user='$value'");
                setcookie('rwt', $cookie_value, time()+60*60*24*7 , '/', $this->cookie_domain);
            }
            public function account_unset($value)
            {
                if (isset($_COOKIE['rwt'])) {
                    $cookie_value=$_COOKIE['rwt'];
                    setcookie("rwt", $cookie_value, time()-2592000, '/', $this->cookie_domain);
                    $this->_DBH->query("UPDATE accounts SET cookie=DEFAULT WHERE user='$value'");
                }
            }
        }

最佳答案

您应该始终header('Location: ...') 调用之后直接调用exit。否则您的脚本将继续运行直到结束,结果可能会出现一些意外行为。

我的猜测是您稍后会在注册脚本中以某种方式取消设置 cookie。

关于PHP setcookie() 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555452/

相关文章:

mysql - 如何使用 int (+1) 更新字符串并将其转换回字符串

php - 单击链接在另一个网站上使用相同的 PHP session

php - Magento:在特殊 View 上进行分层导航

mysql - JOOQ动态表名

javascript - 如何在页面加载时打开外部存储模式

javascript - javascript客户端照片调整大小和上传后如何写入数据库

javascript - 2 个问题/1。全屏(jQuery)/2。更改背景并保存为 Cookie

ios - UIWebView 清除所有 Cookie

PHP和mysql如何使用join得到想要的结果

javascript - Google Drive(或其他服务)如何捕获自定义搜索框的 Ctrl+F 或 Command+F 输入?