2012-01-23 65 views
-3

就在那时,我似乎误解了一些关于cookie的内容。为什么不这项工作......我无法在php中设置cookie

<?php 

if (isset($_COOKIE["stop"])){ 
    echo "Welcome " . $_COOKIE["stop"] . "!<br />"; 
} 


$passedvar = $_POST["stopsaway"]; 

if (isset($passedvar)){ 
echo "HHHYES!!!"; 
if (is_numeric($passedvar)){ 
echo "Yup its a number string alright! I'll turn it into a int and I'll make a cookie."; 
//$passedvar = (int)$passedvar; 
setcookie("stop", $passedvar, time()+30); 
echo "COOKIE MADE."; 
} 
} 

if (isset($_COOKIE["stop"])){ 
    echo "Welcome " . $_COOKIE["stop"] . "!<br />"; 
} 
//var_dump($_POST["stopsaway"]); 

?> 

第二个代码

<?php 

$thing = 1; 

if ($thing==1){ 
setcookie("stop","4",time()+30); 
} 

if (isset($_COOKIE["stop"])){ 
echo "So why won't it work THERE!?"; 
} 

print_r($_COOKIE); 
?> 

基本上,我希望用户输入一个数字字段,然后一个cookie设置为这个数字,和主页面反映了这一变化。这工作一次。底部的代码似乎工作,但由于某种原因,它不工作,除非我手动输入的URL使用cookie页面窗口转到主页面。如果我在eachother旁边打开了两个选项卡......它在创建cookie之后不会执行任何操作来刷新主页......我不知道为什么。

另外,我记得听说在setcookie之前什么也没有发生,因为它的工作必须是代码的第一行.....那么我该如何首先检查输入,或者其他条件?谢谢!哦,对,我正在使用Firefox,但我也在我的Android上测试过。它在一个页面上工作,但不是另一个,所以我不认为它是浏览器。

+0

我认为问题是,如果我没有记错的话,'30是一个很小的时间,30表示30毫秒......使它像3 000 3秒 –

+2

'我记得听说在setcookie之前什么也没有,它的工作必须是代码的第一行.....那么我该如何首先检查输入,或者其他条件?“你不能在它之前输出任何东西,因为它会触发标题发送。你仍然可以拥有你喜欢的所有PHP代码。 –

+0

所以我可以保持条件,只要他们不使用回声或什么?我删除了回声,似乎在做伎俩。谢谢!!而肖恩不,它使用秒。 – user1159454

回答

0

$ _COOKIE将不会被设置,直到下一个综合浏览量。由于您的Cookie设置为在30秒后过期,下次访问该页面时可能会消失。

+0

谢谢,做饼干考虑到加载时间? – user1159454

+0

Cookie在您指定的时间到期 - 加载时间与它无关。 – whichdan

+0

我明白了。那么我看到,默认情况下,Cookie似乎使用time()的偏移量来确定它们的到期日期。我想知道是否有任何方法可以将其设置为使用它重定向到的页面上的特定时间...作为页面加载5秒后的一种说法。还有一段时间后,我不知道上午3点了,我发现什么地方出了问题。标题重定向在Cookie设置之后进行,cookie在回应之后。我认为我现在明白,只要代码与写入页面无关,那么在此之前可以拥有任意类型的PHP。 – user1159454