Ce bug m'a donné des heures d'angoisse. Ceci est une version simplifiée de ce que je suis en train de faire:Aucun des cas ne correspond au résultat de get_headers()
[01] $h = get_headers($url, 1);
[02] $resp_code = $h[0];
[03] $resp_code = strtolower($resp_code);
[04] $resp_code = str_replace(' ','',$resp_code);
[05] echo 'just before going in. $resp_code = ' . $resp_code . '<br/>';
[06] switch ($resp_code) {
[07] case 'http/1.1200ok':
[08] echo '200';
[09] break;
[10] case 'http/1.0301movedpermanently':
[11] echo '301';
[12] break;
[13] case 'http/1.0302movedtemporarily':
[14] echo '302';
[15] break;
[16] case 'http/1.0404notfound':
[17] echo '404';
[18] }
[19] echo 'just got out.';
La sortie obtenue. essayer différentes URL, est différent, pour certaines urls cela fonctionne correctement et pour certains, il ne génère aucun code de réponse! Même si l'écho affiché à la ligne 5 indique que l'un des case
doit être entré, ce n'est pas le cas et la sortie suivante provient de la ligne 19.
Vous vous demandez peut-être pourquoi j'ai converti les codes de réponse à tous Les espaces inférieurs et dénudés ont été utilisés pour tenter d'éliminer les différences mineures entre les messages envoyés par différents serveurs. Je ne sais pas si cela pourrait arriver ou non, il a été fait juste au cas et hors de consternation :(
Pourrait-il être codage de caractères liés? Inflation/déflation? Un bug dans PHP? Un virus sur mon système?
Toute aide serait grandement appréciée.
get_headers a une faille voir: http://stackoverflow.com/questions/12781795/get-headers-inconsistency – Baba