从webroot之外的包含PHP文件访问$ _COOKIE

时间:2012-08-20 12:08:46

标签: php cookies

问题在标题中。

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

示例

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

它的完整路径为http://www.mydomain.com/index.php

/home/scrape/process.php CAN NOT 读取$ _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();
?>
从index.php调用

Process.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中的所有内容都无法访问...

我是否必须在Cookie旁边使用$_SESSION?我不想重复这项工作......

1 个答案:

答案 0 :(得分:0)

这项工作是否应该在您的域或一个域的子域中。

您无法在没有网络访问权限的文件中访问index.php中的Cookie集,也无法通过浏览器对其进行解析。

检查php.net

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