首頁 >後端開發 >PHP問題 >如何解決php curl post錯誤問題

如何解決php curl post錯誤問題

藏色散人
藏色散人原創
2021-03-26 09:11:352318瀏覽

php curl post錯誤的解決方法:先開啟出錯的PHP程式碼檔案;然後將PHP程式碼中的「$data」由陣列變成經「urlencode()」函數編碼後的資料即可。

如何解決php curl post錯誤問題

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

php curl post 時出現問題的解決方法

有如下的場景:

在a.php 中以POST 方式向b.php 提交數據,但是b.php 下就是無法接收到數據,而CURL 操作又顯示成功,非常詭異。原來,「傳遞一個陣列到CURLOPT_POSTFIELDS,cURL會把資料編碼成 multipart/form-data,而然傳遞一個URL-encoded字串時,資料會被編碼成 application/x-www-form-urlencoded。」。

對CURL 不太熟悉的人在寫程式時,程式碼往往: 

程式碼範例:

<?php
$data = array( &#39;Title&#39; => $title, &#39;Content&#39; => $content, &#39;ComeFrom&#39; => $comefrom );
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false);
curl_setopt($ch, CURLOPT_URL, &#39;http://example.com/b.php&#39;);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);

 

將要提交的資料以數組的形式透過POST 發送,而這樣就會導致CURL 使用「錯誤"的編碼「multipart/form-data",其效果相當於直接以「6d63090541532f17d24905b604da0cf3"這樣的表單來完成操作,大家可以試試,這時的「b.php"是無論如何也無法透過$_POST 來接收資料的。

所以,正確的做法應該是將上述程式碼中的 $data 由陣列變成經 urlencode() 編碼後的。

【推薦學習:PHP影片教學

#

以上是如何解決php curl post錯誤問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn