4

我有一个名为 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);

然而,如果我将 URL 称为:(它只是不允许我访问会话),则该 URL 可以正常工作

$result file_get_contents($base_url.'admin/send.sms.php?order_id='.$order_id);
4

1 回答 1

14

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

于 2010-04-13T06:04:57.393 回答