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転送の進行状況バーを閉じる この項目のデフォルト設定は有効です。
| |
CURLOPT_NOSIGNAL | 有効にすると、curl によって php に渡されるすべてのシグナルを無視します。この項目は、SAPI マルチスレッド送信中にデフォルトで有効になります。 | cURL は 7.10 で追加されました。 |
CURLOPT_POST | これを有効にすると、フォーム送信と同様に、タイプ: application/x-www-form-urlencoded の通常の POST リクエストが送信されます。 | |
CURLOPT_PUT | を有効にすると、HTTP によるファイルの送信が許可されます。CURLOPT_INFILE と CURLOPT_INFILESIZE の両方を設定する必要があります。 | |
CURLOPT_RETURNTRANSFER | curl_exec()で取得した情報を直接出力するのではなく、ファイルストリームの形式で返します。 | |
CURLOPT_SSL_VERIFYPEER | cURLを無効にすると、サーバー側からの検証が終了します。 CURLOPT_CAINFO オプションを使用して証明書を設定します。 CURLOPT_CAPATH オプションを使用して証明書ディレクトリを設定します。 CURLOPT_SSL_VERIFYPEER (デフォルト値は 2) が有効な場合、CURLOPT_SSL_VERIFYHOST を TRUE に設定する必要があり、それ以外の場合は 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_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_BASIC と CURLAUTH_NTLM のみが現在サポートされています。 | cURL 7.10.7 で追加されました。 |
CURLOPT_PROXYPORT | プロキシサーバーのポート。ポートはCURLOPT_PROXYでも設定できます。 | |
CURLOPT_PROXYTYPE | は、CURLPROXY_HTTP (デフォルト) または CURLPROXY_SOCKS5 ではありません。 | cURL 7.10 で追加されました。 |
CURLOPT_REDIR_PROTOCOLS | CURLPROTO_*のビットフィールド値有効にすると、 | CURLOPT_FOLLOWLOCATIONがオンになっているときに、リダイレクトをフォローするときにトランスポート スレッドが使用できるプロトコルがビットフィールド値によって制限されます。これにより、リダイレクト時にトランスポート スレッドを許可されたプロトコルのサブセットに制限できるようになります。デフォルトでは、libcurl は FILE と SCP を除くすべてのプロトコルを許可します。これは、サポートされているすべてのプロトコルに無条件で従う 7.19.4 プレリリース バージョンとは少し異なります。プロトコル定数については、 | CURLOPT_PROTOCOLS
cURL 7.19.4 で追加されました。 | CURLOPT_RESUME_FROM | |
CURLOPT_SSL_VERIFYHOST | ||
CURLOPT_SSLVERSION | ||
CURLOPT_TIMECONDITION CURLOPT_TIMEVALUEで指定された一定の時間が経過した後にページが編集されている場合はCURL_TIMECOND_IFMODSINCEを使用し、変更されていない場合は CUR LOPT_HEADER は true "304 Not Modified" ヘッダーを返します。CURLOPT_HEADER が false の場合は、 | CURL_TIMECOND_IFUNMODSINCE を使用します。デフォルト値は CURL_TIMECOND_IFUNMODSINCE | です。 |
CURLOPT_TIMEOUT | ||
CURLOPT_TIMEOUT_MS | ||
cURL 7.16.2 で追加されました。 PHP 5.2.3 以降で利用可能です。 | CURLOPT_TIMEVALUE | CURLOPT_TIMECONDITIONで使用されるタイムスタンプを設定します。デフォルトでは、 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-SHA と TLSv1 はどちらも使用可能な暗号化リストです。 | |
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秘密鍵のパスワード。
| |
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会话并获取一个网页
<?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('name' => '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); ?>
以上实例输出结果如下:
注释
传递一个数组到CURLOPT_POSTFIELDS,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。
【相关文章推荐】
以上がphpのcurl_setopt関数の概念と使用例の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。