背景。
domain.com =即将进入测试版的网站 LAUNCH.domain.com =启动页面和有人可以将邀请代码输入
的文本字段auth_check.php - 其中launch.domain.com发布到提交
如果启动页面上的输入数据与auth_checkphp匹配,那么用户将被重定向到domain.com
如果用户从未访问过domain.com,则会将其发送至launch.domain.com
问题。
当我将代码输入launch.domain.com时,它会将我发送到domain.com,因此它可以正常工作。
但是没有存储cookie。关闭浏览器并重新打开以返回domain.com后,我将发送到launch.domain.com
这是我的代码。
auth_check.php
<?php
$invite_code = "getaccess"; ----that is the code that must be entered in to form
$site_url = "http://www.domain.com"; --- main domain....
$thank_you_url = "http://www.domain.com/register.php"; ---- page they get sent to after entering the correct code
if(isset($_POST['invite_code']) && $_POST['invite_code'] == $invite_code) {
setcookie("can_see","true"); ----- invite code is the name of the text field
header("Location: ".$thank_you_url);
exit;
}
header("Location: ".$site_url);
exit;
?>
的index.php
<?php
$register_url = "http://www.launch.domain.com";
if(!$_COOKIE['can_see']) {
header("Location: ".$register_url);
exit;
}
?>
表单工作正常。所以我会把它留下来
我刚刚测试了这一次,它在Internet Explorer中工作正常 - cookie在chrome和IE中设置但是没有存储
任何输入都会很棒!!
非常感谢
答案 0 :(得分:1)
Cookie可能正在存储,但由于地址不同 - “domain.com”与“launch.domain.com” - 它不会被发送回服务器。
您可以做的是向setcookie
添加一个参数,以便Cookie对整个域和任何子域都有效:
setcookie("can_see", "true", 0, "/", ".domain.com");
将cookie的名称设置为“can_see”,将值设置为“true”,将过期日期设置为“每当浏览器关闭”(也称为会话cookie),将cookie的路径设置为域的根,以及cookie的域名为“.domain.com”(带有领先期)。这将使所有子域名(www,launch,ftp,mail等等)都可以读取cookie。
答案 1 :(得分:0)
请参阅setcookie's docs,但基本上,如果您没有过期,那么它就是会话cookie,并会在浏览器关闭时被清除。
答案 2 :(得分:0)
在您的原始答案中,您说子域和域可能是一个问题,所以我只是将启动子域的内容移动到domain.com/launch添加了您的代码行,它可以工作。
我将0更改为时间()+(60 * 60 * 24 * 365)。
似乎工作正常。
谢谢老兄。