我创建了一个php文件 order.php ,如下所示
<?php
$plan=$_POST['plan'];
$expire= time()+60*60;
if (empty($plan))
{
echo '<p align="center">You did not select any plan.</p>';
}
else
{
$str1= "http://techbr.duoservers.com/hosting-order/?plan=";
$ur=$str1.$plan;
usleep(1500);
setcookie("ur", $ur, $expire);
header( 'Location: http://cheap-webhosting.co.in/signup.php') ;
}
?>
您可以看到脚本获取“计划”的值,使用该数据创建Cookie ur ,其值为 http://techbr.duoservers.com/ hosting-order /?plan = 44 其中44是计划值,然后重定向到页面 signup.php signup.php的代码如下所示
<?php
$ur = $_COOKIE['ur'];
echo "<iframe frameborder='0'";
echo 'src="';
echo $ur;
echo '" width="100%" height="1100px"></iframe>';
?>
由于某些原因,当我向order.php文件传递一个计划值时,会创建一个cookie,但由于order.php中的重定向命令而自动加载的signup.php无法读取cookie。但是当我运行一个简单的<?php
print_r($_COOKIE);
?>
cookie时,会显示正确的值。最重要的是,如果我手动加载signup.php页面加载就好了。但是当使用重定向命令自动加载cookie时,它无法读取cookie。知道什么是错的吗?我可能会补充说,1个月之前它的代码工作得很好,它突然停止了工作
答案 0 :(得分:2)
您无法读取为其他网址/路径创建的Cookie:
您仅为目录http://techbr.duoservers.com/hosting-order/
创建了cookie(因为您省略了path
函数的第4个参数set_cookie
,php选择当前目录,请参阅下面的引用)
并尝试在另一个访问它:http://cheap-webhosting.co.in/
你不能这样做..例如,你必须强制cookie路径参数为“/”。
参见php doc:
路径:
可在其上使用cookie的服务器上的路径。如果 设置为'/',cookie将在整个域中可用。如果 设置为'/ foo /',cookie只能在/ foo /中使用 目录和所有子目录,例如/ foo / bar / of domain。的的 默认值是正在设置cookie的当前目录 英寸强>