2014-10-19 45 views
1

我在捲曲使用過的網站的一些代碼(不是很「雷」 ..一個開源項目的一部分)和對我的虛擬機的本地主機加載了該網站後時隔幾個月,因爲我想幫助最近遇到的問題已經出現,這是不相關的捲曲,我有固定的一個局部問題試圖登錄到該網站,我得到這個錯誤時,這是​​明顯,我現在PHP curl_setopt()錯誤無效字符

curl_setopt(): Curl option contains invalid characters (\0) 

無論我雖然已經搞砸了,這似乎發生在嘗試加載任何頁面不僅僅是登錄頁面。 這是它指向代碼

curl_setopt($re, CURLOPT_COOKIE, "slim_session=".$_COOKIE['slim_session'].";"); 

行如果有幫助,通過error_log()「荷蘭國際集團我發現$_COOKIE['slim_session']a:4:{s:10:"slim.flash";a:0:{}s:11:"AccessToken";O:48:"SolasMatch\\Common\\Protobufs\\Models\\OAuthResponse":4:{s:8:"

不幸的是捲曲是不是我的強項,但我可以提供根據需要了解更多情況。您可以看到上述代碼的全部功能來自here

+0

是的,cookie確實包含nul字節(在s:8之後:)。您需要一些代碼,在將cookie傳遞給CURL之前檢查並清理cookie。 – georg 2014-10-19 12:11:37

+0

你不應該序列化對象的方式,因爲private和protected的屬性在他們的名字一個空字符。 – 2014-10-19 12:12:30

+0

你知道爲什麼這個代碼可以在不同的機器之前或之後工作嗎?在PHP或cURL的最新更新中是否發生了某些事情? 僅供參考,我的虛擬機是在Ubuntu 14.04 LTS,而機器,我會在我曾在該網站devved是在一些版本的12.04 LTS,所以也許安置工作的地方工作過的原因在於PHP版本和這樣的可能是不同的.. – 2014-10-19 12:20:30

回答

1

的問題是保護的性質是一種特殊的方式序列化,即:

s:14:"\000*\000_descriptor";N 

和設置捲曲選項因this security issue所做的更改部分時,這些空字符是不允許的。

以這種方式傳遞序列化的對象是有風險的,除非值要麼來自信任源來或承受了防篡改簽名。您可以通過首次編碼序列化值的URL來使其工作。

curl_setopt($re, CURLOPT_COOKIE, "slim_session=" . urlencode($_COOKIE['slim_session']) . ";");