Example #1
0
  /**
   * 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();
  }
}