PHP curl_setopt()错误无效字符

时间:2014-10-19 12:08:48

标签: php curl

我有一些网站的代码,其中使用了cURL(不是“我的”......是开源项目的一部分),并且在几个月后第一次在我的VM的localhost上加载了网站,因为我想要为了帮助解决最近出现的与cURL无关的问题,我修复了一个本地问题,这对我来说很明显,现在当我尝试登录该网站时出现此错误

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:"

不幸的是,cURL不是我的强项,但我可以根据需要提供更多有关情况的信息。您可以看到上述代码来自here的完整功能。

1 个答案:

答案 0 :(得分:1)

问题是受保护的属性是以特殊方式序列化的,即:

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

在将cURL选项设置为this security issue所做更改的一部分时,不允许使用这些空字符。

以这种方式传递序列化对象是有风险的,除非这些值来自可靠来源或带有防篡改签名。您可以通过编码序列化值的第一个URL来使其工作。

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