在PHP中使用file_get_contents时访问$ _SESSION

sjw*_*sjw 1 php session file-get-contents

我有一个名为send.email.php的页面,它发送一封电子邮件 - 非常简单的东西 - 我传递了一个订单ID,它创建了作业请求并将其发送出去.这在我开发它的上下文中使用时工作正常(使用javascript对URL进行AJAX调用并将order_id作为查询参数传递)

我现在正试图在另一个应用程序中重用完全相同的页面,但我使用php调用它file_get_contents($base_url.'admin/send.email.php?order_id='.$order_id).当我以这种方式调用页面时,$ _SESSION数组为空isempty()= 1.

这是因为我正在使用启动一个新会话,file_get_contents并且我在登录时存储在$ _SESSION中的值是不可用的?

- >感谢您的反馈.有意义的是,新呼叫无法访问现有会话......

但是新问题:

我现在得到:无法打开流:HTTP请求失败!尝试执行时:

$opts = array('http' => array('header'=> 'Cookie: ' . $_SERVER['HTTP_COOKIE']."\r\n"));
$context = stream_context_create($opts);
$contents = file_get_contents($base_url.'admin/send.sms.php?order_id='.order_id, false, $context);
Run Code Online (Sandbox Code Playgroud)

是的,如果我将其称为以下URL,则URL工作正常:(它只是不允许我访问会话)

$result file_get_contents($base_url.'admin/send.sms.php?order_id='.$order_id);
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 12

这是因为服务器使用cookie来跟踪客户端.当您从浏览器调用页面时,会话cookie将沿请求传递.使用file_get_contents函数时,不会传递cookie,服务器也无法识别客户端.这是一篇可能对你有帮助的帖子.