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は正常に機能します:(セッションにアクセスできないだけです)

$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 に答える