curl_setopt — cURL トランスポート オプションを設定します。


説明

bool curl_setopt ( resource $ch , int $option , mixed $value )

指定された cURL セッション ハンドルのオプションを設定します。


パラメータ

ch

curl_init() によって返される cURL ハンドル。

オプション

設定する必要があるCURLOPT_XXXオプション。

value

オプション option に設定される値。

次のオプションのオプションのパラメータの値は、bool 型の値に設定する必要があります:

#オプションオプション備考CURLOPT_BINARYTRANSFERCURLOPT_RETURNTRANSFERCURLOPT_COOKIESESSIONCURLOPT_CRLFCURLOPT_DNS_USE_GLOBAL_CACHECURLOPT_FAILONERROR有効にすると、リモート ドキュメント内の情報の変更が試行されます。結果情報は、curl_getinfo() 関数の 有効にすると、サーバーは を使用します。 インタラクション完了後に強制的に切断され、再利用できません。 #CURLOPT_FRESH_CONNECT新しい接続を取得して、キャッシュ内の接続を置き換えます。 FALSE に設定すると EPRT と LPRT が無効になり、PORT コマンドを使用します。 のみ。 に設定すると、EPSV コマンドが無効になります。 ## CURLOPT_TRANSFERTEXT#CURLOPT_HEADER#CURLINFO_HEADER_OUTPHP 5.1.3 以降で利用可能です。 接頭辞は意図的なものです。 CURLOPT_HTTPGET有効にすると、cURL 関数で変更されたすべてのパラメータがデフォルトに復元されます。価値観。 CURLOPT_NETRC~/.netrc#CURLOPT_NOBODYCURLOPT_NOPROGRESS有効にすると、php シグナルに渡されるすべてのcurlを無視しますの。この項目は、SAPI マルチスレッド送信中にデフォルトで有効になります。 有効にすると、通常の POST リクエストが送信されます。タイプは 有効にすると、HTTP によるファイルの送信が許可されます。CURLOPT_INFILE## は必須です# と CURLOPT_CAINFO オプションを使用して証明書を設定し、CURLOPT_CAPATHCURLOPT_SSL_VERIFYHOSTCURLOPT_TRANSFERTEXTSTDOUT をバイナリ モードに設定しません。 を使用して生成された複数のヘッダーは、引き続きユーザー名とパスワードの情報を保持します。ドメイン名が変更された場合でも、場所に追加されます。 有効にすると、ファイルのアップロードが許可されます。 STDERR## に保存されます。 # または指定された

次のオプションのオプションのパラメータの場合、値は整数型の値に設定する必要があります:

CURLOPT_AUTOREFERER Location: に従ってリダイレクトされると、ヘッダーの Referer: 情報が自動的に設定されます。
が有効な場合、ネイティブ (Raw) を返します。出力。
有効にすると、curl は 1 つのセッション Cookie のみを渡し、他の Cookie を無視します。この場合、cURL はすべての Cookie をサーバーに返します。セッション Cookie は、サーバー側のセッションが有効かどうかを判断するために使用される Cookie を指します。
有効にすると、Unix の改行が復帰と改行に変換されます。
有効にすると、グローバル DNS キャッシュが有効になります。この項目はスレッドセーフです. であり、デフォルトで有効になっています。
HTTP ステータス コードを表示します。デフォルトの動作では、数字付きの HTTP 情報を無視します。 400 以下。
#CURLOPT_FILETIME
CURLINFO_FILETIME オプションを通じて返されます。 curl_getinfo().
CURLOPT_FOLLOWLOCATION
" 場所を返します。 : "それをヘッダーに入れて、再帰的にサーバーに返します。再帰的な戻りの数を制限するには、CURLOPT_MAXREDIRS CURLOPT_FORBID_REUSE

CURLOPT_FTP_USE_EPRT
有効にすると、FTP ダウンロード時に EPRT (または LPRT) コマンドを使用します。
##CURLOPT_FTP_USE_EPSV 有効にすると、FTP 転送中に PASV モードに戻る前にまず EPSV を試してください。指示。
FALSE
CURLOPT_FTPAPPEND 有効にすると、ファイルを上書きするのではなく追加書き込みします。
CURLOPT_FTPASCII のエイリアス。
CURLOPT_FTPLISTONLY 有効にすると、FTP ディレクトリの名前のみがリストされます。
有効にすると、ヘッダー ファイル情報がデータ ストリームとして出力されます。
有効な場合の追跡ハンドルのリクエスト文字列。 CURLINFO_
有効にすると、HTTP メソッドは GET に設定されます。GET がデフォルトであるため、それが有効な場合にのみ使用されます。変更されました。
CURLOPT_HTTPPROXYTUNNEL 有効にすると、HTTP プロキシ経由で送信されます。
#CURLOPT_MUTE
接続が確立されたら、 にアクセスします。このファイルは、リモート サイトに接続するためのユーザー名とパスワードの情報を取得します。
有効にすると、HTML の BODY 部分が出力されなくなります。
有効になっている場合、curl 送信の進行状況バーを閉じます。これがデフォルトです。項目 有効に設定します。

:

PHP はこのオプションを TRUE に自動的に設定します。このオプションはデバッグ目的でのみ変更してください。


#CURLOPT_NOSIGNAL
cURL は 7.10 で追加されました。 CURLOPT_POST
application/x-www-form です。 -urlencoded 、フォーム送信と同じです。 CURLOPT_PUT
CURLOPT_INFILESIZE を同時に設定する必要があります。 CURLOPT_RETURTRANSFER
curl_exec() によって取得された情報を、代わりにファイル ストリームの形式で返します。ダイレクト出力。
CURLOPT_SSL_VERIFYPEER
cURL を無効にすると、サーバーからの検証が終了します。
オプションを使用して証明書ディレクトリを設定します。 CURLOPT_SSL_VERIFYPEER (デフォルト値は 2) が有効な場合、TRUE に設定する必要があり、それ以外の場合は FALSE に設定します。 cURL 7.10 以降、デフォルトは TRUE です。 cURL 7.10 以降、バンドルのインストールがデフォルトで行われます。 有効な場合、FTP 転送に ASCII モードを使用します。 LDAP の場合、HTML ではなくプレーン テキスト情報を取得します。 Windows システムでは、システムは
CURLOPT_UNRESTRICTED_AUTH
CURLOPT_FOLLOWLOCATION
#CURLOPT_UPLOAD
CURLOPT_VERBOSE 有効にすると、すべての情報がレポートされ、CURLOPT_STDERR
#オプションオプション備考取得されるデータに毎回読み込まれるキャッシュのサイズですが、この値が毎回満たされるという保証はありません。 は cURL 7.10 で追加されました。 ##CURLOPT_CLOSEPOLICYCURLOPT_CONNECTTIMEOUTCURLOPT_CONNECTTIMEOUT_MS は cURL 7.16.2 で追加されました。 PHP 5.2.3 以降で利用可能です。 CURLOPT_DNS_CACHE_TIMEOUTCURLOPT_FTPSSLAUTHCURLFTPAUTH_TLS (HTTP/1.0 を強制) または ##CURLOPT_INFILESIZEアップロードされるファイルのサイズ制限をバイト単位で設定します。 CURLOPT_LOW_SPEED_LIMIT(bytes/) 未満の場合sec )、PHP は CURLOPT_LOW_SPEED_TIME(bytes/) 未満の場合sec )、PHP は CURLOPT_LOW_SPEED_TIME に基づいて、送信が遅すぎるため送信をキャンセルするかどうかを決定します。 許可される接続の最大数を超えると、 を併用します。 ##CURLOPT_PROTOCOLS へのビット フィールド ポインター。有効にすると、ビットフィールド値によって、libcurl が転送中に使用できるプロトコルが制限されます。これにより、幅広いプロトコルをサポートするように libcurl をコンパイルできるようになりますが、使用が許可されているプロトコルのサブセットのみの使用に制限されます。デフォルトでは、libcurl はサポートするすべてのプロトコルを使用します。 を参照してください。使用可能なプロトコル オプションは次のとおりです: CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TF TP、CURLPROTO cURL 7.19 の _ALLCURLAUTH_NTLM は cURL 7.10.7 で追加されました。 CURLOPT_PROXYPORT##CURLPROTO_*CURLOPT_RESUME_FROM#CURLOPT_SSL_VERIFYHOST#CURLOPT_SSLVERSION を使用してページに戻ります。ページが変更されておらず、 cURL の実行を許可する最大秒数を設定します。 CURLOPT_TIMEOUT_MS cURL の実行を許可する最大ミリ秒数を設定します。 は cURL 7.16.2 で追加されました。 PHP 5.2.3 以降で利用可能です。 CURLOPT_TIMECONDITION で使用されるタイムスタンプを設定します。デフォルトでは、
CURLOPT_BUFFERSIZE
CURLCLOSEPOLICY_LEAST_RECENTLY_USED または CURLCLOSEPOLICY_OLDEST のいずれか、他に 3 つの CURLCLOSEPOLICY がありますが、cURL はまだそれらをサポートしていません。
接続を開始するまでの待機時間。0 に設定すると待機します。無期限に。
接続試行を待機する時間 (ミリ秒単位)。 0 に設定すると、無限に待機します。
DNS 情報をメモリに保存する時間を設定します。デフォルトは 120 秒です。
FTP 検証方法: CURLFTPAUTH_SSL (最初に SSL を試してください)、 (最初に TLS を試す) または CURLFTPAUTH_DEFAULT (cURL が自動的に決定する)。 は cURL 7.12.2 で追加されました。 CURLOPT_HTTP_VERSION
CURL_HTTP_VERSION_NONE (デフォルト値、cURL が使用するバージョンを決定します)、CURL_HTTP_VERSION_1_0CURL_HTTP_VERSION_1_1 (HTTP/1.1 を強制)。
CURLOPT_LOW_SPEED_LIMIT
通信速度が
に基づいて、送信が遅すぎるため送信をキャンセルするかどうかを決定します。 CURLOPT_LOW_SPEED_TIME 通信速度が
CURLOPT_LOW_SPEED_LIMIT
CURLOPT_MAXCONNECTS CURLOPT_CLOSEPOLICY## が実行されます。 #どの接続を停止する必要があるかを決定します。
CURLOPT_MAXREDIRS HTTP リダイレクトの最大数を指定します。このオプションは と同じですCURLOPT_FOLLOWLOCATION
#CURLOPT_PORT は、接続ポートを指定するために使用されます。 (オプション)
CURLPROTO_*CURLOPT_REDIR_PROTOCOLS
.4を追加しました。ビット フィールドは、
CURLOPT_PROTOCOLS CURLPROTO_* を参照します。有効にすると、ビットフィールド値によって、libcurl が転送中に使用できるプロトコルが制限されます。これにより、幅広いプロトコルをサポートするように libcurl をコンパイルできるようになりますが、使用が許可されているプロトコルのサブセットのみの使用に制限されます。デフォルトでは、libcurl はサポートするすべてのプロトコルを使用します。 CURLOPT_REDIR_PROTOCOLS を参照してください。使用可能なプロトコル オプションは次のとおりです: CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TF TP、CURLPROTO cURL 7.19 の _ALL .4を追加しました。
CURLOPT_PROXYAUTH HTTP プロキシ接続の検証方法。 CURLOPT_HTTPAUTH のビットフィールド フラグを使用して、対応するオプションを設定します。プロキシ認証については、CURLAUTH_BASIC のみが現在サポートされています。
プロキシ サーバーのポート。ポートは CURLOPT_PROXY で設定することもできます。
CURLOPT_PROXYTYPE は、CURLPROXY_HTTP (デフォルト) または CURLPROXY_SOCKS5 のいずれかです。 は cURL 7.10 で追加されました。
#CURLOPT_REDIR_PROTOCOLS のビット フィールド値。有効にすると、CURLOPT_FOLLOWLOCATION が有効なときに、リダイレクトを追跡するときにトランスポート スレッドが使用できるプロトコルがビットフィールド値によって制限されます。これにより、リダイレクト時にトランスポート スレッドを許可されたプロトコルのサブセットに制限できるようになります。デフォルトでは、libcurl は FILE と SCP を除くすべてのプロトコルを許可します。これは、サポートされているすべてのプロトコルに無条件で従う 7.19.4 プレリリース バージョンとは少し異なります。プロトコル定数については、CURLOPT_PROTOCOLS を参照してください。 は cURL 7.19.4 で追加されました。
送信を再開するときにバイト オフセットを渡します (送信の再開に使用されます)。
1 サーバー SSL 証明書に共通名が存在するかどうかを確認します。翻訳者注: 一般名とは、通常、SSL 証明書を申請するドメイン名 (ドメイン) またはサブドメイン (サブドメイン) を入力することを意味します。 2 共通名が存在し、指定されたホスト名と一致することを確認します。
使用する SSL バージョン (2 または 3)。デフォルトでは、PHP はこの値を自動的に検出しますが、場合によっては手動で設定する必要がある場合があります。
CURLOPT_TIMECONDITION
CURLOPT_TIMEVALUE で指定された特定の時間が経過した場合編集されている場合は、CURL_TIMECOND_IFMODSINCECURLOPT_HEADER が true の場合は、"304 Not Modified" ヘッダーが返されます. CURLOPT_HEADER が false の場合は、CURL_TIMECOND_IFUNMODSINCE を使用します。デフォルト値は CURL_TIMECOND_IFUNMODSINCE です。 #CURLOPT_TIMEOUT

CURLOPT_TIMEVALUE
CURL_TIMECOND_IFMODSINCE が使用されます

次のオプションのオプション パラメータの場合、値は文字列型の値に設定する必要があります:

HTTP リクエストの CURLOPT_COOKIEFILECURLOPT_COOKIEJARCURLOPT_CUSTOMREQUEST" GET"CURLOPT_ENCODING「Accept-Encoding:」HTTP リクエスト ヘッダーの CURLOPT_FTPPORTCURLOPT_INTERFACECURLOPT_KRB4LEVEL、すべてのデータは、HTTP プロトコルの「POST」操作を使用して送信されます。ファイルを送信するには、ファイル名の先頭に #@value#CURLOPT_PROXYHTTP プロキシ チャネル。 "[ユーザー名]:[パスワード]" 形式文字列。 "X-Y,N-M" など、カンマで区切られたこのような複数の重複もサポートします。 "Referer: " と CURLOPT_SSLCERTPASSWDCURLOPT_SSLCERT証明書のタイプ。サポートされている形式は、 は cURL 7.9.3 で追加されました。 #CURLOPT_SSLENGINE_DEFAULT#CURLOPT_SSLKEYCURLOPT_SSLKEYPASSWD で指定された SSL のパスワード秘密鍵。 (デフォルト値)、取得する必要がある URL アドレスは、curl_init でも取得できます。 ()CURLOPT_USERAGENTHTTP リクエストに "User-Agent: "# を含めます # #ヘッダー文字列。 オプション値
Options Optional valueValue 備考
CURLOPT_CAINFO 1 つ以上を保持します ファイル名サーバーによる検証に使用される証明書。このパラメータは、CURLOPT_SSL_VERIFYPEER とともに使用した場合にのみ意味を持ちます。 .
CURLOPT_CAPATH 複数の CA 証明書を保持するディレクトリ。このオプションは CURLOPT_SSL_VERIFYPEER とともに使用されます。
CURLOPT_COOKIE "Cookie: " 部分を設定しますコンテンツ。複数の Cookie はセミコロンとその後のスペースで区切られます (例: "fruit=apple; colour=red")。
Cookie データを含むファイル名。Cookie ファイルの形式は Netscape 形式です。または、純粋な HTTP ヘッダー情報をファイルに保存します。
接続完了後に Cookie 情報を保存するファイル。
代わりにカスタム リクエスト メッセージを使用してください または

"HEAD" を HTTP リクエストとして使用します。これは、"DELETE" またはその他の秘密の HTTP リクエストを実行する場合に役立ちます。有効な値には、"GET""POST""CONNECT" などが含まれます。つまり、HTTP リクエスト全体をここに入力しないでください。たとえば、"GET /index.html HTTP/1.0\r\n\r\n" と入力するのは誤りです。

:

サーバーがこのカスタム リクエスト メソッドをサポートしていることを確認するまでは、このカスタム リクエスト メソッドを使用しないでください。


CURLOPT_EGDSOCKET CURLOPT_RANDOM_FILE と似ていますが、エントロピーが異なりますデーモンソケットを収集しています。
価値。サポートされているエンコードは、"identity""deflate"、および "gzip" です。空の文字列 "" の場合、リクエスト ヘッダーはサポートされているすべてのエンコード タイプを送信します。 は cURL 7.10 で追加されました。
この値は、FTP の「POST」コマンドに必要な IP アドレスを取得するために使用されます。 「POST」コマンドは、指定した IP アドレスに接続するようにリモート サーバーに指示します。この文字列には、プレーン テキストの IP アドレス、ホスト名、ネットワーク インターフェイス名 (UNIX の場合)、またはデフォルトの IP アドレスを使用するための単なる「-」を指定できます。
ネットワーク送信インターフェイス名には、インターフェイス名、IP アドレス、または CPU 名を指定できます。 。
KRB4 (Kerberos 4) セキュリティ レベル。次の値のいずれかが有効です (最小値から最大値の順): "clear""safe""confidential"、## # "プライベート"。###。文字列がこれらのどれにも一致しない場合は、"private" が使用されます。このオプションを NULL に設定すると、KRB4 セキュリティ認証が無効になります。現在、KRB4 セキュリティ認証は FTP 送信にのみ使用できます。 CURLOPT_POSTFIELDS
を付け、フルパスを使用します。このパラメーターは、「para1=val1¶2=val2&...」のような URL コード化された文字列、またはフィールド名をキーとして、フィールド データを値として持つ配列を通じて渡すことができます。 が配列の場合、Content-Type ヘッダーは multipart/form-data に設定されます。
CURLOPT_PROXYUSERPWD
プロキシへの接続に使用される番号
CURLOPT_RANDOM_FILE SSL 乱数シードの生成に使用されるファイル名。
CURLOPT_RANGE "X-Y"
の形式で、X とY は、バイト単位で測定される、取得されるオプションのデータの範囲です。 HTTP 転送スレッドは、
CURLOPT_REFERERHTTP リクエスト ヘッダーの コンテンツ。
#CURLOPT_SSL_CIPHER_LIST SSL 暗号化アルゴリズムのリスト。たとえば、RC4-SHATLSv1
は両方とも使用可能な暗号化リストです。
CURLOPT_SSLCERTPEM 形式の証明書を含むファイルの名前。
証明書を使用するために必要なパスワード。
#CURLOPT_SSLCERTTYPE "PEM" (デフォルト)、"DER"、および "ENG" です。
CURLOPT_SSLENGINE CURLOPT_SSLKEY で指定された SSL 秘密キーに使用される暗号化エンジン変数。
非対称暗号化操作に使用される変数。
SSL 秘密キーを含むファイルの名前。
CURLOPT_SSLKEY

:

このオプションには機密のパスワード情報が含まれているため、この PHP スクリプトを安全に保管してください。


CURLOPT_SSLKEYTYPE
CURLOPT_SSLKEY の暗号化タイプ秘密キー。サポートされているキーのタイプは、"PEM""DER"、および "ENG" です。 CURLOPT_URL
関数に設定します。
CURLOPT_USERPWD 接続に必要なユーザー名とパスワードを次の形式で渡します:
" [ユーザー名パスワード]"###。
次のオプションのオプションのパラメータの値は、配列に設定する必要があります:
オプション

備考200 応答コード配列。配列内の応答は正しい応答とみなされ、それ以外の場合はエラーとみなされます。 は cURL 7.10.3 で追加されました。 HTTP ヘッダー フィールドの設定に使用される配列。次の形式の配列を使用して設定します。                         array('Content-type: text/plain', 'Content-length: 100')FTP リクエストの実行後にサーバー上で実行される一連の FTP コマンド。 CURLOPT_QUOTE

次のオプションのオプション パラメータの場合、値はストリーム リソースに設定する必要があります (たとえば、fopen() を使用):

# #CURLOPT_HTTP200ALIASES
CURLOPT_HTTPHEADER
##CURLOPT_POSTQUOTE
#FTP リクエストの前にサーバー上で実行される一連の FTP コマンド。
Options オプション valuevalue
CURLOPT_FILE 出力ファイルの場所を設定します。値は 1 つのリソース タイプで、デフォルトは STDOUT (ブラウザ) です。
CURLOPT_INFILE ファイルをアップロードするときに読み取る必要があるファイル アドレス。値はリソース タイプです。
CURLOPT_STDERR エラー出力アドレスを設定します。値はリソース タイプであり、デフォルトの STDERR を置き換えます。
CURLOPT_WRITEHEADER ヘッダー部分が書き込まれるファイルアドレスを設定します。値はリソースタイプです。

次のオプションのオプション パラメータの値は、コールバック関数名に設定する必要があります:

コールバック関数を 1 つ設定します。この関数には 2 つのパラメータがあり、1 つ目は cURL リソース ハンドル、2 つ目は出力ヘッダー データです。ヘッダー データの出力は、書き込まれたデータのサイズを返すこの関数に依存する必要があります。 3 つのパラメータを使用してコールバック関数を設定します。1 つ目は cURL リソース ハンドルで、2 つ目はパスワード プロンプトです。 、3 番目のパラメータは、許可されるパスワードの最大長です。パスワードの値を返します。 3 つのパラメータを使用してコールバック関数を設定します。1 つ目は cURL のリソース ハンドルで、2 つ目はファイルの説明です。文字リソース、3 番目は長さです。含まれているデータを返します。 コールバック関数名。この関数は 3 つのパラメータを受け入れる必要があります。 1 つ目は cURL リソース、2 つ目はオプション経由です コールバック関数名。この関数は 2 つのパラメータを受け入れる必要があります。 1 つ目は cURL リソース、2 つ目は書き込まれるデータ文字列です。番号 データは関数内に保存する必要があります。この関数は、データを書き込むために渡された正確なバイト数を返す必要があります。返さない場合、転送はエラーになります。 壊す。
オプション OptionalvalueValue
##CURLOPT_HEADERFUNCTION
CURLOPT_PASSWDFUNCTION
CURLOPT_PROGRESSFUNCTION
CURLOPT_READFUNCTION CURLOPT_INFILE cURL に渡されるストリーム リソース。3 番目のパラメータは、読み取ることができるデータの最大量です。戻る 呼び出し関数は、要求されたデータ量 (3 番目のパラメーター) 以下の長さの文字列を返す必要があります。通常、受信ストリームから リソースが読み取られました。空の文字列を EOF (ファイルの終わり) 信号として返します。
CURLOPT_WRITEFUNCTION
#戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

更新ログ

バージョン5.2.105.1.05.0.0
説明
導入されました CURLOPT_PROTOCOLS および CURLOPT_REDIR_PROTOCOLS.
はじめに CURLOPT_AUTOREFERERCURLOPT_BINARYTRANSFERCURLOPT_FTPSSLAUTHCURLOPT_PROXYAUTH、および CURLOPT_TIMECONDITION.
はじめに CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, #CURLOPT_PROXYTYPE CURLOPT_SSLCERTTYPE、および CURLOPT_HTTP200ALIASE#.

实例

初始化一个新的cURL会话并获取一个网页

<?php
// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

//关闭cURL资源,并且释放系统资源
curl_close($ch);
?>

上传文件实例:

<?php

/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/

$ch = curl_init();

$data = array(&#39;name&#39; => &#39;Foo&#39;, &#39;file&#39; => &#39;@/home/user/test.png&#39;);

curl_setopt($ch, CURLOPT_URL, &#39;http://localhost/upload.php&#39;);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);
?>

以上实例输出结果如下:

Array
(
    [name] => Foo
)
Array
(
    [file] => Array
        (
            [name] => test.png
            [type] => image/png
            [tmp_name] => /tmp/phpcpjNeQ
            [error] => 0
            [size] => 279
        )

)

注释

传递一个数组到CURLOPT_POSTFIELDS,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。

推荐学习:《PHP视频教程

##
'); var statusdiv=$('#comment-status'); commentform.submit(function(e){ e.preventDefault(); var noteContent = editor.getValue(); // console.log(noteContent); noteContent = noteContent.replace(/
<code>/g,"<pre class="brush:php;toolbar:false">");
		noteContent = noteContent.replace(//g,"
"); // 系列化表单数据 var comment_parent = 0; var is_user_logged_in = $("#is_user_logged_in").val(); var comment_post_ID = 6085; var _wp_unfiltered_html_comment = $("#_wp_unfiltered_html_comment").val(); var comment = noteContent; var author = $("#author").val(); var url = $("#url").val(); var email = $("#email").val(); if(isBlank(author) && is_user_logged_in==0) { statusdiv.html('

请输入昵称!

').show(); } else if(isBlank(email) && is_user_logged_in==0) { statusdiv.html('

请输入邮箱!

').show(); } else { // var formdata=commentform.serialize() + "&comment=" + noteContent ; // 添加状态信息 statusdiv.html('

Processing...

').show(); // 获取表单提交地址 var formurl=commentform.attr('action'); // 异步提交 $.ajax({ type: 'post', url: formurl, dataType:'json', data: {"comment_parent":comment_parent,"comment_post_ID":comment_post_ID, "_wp_unfiltered_html_comment":_wp_unfiltered_html_comment,"comment":comment,"url":url, "email":email,"author":author}, error: function(XMLHttpRequest, textStatus, errorThrown){ statusdiv.html('

数据不完整或表单提交太快了!

').show(); }, success: function(data, textStatus){ if(data.errorno=="0") { $("#submit").prop('disabled', true); statusdiv.html('

笔记已提交审核,感谢分享笔记!

').show(); alert('笔记已提交审核,感谢分享笔记!'); }else{ statusdiv.html('

'+data.msg+'

').show(); } commentform.find('textarea[name=comment]').val(''); } }); setTimeout(function(){ $("#submit").prop('disabled', false); }, 10*1000); } return false; }); $(".comt-author").click(function() { href = $(this).children("a").attr("href"); if(href.indexOf("/note/")!=-1) { var win = window.open(href, '_blank'); win.focus(); } }); $(".comt-meta span").hover(function(){ $(this).children(".tooltip").css({ "opacity": 1, "pointer-events": "auto"}); },function(){ $(this).children(".tooltip").removeAttr("style"); }); /* $(".wrapper i").hover(function(){ $(this).siblings(".tooltip").css({ "opacity": 1, "pointer-events": "auto"}); },function(){ $(this).siblings(".tooltip").css({ "opacity": 0, "pointer-events": "auto"}); }); */ //Upvote.create('runoobvote-id', {callback: vote_callback}); var ajaxurl = 'https://www.runoob.com/wp-admin/admin-ajax.php'; var callback = function(data) { //console.log($('#runoobvote-id').upvote('upvoted')); //console.log($('#runoobvote-id').upvote('downvoted')); //console.log(data); _vote_action = data.action; id_arr = data.id.split('-'); um_id= id_arr[2]; //console.log(um_id); var re = /^[1-9]+/; if (re.test(um_id)) { var ajax_data = { _vote_action: _vote_action, action: "pinglun_zan", um_id: um_id, um_action: "ding" }; //console.log(ajax_data); $.post(ajaxurl,ajax_data,function(status){ //if(status.vote_num>999) { // _voteHtml = ''+kFormatter(status.vote_num) +''; // $("#runoobvote-id-" + um_id + " .count").hide().after(_voteHtml); //} }); } }; if($('#comments').length){ $('.upvotejs').upvote({id: 6085, callback: callback}); $.post(ajaxurl,{"action":"pinglun_zan","postid":6085},function(data){ $(data).each(function(key,value) { $("#runoobvote-id-" + value.commid + " .upvote").addClass(value.upvotejs_class); $("#runoobvote-id-" + value.commid + " .downvote").addClass(value.downvote_class); $("#runoobvote-id-" + value.commid + " .count").text(value.upvote_count); }) },'json'); } }); function isBlank(str) { return (!str || /^\s*$/.test(str)); } function kFormatter(num) { // return num; return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num) }