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

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

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_BINARYTRANSFER CURLOPT_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_FTPASCII CURLOPT_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_RETURNTRANSFER curl_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_FOLLOWLOCATION CURLOPT_PROTOCOLS を参照してください。 CURLOPT_RESUME_FROM 送信再開時にバイトオフセットを渡します(送信再開に使用します)。 CURLOPT_SSL_VERIFYHOST 1 サーバー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_TIMEOUT DNS 情報をメモリに保存する時間を設定します。デフォルトは 120 秒です。
CURLOPT_FTPSSLAUTH FTP 検証方法:CURLFTPAUTH_SSL(最初に SSL を試す)、CURLFTPAUTH_TLS(最初に TLS を試す) またはCURLFTPAUTH_DEFA ULT(cURL が自動的に決定するようにします)。 cURL 7.12.2 で追加されました。
CURLOPT_HTTP_VERSION CURL_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_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、CURL PROTO_TFTP 、CURLPROTO_ALL はcURL 7.19.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、CURL PROTO_TFTP 、CURLPROTO_ALL はcURL 7.19.4で追加されました。
CURLOPT_PROXYAUTH HTTPプロキシ接続の検証方法。CURLOPT_HTTPAUTHのビットフィールド フラグを使用して、対応するオプションを設定します。プロキシ認証については、CURLAUTH_BASICCURLAUTH_NTLMのみが現在サポートされています。 cURL 7.10.7 で追加されました。
CURLOPT_PROXYPORT プロキシサーバーのポート。ポートはCURLOPT_PROXYでも設定できます。
CURLOPT_PROXYTYPE は、CURLPROXY_HTTP(デフォルト) またはCURLPROXY_SOCKS5ではありません。 cURL 7.10 で追加されました。
CURLOPT_REDIR_PROTOCOLS CURLPROTO_*のビットフィールド値有効にすると、がオンになっているときに、リダイレクトをフォローするときにトランスポート スレッドが使用できるプロトコルがビットフィールド値によって制限されます。これにより、リダイレクト時にトランスポート スレッドを許可されたプロトコルのサブセットに制限できるようになります。デフォルトでは、libcurl は FILE と SCP を除くすべてのプロトコルを許可します。これは、サポートされているすべてのプロトコルに無条件で従う 7.19.4 プレリリース バージョンとは少し異なります。プロトコル定数については、
cURL 7.19.4 で追加されました。


CURLOPT_TIMECONDITIONCURLOPT_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_COOKIE HTTPリクエストの"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_KRB4LEVEL KRB4 (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_PROXY HTTP プロキシ チャネル。
CURLOPT_PROXYUSERPWD プロキシへの接続に使用される"[username]:[password]"形式の文字列。
CURLOPT_RANDOM_FILE SSL乱数シードを生成するために使用されるファイル名。
CURLOPT_RANGE "X-Y"の形式。X と Y はバイト単位でデータ範囲を取得するためのオプションです。 HTTP 転送スレッドは、"X-Y,N-M"など、カンマで区切られた複数の重複もサポートします。
CURLOPT_REFERER HTTPリクエストヘッダーの「Referer:」コンテンツ。
CURLOPT_SSL_CIPHER_LIST SSL暗号化アルゴリズムのリスト。たとえば、RC4-SHATLSv1はどちらも使用可能な暗号化リストです。
CURLOPT_SSLCERT PEM 形式の証明書を含むファイル名。
CURLOPT_SSLCERTPASSWD CURLOPT_SSLCERT証明書を使用するために必要なパスワード。
CURLOPT_SSLCERTTYPE 証明書の種類。サポートされている形式は、"PEM"(デフォルト)、"DER"、および"ENG"です。 cURL 7.9.3 で追加されました。
CURLOPT_SSLENGINE CURLOPT_SSLKEYで指定されたSSL秘密鍵に使用される暗号化エンジン変数。
CURLOPT_SSLENGINE_DEFAULT 非対称暗号化操作に使用される変数。
CURLOPT_SSLKEY SSL秘密キーを含むファイルの名前。
CURLOPT_SSLKEYPASSWD

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

:

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


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



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

option optionalvalue 備考
CURLOPT_HTTP200ALIASES 200 応答コード配列、配列内の応答は正しい応答とみなされ、それ以外の場合はエラーとみなされます。 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会话并获取一个网页

ログイン後にコピー


上传文件实例:

 'Foo', 'file' => '@/home/user/test.png'); curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php'); 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 学習者の迅速な成長を支援します!