子域中的Cookie不起作用

时间:2010-11-24 15:21:05

标签: php

我收到了以下代码:

<?php
$id = $_GET['id'];
$vote = $_GET['vote'];
$month = 2592000 + time();
$cookie = "votez" . $id;
$cookiez = "viewz" . $id;

if(isset($_COOKIE[$cookiez]))        
{
    if(!isset($_COOKIE[$cookie]))        
    {
        setcookie($cookie, "voted", $month, '/', ".mywebsite.co.il");
    }
}
else
{
        setcookie($cookiez, "viewed", $month, '/', ".mywebsite.co.il");
}

&GT;

让我们假设我去了&gt; www.mywebsite.co.il/example.php?id=1&vote=1 在第一次&gt;它将设置第一个cookie。 在第二次&gt;它将设置第二个cookie。 在第三次&gt;什么都不会发生

这是应该如何运作的。

但如果我去&gt; www.mywebsite.co.il?/example.php?id=1&vote=2(在我访问www.mywebsite.co.il/example.php?id=1&vote=1之后) 它会再次设置第一个cookie。

如果我要去&gt; www.mywebsite.co.il?/example.php?id=1&vote=3(在我访问www.mywebsite.co.il/example.php?id=1&vote=1之后) 它会再次设置第一个cookie。

依旧......

无论投票结果如何,我还需要做什么,只要它的ID相同,cookie就会一样?

(这不是完整的代码,你不需要完整的代码来理解问题或解决它。)

谢谢!

1 个答案:

答案 0 :(得分:1)

无论如何,请检查http://labs.shikiryu.com/test-cookie.php

<?
$id = "1";
$vote = "2";
$month = 2592000 + time();
$cookie = "votez" . $id;
$cookiez = "viewz" . $id;

if(isset($_COOKIE["$cookiez"]))        
{
    if(!isset($_COOKIE["$cookie"]))        
    {
        var_dump(setcookie("$cookie", "voted", $month, '/', ".shikiryu.com"));
        echo "2nd cookie set :".$month;
    }
}
else
{
        var_dump(setcookie("$cookiez", "viewed", $month, "/", ".shikiryu.com"));
        echo "1st cookie set :".$month;
}

你如何检查你的cookie?因为,例如,在firefox中,你必须寻找你的域名(而不是你的子域名)。在chrome,ctrl + I,存储选项卡。

您可以在服务器上试用此代码并回来告诉我们它是否有效,它可能来自您的unicode域名。


我已将代码更改为(相同的网址):

<?
$id = $_GET['id'];
$vote = $_GET['vote'];
$month = 2592000 + time();
$cookie = "votez" . $id;
$cookiez = "viewz" . $id;

if(isset($_COOKIE["$cookiez"]))        
{
    if(!isset($_COOKIE["$cookie"]))        
    {
        var_dump(setcookie("$cookie", "voted ".$vote, $month, '/', ".shikiryu.com"));
        echo "2nd cookie named ".$cookie.". is set to :voted ".$vote;
    }
}
else
{
        var_dump(setcookie("$cookiez", "viewed ".$vote, $month, "/", ".shikiryu.com"));
        echo "1st cookie named ".$cookiez." set to : viewed ".$vote;
}

如果您尝试:

  1. http://labs.shikiryu.com/test-cookie.php?id=1&vote=1您将拥有bool(true) 1st cookie named viewz1 set to : viewed 1
  2. http://labs.shikiryu.com/test-cookie.php?id=1&vote=3 =&gt; bool(true) 2nd cookie named votez1. is set to :voted 3
  3. http://labs.shikiryu.com/test-cookie.php?id=1&vote=2 =&gt;因为两个cookie都已设置,所以不会显示任何内容。