2010-04-13 103 views
1

我有一個名爲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); 

回答

9

那是因爲服務器需要使用Cookie來跟蹤客戶。當您從瀏覽器調用頁面時,會話cookie將沿請求傳遞。當您使用file_get_contents函數時,不傳遞cookie並且服務器無法識別客戶端。 Here's a post這可能會幫助你。