====== Oltrepassare autenticazione http tramite php-libcurl ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//01/12/2008//** \\ \\
Spesso si puo' avere l'esigenza di creare uno script php che compia determinate operazioni su di una pagina protetta da //autenticazione http// (per intenderci la finestrella del browser che ci chiede nome utente e password).
===== Risorse in rete =====
* http://curl.haxx.se/libcurl/
* http://blog.taragana.com/index.php/archive/how-to-use-curl-in-php-for-authentication-and-ssl-communication/it/
===== Dipendenze =====
* Apache;
* PHP >=4;
* wrapper php per libcurl (su debian/ubuntu il pacchetto si chiama **php5-curl**);
===== La funzione che permette di fare il login =====
function auth($base_url, $user,$pass)
{
// Il solito - init curl uno sessione e impostare la url
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $base_url);
// Imposta il login e la password per l autenticazione
curl_setopt ($ch, CURLOPT_USERPWD, $user.":".$pass);
// È possibile utilizzare CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE,
// CURLAUTH_NTLM, CURLAUTH_ANY, and CURLAUTH_ANYSAFE / / CURLAUTH_NTLM, CURLAUTH_ANY, e CURLAUTH_ANYSAFE
// È possibile utilizzare il bit | (o) operatore di combinare più di un metodo.
// CURLAUTH_ANY è un alias per CURLAUTH_BASIC | CURLAUTH_DIGEST |
// CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM / / CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM
// CURLAUTH_ANYSAFE è un alias per CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM
// Se non si e' sicuri utilizzare CURLAUTH_ANY in quanto copre tutti i casi
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Questo è talvolta necessario per fermare CURL dal verificare i certificati.
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Opzionale: Torna il risultato invece di stamparlo, e quindi non fa vedere nulla della pagina
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Ottiene i risultati e chiude la sessione
$data = curl_exec($ch);
curl_close($ch);
//Ci porta alla pagina oltre l'autenticazione
@header('Location: '.$base_url);
}
===== Utilizzo della funzione =====
auth("http://server/indirizzo-pagina-autenticazione.php","TUOUTENTE","TUAPASSWORD");