0

我创建了一个 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 是计划value 然后重定向到页面signup.php signup.php的代码如下

<?php
$ur = $_COOKIE['ur']; 
echo "<iframe frameborder='0'";
echo 'src="';
echo $ur;
echo '" width="100%" height="1100px"></iframe>';
?>

出于某种原因,当我传递 order.php 文件时,会创建一个计划值,但是由于 order.php 中的重定向命令而自动加载的 signup.php 无法读取 cookie。但是,当我运行一个简单<?php print_r($_COOKIE); ?>的 cookie 时,会显示 ur 的正确值。最重要的是,如果我手动加载 signup.php 页面加载就好了。但是当它使用重定向命令自动加载时,它无法读取 cookie。知道有什么问题吗?我可能会补充说,大约 1 个月前它曾经可以正常工作的代码突然停止工作

4

1 回答 1

2

您无法读取为其他 url/path 创建的 cookie:

您仅为目录创建了 cookie http://techbr.duoservers.com/hosting-order/(因为您省略了函数的第 4 个参数pathset_cookiephp 选择当前目录,请参见下面的引用)

并尝试在另一个中访问它:http://cheap-webhosting.co.in/

你不能那样做。例如,你必须将 cookie 路径参数强制为“/”。

请参阅 php 文档:

小路:

cookie 可用的服务器上的路径。如果设置为“/”,cookie 将在整个域中可用。如果设置为 '/foo/',则 cookie 将仅在 /foo/ 目录和域的 /foo/bar/ 等所有子目录中可用。默认值是设置 cookie 的当前目录。

来源: http: //php.net/manual/en/function.setcookie.php

于 2012-10-22T09:59:47.353 回答