phpのcurl_setopt関数の概念と使用例の紹介

怪我咯
リリース: 2023-03-07 19:32:02
オリジナル
1583 人が閲覧しました

phpのcurl_setopt関数は何をしますか?

curl_setopt関数はphpの重要な関数であり、cURL送信オプションを設定するために使用されます。では、どのように設定されているのでしょうか?パラメータとは何ですか?この記事の主な目的は、php の curl_setopt 関数を詳しく紹介することです。

まず、構文の説明を見てみましょう

bool curl_setopt ( resource $ch , int $option , mixed $value )
ログイン後にコピー

パラメータの詳細:

ch

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

option

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

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

PS: ここで、値は次のように、オプションで選択されたパラメータに従って設定されることに注意してください

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

オプションオプション備考
CURLOPT_AUTOREFERER Location:に基づいてリダイレクトするときにヘッダーに自動的に設定されます参照者:情報。
CURLOPT_BINARYTRANSFERCURLOPT_RETURNTRANSFERが有効な場合、生の(Raw)出力を返します。
CURLOPT_COOKIESESSION 有効にすると、curl は 1 つのセッション Cookie のみを渡し、他の Cookie を無視します。デフォルトでは、cURL はすべての Cookie をサーバーに返します。セッション Cookie は、サーバー側のセッションが有効かどうかを判断するために使用される Cookie を指します。
CURLOPT_CRLF 有効にすると、Unix の改行が復帰と改行に変換されます。
CURLOPT_DNS_USE_GLOBAL_CACHE この項目はスレッドセーフであり、デフォルトで有効になります。
CURLOPT_FAILONERROR デフォルトの動作では、数値が 400 以下の HTTP メッセージを無視します。
CURLOPT_FILETIME 有効にすると、リモートドキュメント内の情報の変更が試行されます。結果情報は、curl_getinfo() 関数の CURLINFO_FILETIME オプションを通じて返されます。 curl_getinfo().
CURLOPT_FOLLOWLOCATION 有効にすると、サーバーから返された "Location: "" がヘッダーに配置され、再帰的にサーバーに返されます。制限するには CURLOPT_MAXREDIRS を使用します再帰的な戻りの数。
CURLOPT_FORBID_REUSE インタラクション完了後に強制的に切断され、再利用することはできません。
CURLOPT_FRESH_CONNECT新しい接続を強制的に取得し、キャッシュ内の接続を置き換えます。
CURLOPT_FTP_USE_EPRT有効にすると、FTP ダウンロード時に EPRT (または LPRT) コマンドを使用します。 FALSEに設定されている場合はEPRTとLPRTを無効にし、PORTコマンドを使用します のみ。
CURLOPT_FTP_USE_EPSV 有効にすると、F 中に PASV モードに戻る前に EPSV コマンドが最初に試行されます。 TP転送。 FALSE に設定すると、EPSV コマンドが無効になります。
CURLOPT_FTPAPPEND有効にすると、追加はファイルを上書きするのではなく、ファイルに書き込みます。
CURLOPT_FTPASCIICURLOPT_TRANSFERTEXTのエイリアス。
CURLOPT_FTPLISTONLY 有効にすると、FTP ディレクトリの名前のみがリストされます。
CURLOPT_HEADER有効にすると、ヘッダファイル情報がデータストリームとして出力されます。
CURLINFO_HEADER_OUT有効な場合の追跡ハンドルのリクエスト文字列。 PHP 5.1.3 以降で利用可能です。 CURLINFO_接頭辞は意図的なものです。
CURLOPT_HTTPGET有効にすると、HTTP メソッドは GET に設定されます。GET がデフォルトであるため、変更された場合にのみ使用されます。
CURLOPT_HTTPPROXYTUNNEL有効にすると、HTTP プロキシ経由で送信されます。
CURLOPT_MUTE 有効にすると、cURL 関数で変更されたすべてのパラメーターがデフォルト値に復元されます。
CURLOPT_NETRC 接続が確立されたら、ファイルにアクセスして、リモート サイトに接続するためのユーザー名とパスワードの情報を取得します。
CURLOPT_NOBODY有効にすると、HTMLのBODY部分が出力されなくなります。
CURLOPT_NOPROGRESS

有効時にcurl転送の進行状況バーを閉じる この項目のデフォルト設定は有効です。

:

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


CURLOPT_NOSIGNAL 有効にすると、curl によって php に渡されるすべてのシグナルを無視します。この項目は、SAPI マルチスレッド送信中にデフォルトで有効になります。 cURL は 7.10 で追加されました。
CURLOPT_POSTこれを有効にすると、フォーム送信と同様に、タイプ: application/x-www-form-urlencoded の通常の POST リクエストが送信されます。
CURLOPT_PUT を有効にすると、HTTP によるファイルの送信が許可されます。CURLOPT_INFILECURLOPT_INFILESIZE の両方を設定する必要があります。
CURLOPT_RETURNTRANSFERcurl_exec()で取得した情報を直接出力するのではなく、ファイルストリームの形式で返します。
CURLOPT_SSL_VERIFYPEER cURLを無効にすると、サーバー側からの検証が終了します。 CURLOPT_CAINFO オプションを使用して証明書を設定します。 CURLOPT_CAPATH オプションを使用して証明書ディレクトリを設定します。 CURLOPT_SSL_VERIFYPEER (デフォルト値は 2) が有効な場合、CURLOPT_SSL_VERIFYHOSTTRUE に設定する必要があり、それ以外の場合は FALSE に設定します。 cURL 7.10 以降のデフォルトは TRUE です。 cURL 7.10 以降、バンドルのインストールがデフォルトで行われます。
CURLOPT_TRANSFERTEXT FTP 転送に ASCII モードを使用できるようにします。 LDAP の場合、HTML ではなくプレーン テキスト情報を取得します。 Windows システムでは、システムは STDOUT をバイナリ モードに設定しません。
CURLOPT_UNRESTRICTED_AUTHドメイン名が変更された場合でも、CURLOPT_FOLLOWLOCATIONを使用して生成されたヘッダー内の複数の場所にユーザー名とパスワード情報を継続的に追加します。
CURLOPT_UPLOAD を有効にすると、ファイルのアップロードが許可されます。
CURLOPT_VERBOSE 有効にすると、すべての情報が報告され、STDERR または指定された CURLOPT_STDERR に保存されます。



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

CURLOPT_FOLLOWLOCATIONCURLOPT_PROTOCOLSを参照してください。 CURLOPT_RESUME_FROM送信再開時にバイトオフセットを渡します(送信再開に使用します)。 CURLOPT_SSL_VERIFYHOST1 サーバーSSL証明書に共通名が存在するかどうかを確認します。翻訳者注: 一般名とは、通常、SSL 証明書を申請するドメイン名 (ドメイン) またはサブドメイン (サブドメイン) を入力することを意味します。 2 共通名が存在し、指定されたホスト名と一致することを確認します。 CURLOPT_SSLVERSION 使用する SSL バージョン (2 または 3)。デフォルトでは、PHP はこの値を自動的に検出しますが、場合によっては手動で設定する必要がある場合があります。 CURL_TIMECOND_IFUNMODSINCE です。 CURLOPT_TIMEOUT cURL の実行を許可する最大秒数を設定します。 CURLOPT_TIMEOUT_MS cURL の実行が許可される最大ミリ秒数を設定します。 CURLOPT_TIMECONDITIONが使用されます。
オプションオプション備考
CURLOPT_BUFFERSIZE毎回取得されるデータで読み取られるキャッシュのサイズですが、この値が満たされる保証はありません毎回 。 cURL 7.10 で追加されました。
CURLOPT_CLOSEPOLICY他に 3 つの CURLCLOSEPOLICY_LEAST_RECENTLY_USED または CURLCLOSEPOLICY_OLDEST のいずれかですが、cURL はまだそれらをサポートしていません。
CURLOPT_CONNECTTIMEOUT 0 に設定すると、無期限に待機します。
CURLOPT_CONNECTTIMEOUT_MS 接続試行を待機する時間 (ミリ秒単位)。 0 に設定すると、無限に待機します。 cURL 7.16.2 で追加されました。 PHP 5.2.3 以降で利用可能です。
CURLOPT_DNS_CACHE_TIMEOUTDNS 情報をメモリに保存する時間を設定します。デフォルトは 120 秒です。
CURLOPT_FTPSSLAUTHFTP 検証方法: CURLFTPAUTH_SSL (最初に SSL を試す)、CURLFTPAUTH_TLS (最初に TLS を試す) または CURLFTPAUTH_DEFA ULT (cURL が自動的に決定するようにします)。 cURL 7.12.2 で追加されました。
CURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_NONE (デフォルト、使用するバージョンは cURL に決定させます)、CURL_HTTP_VERSION_1_0 (強制 HTTP/1.0) または CURL_HTTP_VERSION_1_1 (HTTP/1.1 の使用が必須)。
CURLOPT_INFILESIZEアップロードされるファイルのサイズ制限をバイト単位で設定します。
CURLOPT_LOW_SPEED_LIMIT 転送速度がCURLOPT_LOW_SPEED_LIMIT(バイト/秒)未満の場合、PHPはCURLOPT_LOW_SPEED_TIMEに基づいて遅すぎるかどうかを判断します送信をキャンセルします。
CURLOPT_LOW_SPEED_TIME 転送速度がCURLOPT_LOW_SPEED_LIMIT(バイト/秒)未満の場合、PHPはCURLOPT_LOW_SPEED_TIMEに基づいて遅すぎるかどうかを判断し、送信。
CURLOPT_MAXCONNECTS許可される接続の最大数を超えた場合、CURLOPT_CLOSEPOLICYを使用してどの接続を停止する必要があるかを決定します。
CURLOPT_MAXREDIRS このオプションは CURLOPT_FOLLOWLOCATION と一緒に使用されます。
CURLOPT_PORTは、接続ポートを指定するために使用されます。 (オプション)
CURLOPT_PROTOCOLSCURLPROTO_* ビットフィールド参照。有効にすると、ビットフィールド値によって、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、CURL PROTO_TFTP 、CURLPROTO_ALLはcURL 7.19.4で追加されました。ビットフィールドは
CURLOPT_PROTOCOLSCURLPROTO_* を参照します。有効にすると、ビットフィールド値によって、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、CURL PROTO_TFTP 、CURLPROTO_ALLはcURL 7.19.4で追加されました。
CURLOPT_PROXYAUTHHTTPプロキシ接続の検証方法。 CURLOPT_HTTPAUTH のビットフィールド フラグを使用して、対応するオプションを設定します。プロキシ認証については、CURLAUTH_BASICCURLAUTH_NTLM のみが現在サポートされています。 cURL 7.10.7 で追加されました。
CURLOPT_PROXYPORT プロキシサーバーのポート。ポートはCURLOPT_PROXYでも設定できます。
CURLOPT_PROXYTYPEは、CURLPROXY_HTTP (デフォルト) または CURLPROXY_SOCKS5 ではありません。 cURL 7.10 で追加されました。
CURLOPT_REDIR_PROTOCOLSCURLPROTO_*のビットフィールド値有効にすると、 がオンになっているときに、リダイレクトをフォローするときにトランスポート スレッドが使用できるプロトコルがビットフィールド値によって制限されます。これにより、リダイレクト時にトランスポート スレッドを許可されたプロトコルのサブセットに制限できるようになります。デフォルトでは、libcurl は FILE と SCP を除くすべてのプロトコルを許可します。これは、サポートされているすべてのプロトコルに無条件で従う 7.19.4 プレリリース バージョンとは少し異なります。プロトコル定数については、
cURL 7.19.4 で追加されました。


CURLOPT_TIMECONDITION CURLOPT_TIMEVALUEで指定された一定の時間が経過した後にページが編集されている場合はCURL_TIMECOND_IFMODSINCEを使用し、変更されていない場合は CUR LOPT_HEADER は true "304 Not Modified" ヘッダーを返します。CURLOPT_HEADER が false の場合は、 を使用します。デフォルト値は
CURL_TIMECOND_IFUNMODSINCE

cURL 7.16.2 で追加されました。 PHP 5.2.3 以降で利用可能です。 CURLOPT_TIMEVALUE で使用されるタイムスタンプを設定します。デフォルトでは、
CURL_TIMECOND_IFMODSINCE
🎜🎜🎜🎜



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

オプション オプション 備考
CURLOPT_CAINFOサーバー検証に使用される 1 つ以上の証明書を保持するファイル名。このパラメーターは、CURLOPT_SSL_VERIFYPEER と一緒に使用した場合にのみ意味を持ちます。 .
CURLOPT_CAPATH複数のCA証明書を保持するディレクトリ。このオプションは CURLOPT_SSL_VERIFYPEER と一緒に使用されます。
CURLOPT_COOKIEHTTPリクエストの"Cookie:"部分の内容を設定します。複数の Cookie はセミコロンとその後のスペースで区切られます (例: "fruit=apple; colour=red")。
CURLOPT_COOKIEFILE Cookie データを含むファイル名は、Netscape 形式にすることも、純粋な HTTP ヘッダー情報だけをファイルに保存することもできます。
CURLOPT_COOKIEJAR接続終了後にCookie情報を保存するファイル。
CURLOPT_CUSTOMREQUEST

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

:

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


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

CURLOPT_SSLKEYで指定されたSSL秘密鍵のパスワード。

:

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


CURLOPT_SSLKEYTYPECURLOPT_SSLKEYで指定された秘密鍵の暗号化タイプは、"PEM"(デフォルト値)、"DER"です。 」英語」
CURLOPT_URL 取得が必要なURLアドレスはcurl_init()関数でも設定できます。
CURLOPT_USERAGENT には、HTTP リクエストに "User-Agent: " ヘッダー文字列が含まれています。
CURLOPT_USERPWD 接続に必要なユーザー名とパスワードを、"[username]:[password]"の形式で渡します。



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

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


对于下面的这些option的可选参数,value应该被设置一个流资源 (例如使用fopen()):

选项可选value
CURLOPT_FILE设置输出文件的位置,值是一个资源类型,默认为STDOUT (浏览器)。
CURLOPT_INFILE在上传文件的时候需要读取的文件地址,值是一个资源类型。
CURLOPT_STDERR设置一个错误输出地址,值是一个资源类型,取代默认的STDERR
CURLOPT_WRITEHEADER设置header部分内容的写入的文件地址,值是一个资源类型。


对于下面的这些option的可选参数,value应该被设置为一个回调函数名:

选项可选value
CURLOPT_HEADERFUNCTION设置一个回调函数,这个函数有两个参数,第一个是cURL的资源句柄,第二个是输出的header数据。header数据的输出必须依赖这个函数,返回已写入的数据大小。
CURLOPT_PASSWDFUNCTION设置一个回调函数,有三个参数,第一个是cURL的资源句柄,第二个是一个密码提示符,第三个参数是密码长度允许的最大值。返回密码的值。
CURLOPT_PROGRESSFUNCTION设置一个回调函数,有三个参数,第一个是cURL的资源句柄,第二个是一个文件描述符资源,第三个是长度。返回包含的数据。
CURLOPT_READFUNCTION回调函数名。该函数应接受三个参数。第一个是 cURL resource;第二个是通过选项 CURLOPT_INFILE 传给 cURL 的 stream resource;第三个参数是最大可以读取的数据的数量。回 调函数必须返回一个字符串,长度小于或等于请求的数据量(第三个参数)。一般从传入的 stream resource 读取。返回空字符串作为 EOF(文件结束) 信号。
CURLOPT_WRITEFUNCTION回调函数名。该函数应接受两个参数。第一个是 cURL resource;第二个是要写入的数据字符串。数 据必须在函数中被保存。函数必须返回准确的传入的要写入数据的字节数,否则传输会被一个错误所中 断。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE。

实例

初始化一个新的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);
?>
ログイン後にコピー

以上实例输出结果如下:

phpのcurl_setopt関数の概念と使用例の紹介

注释

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

【相关文章推荐】

PHP curl_exec函数的用法实例详解

以上がphpのcurl_setopt関数の概念と使用例の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!