====== 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");