La función curl_setopt() asigna valores para opciones de una sesión CURL identificada por el parámetro ch. El parámetro option es la opción a la que se desea asignar el valor indicado en el parámetro value.
value debe ser un entero para las siguientes opciones (especificada en el parámetro option);
CURLOPT_INFILESIZE: Cuando subimos un archivo a un sitio remoto, esta opción debe ser usada para decirle a PHP cuál será el tamaño del archivo de entrada.
CURLOPT_VERBOSE: Asigne un valor distinto de cero a esta opción si desea que CURL reporte todo lo que acontece.
CURLOPT_HEADER: Asigne un valor distinto de cero a esta opción si desea que el encabezado sea incluido en la salida.
CURLOPT_NOPROGRESS: Asigne un valor distinto de cero a esta opción si no desea que PHP muestre una barra de progreso para las transferencias de CURL.
Nota: PHP automáticamente asigna un valor distinto de cero a esta opción, esto sólo debe ser cambiado para operaciones de depuración.
CURLOPT_NOBODY: Asigne un valor distinto de cero a esta opción si no desea que el cuerpo sea incluido en la salida.
CURLOPT_FAILONERROR: Asigne un valor distinto de cero a esta opción si desea que PHP falle silenciosamente si el código HTTP devuelto es mayor que 300. El comportamiento por defecto es devolver la página normalmente, ignorando el código.
CURLOPT_UPLOAD: Asigne un valor distinto de cero a esta opción si desea que PHP se prepare para subir un archivo.
CURLOPT_POST: Asigne un valor distinto de cero a esta opción si desea que PHP realize un pedido HTTP POST regular. Este post normalmente es del tipo application/x-www-from-urlencoded, normalmente utilizado por los formularios HTML.
CURLOPT_FTPLISTONLY: Asigne un valor distinto de cero a esta opción y PHP simplemente listará los nombres de un directorio FTP.
CURLOPT_FTPAPPEND: Asigne un valor distinto de cero a esta opción y PHP escribirá al final del archivo remoto en lugar de sobreescribirlo.
CURLOPT_NETRC: Asigne un valor distinto de cero a esta opción y PHP registrará su archivo ~./netrc para buscar el nombre de usuario y la clave del sitio remoto con el que está estableciendo una conexión.
CURLOPT_FOLLOWLOCATION: Asigne un valor distinto de cero a esta opción para seguir algún encabezado del tipo "Location: " que el servidor envíe como parte de los encabezados HTTP (esto es recursivo, PHP seguirá tantos encabezados "Location: " como le sean enviados).
CURLOPT_PUT: Asigne un valor distinto de cero a esta opción para enviar un archivo utilizando el método HTTP PUT. El archivo a enviar debe ser especificado con las opciones CURLOPT_INFILE y CURLOPT_INFILESIZE.
CURLOPT_MUTE: Asigne un valor distinto de cero a esta opción para que PHP no genere ningúna salida para las funciones CURL.
CURLOPT_TIMEOUT: Asigna un valor que contiene el tiempo máximo de ejecución, en segundos, para las funciones CURL.
CURLOPT_LOW_SPEED_LIMIT: Asigna un valor a la velocidad mínima de transferencia en bytes por segundo. Si la transferencia se mantiene por debajo de ese valor durante la cantidad de segundos indicados en la opción CURLOPT_LOW_SPEED_TIME, será considerada demasiado lenta y abortada por PHP.
CURLOPT_LOW_SPEED_TIME: Asigna un valor a la cantidad de segundos que la transferencia debe permanecer debajo de la velocidad indicada en CURLOPT_LOW_SPEED_LIMIT para que PHP la considere demasiado lenta y aborte.
CURLOPT_RESUME_FROM: Asigna un valor al desplazamiento, en bytes, desde el cual desea que comience la transferencia.
CURLOPT_SSLVERSION: Asigna un valor que contiene la versión de SSL (2 o 3) a usar. Por defecto PHP trata de detectar la versión automáticamente, pero en algúnos casos este valor deberá ser fijado manualmente.
CURLOPT_TIMECONDITION: Asigna un valor que define cómo será tratado CURLOPT_TIMEVALUE. Puede fijar este parametro a TIMECOND_IFMODSINCE o a TIMECOND_ISUNMODSINCE. Esta característica es sólo para HTTP.
CURLOPT_TIMEVALUE: Asigna un valor en segundos al tiempo transcurrido desde el 1 de Enero de 1970. El tiempo será utilizado como sea especificado por la opción CURLOPT_TIMEVALUE, o en su defecto se utilizará TIMECOND_IFMODSINCE.
El parámetro value debe ser una cadena para los siguientes valores del parámetro option:
CURLOPT_URL: Esta es la URL que se desea traer. Ud. también puede fijar esta opción cuando se inicializa una sesión con la función curl_init().
CURLOPT_USERPWD: Asigna un valor de cadena del tipo [usuario]:[clave], para ser usado por PHP en la conexión.
CURLOPT_PROXYUSERPWD: Asigna un valor de cadena del tipo [usuario]:[clave], para ser usado en la conexión al servidor proxy HTTP.
CURLOPT_RANGE: Asigna un rango en el formato "X-Y", donde X o Y pueden ser dejados de lado. Las transferencias HTTP también soportan varios intervalos, separados por comas como en X-Y,N-M.
CURLOPT_POSTFIELDS: Asigna una cadena que contiene todos los datos a ser enviados en una operación HTTP "POST".
CURLOPT_REFERER: Asigna una cadena que contiene el encabezado "referer" para ser usado en un requerimiento HTTP.
CURLOPT_USERAGENT: Asigna una cadena que contiene el encabezado "user-agent" para ser usado en un requerimiento HTTP.
CURLOPT_FTPPORT: Pasa una cadena que contiene el valor que será usado para obtener la dirección IP a usar en la instrucción "PORT" de ftp. La instrucción "POST" le indica al servidor remoto que se conecte a la dirección IP que le especificamos. La cadena puede ser una dirección IP, un nombre de Host, una interface de red (en UNIX), o simplemente un caracter '-' para usar la dirección IP por defecto del sistema.
CURLOPT_COOKIE: Asigna una cadena con el contenido de la cookie para ser incluida en el encabezado HTTP.
CURLOPT_SSLCERT: Asigna una cadena que contiene el nombre del archivo que guarda el certificado con formato PEM.
CURLOPT_SSLCERTPASSWD: Asigna una cadena que contiene la clave requerida para usar el certificado indicado en la opción CURLOPT_SSLCERT.
CURLOPT_COOKIEFILE: Asigna una cadena que contiene el nombre del archivo que guarda la información de las cookies. Este archivo puede estar en formato Netscape, o simplemente contener encabezados estilo HTTP.
CURLOPT_CUSTOMREQUEST: Asigna una cadena para ser usada en lugar de GET o HEAD cuando se realiza un requerimiento HTTP. Esto es útil para realizar DELETE ú otros requerimientos HTTP más oscuros.
Nota: No haga esto sin estar seguro de que su servidor soporta el comando especificado.
Las siguientes opciones esperan un descriptor de archivo que es obtenido por medio de la función fopen():
CURLOPT_FILE: El archivo donde debe ser grabada la salida generada por la transferencia. Por defecto es STDOUT.
CURLOPT_INFILE: El archivo desde el que se leen los datos para la transferencia.
CURLOPT_WRITEHEADER: El archivo donde deben ser grabados los encabezados de la salida de la transferencia.
CURLOPT_STDERR: El archivo donde deben ser grabados los errores, en lugar de stderr.