2013-02-01 141 views
1

我嘗試,捲曲發佈JSON數據登錄,服務器的響應即登錄成功,但它並沒有寫會話到餅乾,我的代碼:捲曲自動登錄不寫餅乾

<?php 
$json_url = 'https://www.site.com/Login'; 
$json_string = '{"username":"user","password":"12345"}'; 

$ch = curl_init($json_url); 

$options = array(
CURLOPT_HEADER => true, 
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_HTTPHEADER => array('Content-type: application/json; charset=utf-8') , 
CURLOPT_POSTFIELDS => $json_string 
); 

curl_setopt_array($ch, $options); 

$result = curl_exec($ch); // Getting jSON result string 
echo $result; 
?> 

我看到餅乾這需要寫在標題中,但他們沒有寫入我的瀏覽器。

回答

1

使用服務器端curl請求創建的cookie無法發送到瀏覽器。您無法爲腳本運行的域以外的域設置Cookie。例如你不能讓你的PHP代碼登錄到Facebook,並將facebook會話令牌傳回給用戶,並讓它在實際的Facebook網站上可用。如果你嘗試,你會發現瀏覽器確實設置了一個包含你設置的名稱/值的cookie,但它將被限制爲YOUR site,而不是facebook.com

+0

@標誌-b是的,我預期的那麼,但有什麼解決辦法?我如何在客戶端發送json數據?我需要這樣的東西,但是用json-data POST。

user1482261

+0

你不能,如果你想讓cookies工作,就不行。用戶直接提交到您嘗試登錄的網站,以便Cookie正常工作,或者代理**他們所做的所有事情。 –

1

你需要添加cookie文件爲了保存和閱讀:

curl_setopt($s,CURLOPT_COOKIEJAR,"ciasteczka.txt"); 
curl_setopt($s,CURLOPT_COOKIEFILE,"ciasteczka.txt"); 

(波蘭ciasteczka是餅乾)

+1

對,換句話說,在該數組中,您需要添加兩個新鍵(CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE),這兩個鍵的值都是具有寫入權限的文件的路徑 – mishu