php重定向cookie以首次向访问者显示测试版页面

时间:2011-04-10 05:08:19

标签: php cookies redirect

背景。

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中设置但是没有存储

任何输入都会很棒!!

非常感谢

3 个答案:

答案 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)。

似乎工作正常。

谢谢老兄。