Php Suivi d'une redirection 302

patapon87

WRInaute passionné
Salut !

Pour un projet j'ai un certain nombre d'urls que je dois suivre et connaitre le statuts
Le problème est que parfois pour certaines URL qui ont une redirection 302 je n'arrive pas à détecter l'URL à suivre

Hors l'outil de webrankinfo https://www.webrankinfo.com/outils/header.php le fais très bien donc ça doit être possible :p

Pour l'instant j'utilise get_headers(), qui fonctionne dans 80% des cas : je récupère l'index numero 5 et j'ai mon URL à suivre. Mais dans certains cas c'est un autre numéro qu'il faut suivre

Est ce que vous avez une idée de comment je pourrais m'en sortir ?

Merci
 

spout

WRInaute accro
Je viens de tester et ça suit bien les multiples 302:
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><?</span><span class="syntaxdefault">php<br />$headers </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> get_headers</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'http://httpbin.org/relative-redirect/5'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">echo </span><span class="syntaxstring">'<pre>'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$headers</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">echo </span><span class="syntaxstring">'</pre>'</span><span class="syntaxkeyword">;<br />&nbsp;</span><span class="syntaxdefault"></span>

Code:
Array
(
    [0] => HTTP/1.1 302 FOUND
    [1] => Server: nginx
    [2] => Date: Wed, 22 Jul 2015 16:51:11 GMT
    [3] => Content-Type: text/html; charset=utf-8
    [4] => Content-Length: 0
    [5] => Connection: close
    [6] => Location: /relative-redirect/4
    [7] => Access-Control-Allow-Origin: *
    [8] => Access-Control-Allow-Credentials: true
    [9] => HTTP/1.1 302 FOUND
    [10] => Server: nginx
    [11] => Date: Wed, 22 Jul 2015 16:51:12 GMT
    [12] => Content-Type: text/html; charset=utf-8
    [13] => Content-Length: 0
    [14] => Connection: close
    [15] => Location: /relative-redirect/3
    [16] => Access-Control-Allow-Origin: *
    [17] => Access-Control-Allow-Credentials: true
    [18] => HTTP/1.1 302 FOUND
    [19] => Server: nginx
    [20] => Date: Wed, 22 Jul 2015 16:51:12 GMT
    [21] => Content-Type: text/html; charset=utf-8
    [22] => Content-Length: 0
    [23] => Connection: close
    [24] => Location: /relative-redirect/2
    [25] => Access-Control-Allow-Origin: *
    [26] => Access-Control-Allow-Credentials: true
    [27] => HTTP/1.1 302 FOUND
    [28] => Server: nginx
    [29] => Date: Wed, 22 Jul 2015 16:51:12 GMT
    [30] => Content-Type: text/html; charset=utf-8
    [31] => Content-Length: 0
    [32] => Connection: close
    [33] => Location: /relative-redirect/1
    [34] => Access-Control-Allow-Origin: *
    [35] => Access-Control-Allow-Credentials: true
    [36] => HTTP/1.1 302 FOUND
    [37] => Server: nginx
    [38] => Date: Wed, 22 Jul 2015 16:51:12 GMT
    [39] => Content-Type: text/html; charset=utf-8
    [40] => Content-Length: 0
    [41] => Connection: close
    [42] => Location: /get
    [43] => Access-Control-Allow-Origin: *
    [44] => Access-Control-Allow-Credentials: true
    [45] => HTTP/1.1 200 OK
    [46] => Server: nginx
    [47] => Date: Wed, 22 Jul 2015 16:51:13 GMT
    [48] => Content-Type: application/json
    [49] => Content-Length: 130
    [50] => Connection: close
    [51] => Access-Control-Allow-Origin: *
    [52] => Access-Control-Allow-Credentials: true
)

Si tu mets le paramètre format=1
Code:
Array
(
    [0] => HTTP/1.1 302 FOUND
    [Server] => Array
        (
            [0] => nginx
            [1] => nginx
            [2] => nginx
            [3] => nginx
            [4] => nginx
            [5] => nginx
        )

    [Date] => Array
        (
            [0] => Wed, 22 Jul 2015 16:54:55 GMT
            [1] => Wed, 22 Jul 2015 16:54:55 GMT
            [2] => Wed, 22 Jul 2015 16:54:55 GMT
            [3] => Wed, 22 Jul 2015 16:54:55 GMT
            [4] => Wed, 22 Jul 2015 16:54:56 GMT
            [5] => Wed, 22 Jul 2015 16:54:56 GMT
        )

    [Content-Type] => Array
        (
            [0] => text/html; charset=utf-8
            [1] => text/html; charset=utf-8
            [2] => text/html; charset=utf-8
            [3] => text/html; charset=utf-8
            [4] => text/html; charset=utf-8
            [5] => application/json
        )

    [Content-Length] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
            [3] => 0
            [4] => 0
            [5] => 130
        )

    [Connection] => Array
        (
            [0] => close
            [1] => close
            [2] => close
            [3] => close
            [4] => close
            [5] => close
        )

    [Location] => Array
        (
            [0] => /relative-redirect/4
            [1] => /relative-redirect/3
            [2] => /relative-redirect/2
            [3] => /relative-redirect/1
            [4] => /get
        )

    [Access-Control-Allow-Origin] => Array
        (
            [0] => *
            [1] => *
            [2] => *
            [3] => *
            [4] => *
            [5] => *
        )

    [Access-Control-Allow-Credentials] => Array
        (
            [0] => true
            [1] => true
            [2] => true
            [3] => true
            [4] => true
            [5] => true
        )

    [1] => HTTP/1.1 302 FOUND
    [2] => HTTP/1.1 302 FOUND
    [3] => HTTP/1.1 302 FOUND
    [4] => HTTP/1.1 302 FOUND
    [5] => HTTP/1.1 200 OK
)
 

patapon87

WRInaute passionné
Salut

Merci pour votre aide. Dans ton cas spout pour l'URL ca retourne

Code:
[6] => Location: /relative-redirect/4

Moi ca varie entre [6] et [5] donc je ne sais pas trop où chercher

Alors je suppose que je devrais mettre format=1 pour avoir quelque chose du format
Code:
 [Location] => Array
        (
            [0] => /relative-redirect/4
Et ne plus dépendre du numéro d'index.

MAIS je suis une grosse buse et je ne sais pas comment récupérer cette valeur
Lorsque je fais
Code:
$suivre = get_headers($url,1));
echo $suivre['Location'][0] ;

J'ai une erreur Notice: Undefined index: location
 

patapon87

WRInaute passionné
spout a dit:
Tu as inspecté le $headers['Location'] ? Ça donne quoi ?
Non mais c'est à devenir fou, j'ai dû le faire 10 fois et ca marchait pas et là je n'ai aucune idée du pourquoi mais ça tourne bien...

Merci spout et loubet
 

Discussions similaires

Haut