IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupérer avec cURL, l'entier d'une URL redirigée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut Récupérer avec cURL, l'entier d'une URL redirigée
    Bonjour,

    J'essaye de récupérer l'url suite à une redirection, j'ai donc trouvé un bout de script qui le fait très bien..
    par contre, et pour certaine adresse, il indique la page de destination et plus l'url complète

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
    $url ="http://www.regeco.fr";  // va m'afficher home_news.aspx en lieu et place de http://www.regeco.fr/home_news.aspx
     
    //$url="http://www.regiepublicitaire.fr";  // new url = http://www.libbre.fr  OK
    //$url="http://www.ne.ch"; // new url = http://www.ne.ch/Pages/accueil.aspx OK
     
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $a = curl_exec($ch);
    curl_close( $ch ); 
    // the returned headers
    $headers = explode("\n",$a);
    // if there is no redirection this will be the final url
    $redir = $url;
    // loop through the headers and check for a Location: str
    $j = count($headers);
    for($i = 0; $i < $j; $i++){
    // if we find the Location header strip it and fill the redir var       
    if(strpos($headers[$i],"Location:") !== false){
            $redir = trim(str_replace("Location:","",$headers[$i]));
            break;
        }
    }
    // do whatever you want with the result
    echo $redir;
    D'avance merci pour votre aide
    Cordialement
    Yule

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ou vois-tu l'url ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut
    Désolé mais c'est quoi qui n'est pas compris que j'etaye un peu mieux ?

    Avez-vous essayé l'exemple ci dessus pour constater que la redirection n'affiche pas toujours l'url dans son entier, alors qu'elle le devrait non ?

  4. #4
    Membre éclairé
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Par défaut
    Hello,

    C'est tout bon, j'ai trouvé.
    Donc si ça intéresse...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    $url = "http://www.regeco.fr/";  // new url = http://www.regeco.fr/home_news.aspx  OK (anciennement juste : home_news.aspx)
    //$url="http://www.parachutisme-vendee.com";  // new url = http://www.parachutisme-vendee.com/index.php  OK (anciennement juste : /index.php)
     
    $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url); //set url
        curl_setopt($ch, CURLOPT_HEADER, true); //get header
        curl_setopt($ch, CURLOPT_NOBODY, true); //do not include response body
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //do not show in browser the response
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //follow any redirects
        curl_exec($ch);
        $new_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); //extract the url from the header response
        curl_close($ch);
     
    echo"$new_url";
    ?>
    Cordialement
    Yule

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Récupérer la valeur s'affichant dans une url
    Par boubout dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 02/03/2010, 22h32
  2. [PHP 5.2] impossible de récupérer en GET le paramètre d'une URL
    Par dreamcat1 dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2010, 19h57
  3. Réponses: 2
    Dernier message: 11/09/2008, 21h35
  4. [ java.net ] récupérer un fichier PDF à partir d'une URL
    Par nico2280 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2005, 11h09
  5. [HTTP] Comment récupérer l'adresse de base d'une URL ?
    Par eric30eric dans le forum Web & réseau
    Réponses: 2
    Dernier message: 02/10/2005, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo