php curl post錯誤的解決方法:先開啟出錯的PHP程式碼檔案;然後將PHP程式碼中的「$data」由陣列變成經「urlencode()」函數編碼後的資料即可。
本文操作環境: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( 'Title' => $title, 'Content' => $content, 'ComeFrom' => $comefrom ); curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false); curl_setopt($ch, CURLOPT_URL, 'http://example.com/b.php'); 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中文網其他相關文章!