/** * Indique qu'il faut suivre les redirections, sauf si "safe_mode" ou "open_basedir", auquel cas on cherche "manuellement" l'adresse finale avec la méthode new_url(). * * @param void * @return string $new_url */ private function setopt_redirection() { curl_setopt($this->handle, CURLOPT_HEADER, FALSE); // FALSE pour ne pas inclure l'en-tête dans la valeur de retour. if( (!ini_get('safe_mode')) && (!ini_get('open_basedir')) ) { // Option CURLOPT_FOLLOWLOCATION sous conditions car certaines installations renvoient "CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set" (http://www.php.net/manual/fr/features.safe-mode.functions.php#92192) curl_setopt($this->handle, CURLOPT_FOLLOWLOCATION, TRUE); // TRUE pour suivre toutes les en-têtes "Location: " que le serveur envoie dans les en-têtes HTTP (notez que cette fonction est récursive et que PHP suivra toutes les en-têtes "Location: " qu'il trouvera à moins que CURLOPT_MAXREDIRS ne soit définie). curl_setopt($this->handle, CURLOPT_MAXREDIRS, $this->maxredirs); // Le nombre maximal de redirections HTTP à suivre. Utilisez cette option avec l'option CURLOPT_FOLLOWLOCATION. return $this->url; } else { // Solution de remplacement inspirée de http://fr.php.net/manual/fr/function.curl-setopt.php#102121 curl_setopt($this->handle, CURLOPT_FOLLOWLOCATION, FALSE); return cURL::new_url(); } }