La funzione curl_setopt() imposterà le opzioni per una sessione CURL identificata dal parametro ch. il parametro opzione è l'opzione che si vuole impostare e valore è il valore dell'opzione data da opzione.
Il valore dovrebbe essere di tipo long per le seguenti opzioni (specificato nel parametro opzione):
CURLOPT_INFILESIZE: Quando si carica un file su un server remoto, questa opzione dovrebbe essere usata per dire a PHP quale dimensione attendersi dal file in arrivo.
CURLOPT_VERBOSE: Impostare questa opzione a un valore diverso da zero se si vuole che CURL to segnali tutto quello che sta avvenendo.
CURLOPT_HEADER: Impostare questa opzione a un valore diverso da zero se si vuole che gli header vengano inclusi nell'output.
CURLOPT_NOPROGRESS: Impostare questa opzione a un valore diverso da zero se non si vuole che PHP mostri l'indicazione di avanzamento nei trasferimenti CURL.
Nota: PHP imposta automaticamente questa opzione a un valore non-zero, esso dovrebbe essere cambiato solo per eseguire il debug.
CURLOPT_NOBODY: Impostare questa opzione a un valore diverso da zero se non si desidera l'inclusione del body nell'output.
CURLOPT_FAILONERROR: Impostare questa opzione a un valore diverso da zero se si vuole che PHP termini senza generare messaggi se il codice HTTP restituito è maggiore di 300. Il comportamento di default è di restituire la pagina comunque, ignorando la presenza del codice.
CURLOPT_UPLOAD: Impostare questa opzione a un valore diverso da zero se si vuole che PHP si prepari per un upload.
CURLOPT_POST: Impostare questa opzione a un valore diverso da zero se si vuole che PHP esegua un comune HTTP POST. Questo POST è di tipo application/x-www-form-urlencoded, molto spesso usato nei form HTML.
CURLOPT_FTPLISTONLY: Impostare questa opzione a un valore diverso da zero e PHP semplicemente elencherà i nomi in una directory FTP.
CURLOPT_FTPAPPEND: Impostare questa opzione a un valore diverso da zero e PHP accoderà l'output al file remoto invece di sovrascrivere.
CURLOPT_NETRC: Impostare questa opzione a un valore diverso da zero e PHP leggerà il vostro file ~./netrc al fine di trovare username e password per il server remoto verso il quale si sta eseguendo la connessione.
CURLOPT_FOLLOWLOCATION: Impostare questa opzione a un valore diverso da zero per seguire ogni header "Location: " che il server dovesse inviare come parte degli header HTTP (si noti che questo è ricorsivo, PHP seguirà tutti gli header "Location: " che dovessero essere inviati.)
CURLOPT_PUT: Impostare questa opzione a un valore diverso da zero per eseguire un HTTP PUT su un file. Il file su cui eseguire PUT deve essere impostato con CURLOPT_INFILE e CURLOPT_INFILESIZE.
CURLOPT_MUTE: Impostare questa opzione a un valore diverso da zero e PHP resterà silenzioso riguardo alle funzioni CURL.
CURLOPT_TIMEOUT: Passa un tipo di dato long come parametro che contiene il tempo massimo, in secondi, che si è disposti a concedere alle funzioni CURL.
CURLOPT_LOW_SPEED_LIMIT: Passa un tipo di dato long come parametro contenente la velocità di trasferimento espressa in byte al secondo, velocità al di sotto della quale il trasferimento dovrà rimanere per CURLOPT_LOW_SPEED_TIME secondi affinché PHP lo consideri troppo lento e lo termini.
CURLOPT_LOW_SPEED_TIME: Passa un tipo di dato long come parametro che contiene il tempo in secondi che il trasferimento dovrà rimanere al di sotto del valore CURLOPT_LOW_SPEED_LIMIT affinché PHP lo consideri troppo lento e lo termini.
CURLOPT_RESUME_FROM: Passa un tipo di dato long come parametro che contiene l'offset, in byte, dal quale partire per effettuare il trasferimento.
CURLOPT_SSLVERSION: Passa un tipo di dato long come parametro che contiene la versione SSL (2 o 3) da usare. Di default PHP cercherà di determinare questo dato sè, ciononostante, in alcuni casi andrà impostato manualmente.
CURLOPT_SSL_VERIFYHOST: Passa un tipo di dato long se CURL deve verificare il common name del peer certificate durante l'handshake SSL. Un valore di 1 denota che si deve cercare l'esistenza del common name, un valore di 2 denota che dovremo assicurarci che corrisponda all'hostname fornito.
CURLOPT_TIMECONDITION: Passa un tipo di dato long come parametro che che definisce come trattare CURLOPT_TIMEVALUE. Si può impostare questo parametro a TIMECOND_IFMODSINCE o TIMECOND_ISUNMODSINCE. Questa è una caratteristica del solo HTTP.
CURLOPT_TIMEVALUE: Passa un tipo di dato long come parametro che rappresenta il tempo espresso in secondi trascorsi dal 1 Gennaio 1970. Il tempo verrà usato come specificato dall'opzione CURLOPT_TIMEVALUE o di default verrà usato TIMECOND_IFMODSINCE.
CURLOPT_RETURNTRANSFER: Passa un valore diverso da zero se si desidera che CURL restituisca direttamente il trasferimento invece di stamparlo.
il parametro valole deve essere una stringa per i seguenti valori del parametro opzione:
CURLOPT_URL: Questo è l'URL che si desidera far salvare da PHP. Si può anche impostare questa opzione quando si inizializza una sessione con la funzione curl_init().
CURLOPT_USERPWD: Passa una stringa formattata come [username]:[password], che sarà usata da PHP per la connessione.
CURLOPT_PROXYUSERPWD: Passa una stringa formattata come [username]:[password], per la connessione al proxy HTTP.
CURLOPT_RANGE: Passa il range richiesto. Deve essere nel formato "X-Y", dove X o Y possono essere omessi. I trasferimenti HTTP supportano anche intervalli multipli, separati da virgole come in X-Y,N-M.
CURLOPT_POSTFIELDS: Passa una stringa contenente tutti i dati da inviare durante una richiesta HTTP "POST".
CURLOPT_REFERER: Passa una stringa contenente l'header "referer" che verrà usato in una richiesta HTTP.
CURLOPT_USERAGENT: Passa una stringa contenente l'header "user-agent" che sarà usato nella richiesta HTTP.
CURLOPT_FTPPORT: Passa una stringa contenente il valore che verrà usato per ottenere l'indirizzo IP da usarsi per l'istruzione "POST" dell'ftp. L'istruzione POST dice al server remoto di collegarsi al nostro indirizzo IP specificato. La stringa può essere un semplice indirizzo IP, un hostname, il nome di una interfaccia di rete (sotto UNIX) o semplicemente un '-' per indicare di usare l'indirizzo IP di default del sistema.
CURLOPT_COOKIE: Passa una stringa contenente il contenuto del cookie da impostare nell'header HTTP.
CURLOPT_SSLCERT: Passa una stringa contenente il filename del certificato formattato secondo PEM.
CURLOPT_SSLCERTPASSWD: Passa una stringa contenente la password richiesta per usare il certificato CURLOPT_SSLCERT.
CURLOPT_COOKIEFILE: Passa una stringa contenente il nome del file contenente i dati relativi al cookie. Il file del cookie può essere in formato Netscape o semplicemente un dump degli header in stile HTTP.
CURLOPT_CUSTOMREQUEST: Passa una stringa da usare al posto di GET o HEAD nell'effettuare una richiesta HTTP. Questo è utile per effettuare un DELETE o altre, più oscure richieste HTTP. Valori validi sono cose del tipo GET, POST e così via; per esempio non inserire qui una richiesta HTTP intera. Per esempio, inserire 'GET /index.html HTTP/1.0\r\n\r\n' sarebbe sbagliato.
Nota: Non eseguire se non si è sicuri che il proprio server supporti il comando.
CURLOPT_PROXY: Indica il nome del server proxy HTTP attraverso il quale inviare le richieste.
CURLOPT_INTERFACE: Passa il nome dell'interfaccia di rete da usare in uscita. Questo può essere il nome di un'interfaccia, un indirizzo IP o un nome di host.
CURLOPT_KRB4LEVEL: Passa il security level KRB4 (Kerberos 4). Ognuna delle seguenti stringhe (in ordine dalla meno alla più potente): 'clear', 'safe', 'confidential', 'private'. Se la stringa inviata non corrisponde a nessuna di queste, verrà usata 'private'. Se si imposta a NULL, la security KRB4 verrà disabilitata. La security KRB4, al momento, funziona solamente con le transazioni FTP.
CURLOPT_HTTPHEADER: Passa un array di campi header HTTP da impostare.
CURLOPT_QUOTE: Passa un array di comandi FTP da eseguire sul server, prima della richiesta FTP.
CURLOPT_POSTQUOTE: Passa un array di comandi FTP da eseguire sul server, dopo che la richiesta FTP è stata eseguita.
Le opzioni seguenti richiedono un descrittore a file che è ottenuto usando la funzione fopen():
CURLOPT_FILE: Il file dove mettere l'output del trasferimento, di default è STDOUT.
CURLOPT_INFILE: Il file da cui proviene l'input del trasferimento.
CURLOPT_WRITEHEADER: Il file sul quale scrivere la parte di output contenente gli header.
CURLOPT_STDERR: Il file sul quale scrivere gli errori invece di stderr.