cURL POST リクエストでの配列のサポート
このクエリでは、ユーザーは cURL POST リクエスト内で配列を利用する方法についてのガイダンスを求めています。提供されたコードで配列を使用する場合、最初の値のみが送信されます。提出されたコードを調査すると、次の懸念事項が特定されます:
<code class="php">//extract data from the post extract($_POST); //set POST variables $url = 'http://api.example.com/api'; $fields = array( 'username' => "annonymous", 'api_key' => urlencode("1234"), 'images[]' => urlencode(base64_encode('image1')), 'images[]' => urlencode(base64_encode('image2')) ); //url-ify the data for the POST foreach($fields as $key => $value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); //execute post $result = curl_exec($ch); echo $result; //close connection curl_close($ch);</code>
配列構造が正しくありません:
主な問題は、配列構造が正しくないことにあります:
<code class="php">'images[]' => urlencode(base64_encode('image1')), 'images[]' => urlencode(base64_encode('image2'))</code>
このアプローチでは、PHP で配列は作成されません。代わりに、各キー「images[]」が前のキーを上書きします。
正しい配列構造 (http_build_query を使用):
配列を正しく構築するには、 http_build_query 関数:
<code class="php">$fields = array( 'username' => "annonymous", 'api_key' => urlencode("1234"), 'images' => array( urlencode(base64_encode('image1')), urlencode(base64_encode('image2')) ) ); $fields_string = http_build_query($fields);</code>
この変更により、$fields_string は 'images' キーの複数の値を持つ配列を正しく表すようになります。
改訂されたコード:
これらの調整を組み込むと、改訂されたコードは次のようになります。
<code class="php">//extract data from the post extract($_POST); //set POST variables $url = 'http://api.example.com/api'; $fields = array( 'username' => "annonymous", 'api_key' => urlencode("1234"), 'images' => array( urlencode(base64_encode('image1')), urlencode(base64_encode('image2')) ) ); //url-ify the data for the POST $fields_string = http_build_query($fields); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); //execute post $result = curl_exec($ch); echo $result; //close connection curl_close($ch);</code>
これらの変更を実装することにより、cURL POST リクエストでの配列のサポートが効果的に実現され、すべての値が確実に送信されるようになります。サーバーは意図したとおりです。
以上がcURL POST リクエストで配列を適切に送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。