PHP setcookie()奇怪的行为
奎斯,我的PHP应用程序有问题 我有2页用于登录和注册。两个页面都使用公共PHP setcookie()奇怪的行为,php,mysql,cookies,Php,Mysql,Cookies,奎斯,我的PHP应用程序有问题 我有2页用于登录和注册。两个页面都使用公共cookiesclass。一切正常,除了一件事:setcookie()只在/sign页面上工作(cookie值进入数据库,cookie“rwt”出现) 在注册页面上,cookie值进入数据库,但setcookie()不起作用 请帮忙 另外,这是唯一的问题,一切都可以在本地主机上运行,但不能在生产域上运行 p.p.S$DBH是PDO变量,它包含正确的数据库信息 登录页面 $cookie = new Cookies($DBH)
cookies
class。一切正常,除了一件事:setcookie()
只在/sign
页面上工作(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>";
}
注册页面
$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>";
}
您应该始终在标题('Location:…')
调用之后直接调用exit
。否则,脚本将继续运行到最后,可能会导致一些意外的行为
我的猜测是,您稍后在注册脚本中以某种方式取消了cookie。我的经验是,设置cookie和发送HTTP回复(而不是
200 OK
的组合很容易造成麻烦。您的方法可能很容易适用于某些浏览器,但不适用于其他浏览器。您可以通过在标题('Location…')
之前使用setcookie()
来提高这一工作的可能性(因为一些浏览器在遇到位置
标题时似乎会停止解释标题),但这仍然不能保证
解决方法是使用一次性GET参数重定向到目标位置,并在那里设置cookie。解决方案
这是我代码中的一个错误,它在本地服务器上工作真的很奇怪
错误解释
我有与注册过程相关的if(){..}
和if(){..}else{..}
逻辑块。那很愚蠢,但我以为他们是亲戚
将逻辑更改为if(){..}elseif(){..}else{..}
解决了问题
问题
我为这样一个蹩脚的错误道歉。它在本地虚拟域上工作得非常好,这就是为什么需要帮助的原因