在通常情况下,我们使用 CURL 来提交 POST 数据的时候,我们已经习惯了这样的写法: <div class="codetitle"><a style="CURSOR: pointer" data="77666" class="copybut" id="copybut77666" onclick="doCopy('code77666')"> 代码如下:<div class="codebody" id="code77666">curl_setopt( $ch,CURLOPT_POSTFIELDS,$post_data); 但是这样的写法在有时候并不会很好用,可能会得到服务器返回的 500 错误。但是我们尝试在使用 Socket 方式向服务器提交数据的时候,我们会得到非常正确的结果。 例如我们在服务器上面存在一个如下的 PHP 文件: <div class="codetitle"><a style="CURSOR: pointer" data="69380" class="copybut" id="copybut69380" onclick="doCopy('code69380')"> 代码如下:<div class="codebody" id="code69380"><?php print_r($_SERVER);?> 当我们采用 CURL 在不注意细节的前提下向服务器发送一些数据,我们可能得到下面这样的结果,这不是我们理想中的结果: <div class="codetitle"><a style="CURSOR: pointer" data="47354" class="copybut" id="copybut47354" onclick="doCopy('code47354')"> 代码如下:<div class="codebody" id="code47354">[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122 但是如果我们在采用 http_build_query($post_data) 来替代 $post_data 再向这个 PHP 脚本提交数据的时候,我们就会得到和上面不同的结果,这才是我们理想中的结果: <div class="codetitle"><a style="CURSOR: pointer" data="86875" class="copybut" id="copybut86875" onclick="doCopy('code86875')"> 代码如下:<div class="codebody" id="code86875">[CONTENT_TYPE] => application/x-www-form-urlencoded 从上面这个例子中不难看出,使用 CURL 并且参数为数据时,向服务器提交数据的时候,HTTP头会发送Content_type: application/x-www-form-urlencoded。这个是正常的网页 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|