2013-01-14 2 views
0

J'ai une URL d'affiliation Comme http://track.abc.com/?affid=1234 Ouvrir ce lien aller à http://www.abc.comCHAISE URL de CURL

maintenant je veux exécuter le http://track.abc.com/?affid=1234 En utilisant CURL et maintenant comment je peux obtenir http://www.abc.com avec Curl?

+0

utiliser juste CURLOPT_FOLLOWLOCATION et boucle continuera à la page redirigée – Svetoslav

Répondre

1

Si vous souhaitez cURL suivre rediriger les en-têtes des réponses qu'il reçoit, vous devez définir cette option avec:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

Vous pouvez également limiter le nombre de réoriente il suit en utilisant:

curl_setopt($ch, CURLOPT_MAXREDIRS, 3); 

donc vous devriez utiliser quelque chose comme ceci:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://track.abc.com/?affid=1234"); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 3); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$data = curl_exec($ch); 

Edit: question n'a pas été tout à fait claire, mais le commentaire ci-dessous, si vous voulez obtenir l'emplacement de redirection, vous avez besoin pour les en-têtes de cURL et les analyser pour l'en-tête Lieu:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://track.abc.com/?affid=1234"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, true); 
$data = curl_exec($ch); 

Cette volonté vous donne les en-têtes renvoyés par le serveur dans $ data, il suffit de les analyser pour obtenir l'en-tête de l'emplacement et vous obtiendrez votre résultat. This question vous montre comment faire cela.

+0

ce code donne des résultats de tout le code html de http://www.abc.com mais je veux stocker http://www.abc. com dans $ data –

-1

J'ai écrit une fonction qui va extraire tout en-tête d'une réponse d'en-tête cURL.

function getHeader($headerString, $key) { 
    preg_match('#\s\b' . $key . '\b:\s.*\s#', $headerString, $header); 
    return substr($header[0], strlen($key) + 3, -2); 
} 

Dans ce cas, vous êtes à la recherche de la valeur de l'en-tête Lieu. J'ai testé la fonction en récupérant des en-têtes à partir d'un TinyURL, qui redirige vers http://google.se, en utilisant cURL.

$url = "http://tinyurl.com/dtrkv"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$data = curl_exec($ch); 
curl_close($ch); 

$location = getHeader($data, 'Location'); 
var_dump($location); 

Sortie de var_dump.

string(16) "http://google.se"