0

问题在标题中。

我可以$_COOKIE['blah']在 webroot 中访问我的 php 文件,但出于安全目的,我在 webroot 之外包含了无法访问它的内容。

例子

/home/wwwroot/index.php可以读取 $_COOKIE['blah']

它的完整路径在哪里http://www.mydomain.com/index.php

/home/scrape/process.php无法读取 $ _COOKIE ['blah']

但它在webroot之外,并且该scrape文件夹不能在服务器之外访问。

Index.php可以回显存储在 cookie 中的值,并将带有该值的时间戳写入日志文件。这行得通。

无需发布所有代码并尝试保持简单,就像这样简单:

<?PHP
include '../scrape/process.php'; // THIS FILE IS OUTSIDE THE WEBROOT
$cook=$_COOKIE['blah'];

echo "Cookie value is : " . $_COOKIE['blah'] ;
error_log('['.date("F j, Y, g:i a e O").']'.$cook."<br /> \n", 3,  $phperrorPath);
?>

<?PHP
echo 'Outer cookie is : ';
echo outer_cookie();
?>

Process.php函数从 index.php 中调用,然后它将返回 cookie 的值,并使用时间戳和 cookie 值写入它自己的日志文件。这不起作用。日志文件只有时间戳,没有值,它不会向 index.php 返回任何内容。

function outer_cookie() 
{ 
    $cook=$_COOKIE['blah'];
    error_log('['.date("F j, Y, g:i a e O").']'.$cook."<br /> \n", 3,  $phperrorPath);
    return $cook; 
} 

如何让 process.php 读取 cookie 数据?我显然不能将cookie路径设置为webroot之外的东西,即使我可以,那么webroot中的所有东西都无法访问它......

我必须$_SESSION和饼干一起使用吗?我讨厌不得不重复这项工作......

4

1 回答 1

0

确保这两个文件都应该位于您的域或一个域的子域中。

您无法访问在index.php没有 Web 访问权限且浏览器不解析的文件中设置的 cookie。

检查php.net

Cookie 是一种在远程浏览器中存储数据并因此跟踪或识别返回用户的机制。Cookie 是 HTTP 标头的一部分,因此必须在将任何输出发送到浏览器之前调用 setcookie()。

于 2012-08-20T12:41:07.430 回答