{"id":231552,"date":"2022-12-26T13:44:00","date_gmt":"2022-12-26T10:44:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231552"},"modified":"2022-12-26T13:44:40","modified_gmt":"2022-12-26T10:44:40","slug":"utilisation-de-curl-pour-determiner-si-lurl-specifiee-est-une-page-valide","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/utilisation-de-curl-pour-determiner-si-lurl-specifiee-est-une-page-valide\/","title":{"rendered":"Utilisation de cURL pour d\u00e9terminer si l&rsquo;URL sp\u00e9cifi\u00e9e est une page valide"},"content":{"rendered":"\n<p>Plus t\u00f4t ce mois-ci, j&rsquo;ai \u00e9crit sur la recherche de la <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/trouver-la-destination-dune-redirection-avec-php\/\" title=\"destination d'une redirection \u00e0 l'aide de cURL en PHP\">destination d&rsquo;une redirection \u00e0 l&rsquo;aide de cURL en PHP<\/a>. Cela peut \u00eatre une fonction utile \u00e0 utiliser chaque fois que\u00a0:<\/p>\n<ul>\n<li>vous connaissez les URL avec lesquelles vous traitez qui vont rediriger,<\/li>\n<li>vous savez que le nombre de redirections sera limit\u00e9 \u00e0 une.<\/li>\n<\/ul>\n<p>Certes, dans ce dernier cas, cela devient plus difficile car des sites comme, par exemple, Twitter, ont plusieurs redirections avant d&rsquo;arriver \u00e0 destination.<\/p>\n<p>Mais c&rsquo;est un sujet pour un autre article (sauf si vous souhaitez simplement impl\u00e9menter une mani\u00e8re r\u00e9cursive ou it\u00e9rative de traiter les demandes jusqu&rsquo;\u00e0 ce que vous trouviez la destination finale).<\/p>\n<p>Quoi qu&rsquo;il en soit, il y a une autre chose qui peut \u00e9galement \u00eatre utile lorsque vous travaillez avec des redirections et avec cURL, et c&rsquo;est de d\u00e9terminer si l&rsquo;URL sp\u00e9cifi\u00e9e vous am\u00e8ne \u00e0 une page valide.<\/p>\n<h2>L&rsquo;URL sp\u00e9cifi\u00e9e est-elle une page valide\u00a0?<\/h2>\n<p>Le code de cet article ne sera pas tout \u00e0 fait diff\u00e9rent de ce que vous avez pu voir dans les articles pr\u00e9c\u00e9dents\u00a0; cependant, les principales choses que nous allons faire sont les suivantes\u00a0:<\/p>\n<ul>\n<li>initialiser cURL avec l&rsquo;URL qui nous a \u00e9t\u00e9 fournie,<\/li>\n<li>d\u00e9finir la valeur CUROPT_RETURNTRANSFER sur true (qui renvoie la valeur du transfert sous forme de cha\u00eene),<\/li>\n<li>puis \u00e9valuez le code d&rsquo;\u00e9tat HTTP renvoy\u00e9 par la requ\u00eate.<\/li>\n<\/ul>\n<p>Vous pouvez tout lire sur les codes sur <a href=\"https:\/\/httpstatuses.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ce site,<\/a> mais les deux qui nous pr\u00e9occupent le plus, du moins pour cet article, sont 404 et 200.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159997-61e70253043e6.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159997-61e70253043e6.png\" alt=\"Utilisation de cURL pour d\u00e9terminer si l&#039;URL sp\u00e9cifi\u00e9e est une page valide\"><\/a><\/p>\n<p>Alors, d&rsquo;abord, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ad96af9aa3007807686ac87b630dcd7\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le code:<\/a><\/p>\n<pre><code>&lt;?php\n\/**\n * Determines if a specific URL returns a valid page. This is experimental and it is based on\n * the status code.\n *\n * @param string $url the url to evaluate\n *\n * @return bool true if the URL returns a status code of 404; otherwise, false\n *\/\npublic function isValidUrl(string $url): bool\n{\n    $curl = curl_init($url);\n\n    curl_setopt($curl, CURLOPT_URL, $url);\n    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);\n\n    $response = curl_exec($curl);\n\n    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);\n    curl_close($curl);\n\n    return (404 !== $httpCode);\n}<\/code><\/pre>\n<p>Et voici comment cela fonctionne\u00a0:<\/p>\n<ol>\n<li>la fonction accepte une URL en argument,<\/li>\n<li>nous initialisons cURL avec les param\u00e8tres appropri\u00e9s, puis nous ex\u00e9cutons la requ\u00eate,<\/li>\n<li>nous lisons la valeur du code d&rsquo;\u00e9tat stock\u00e9 \u00e0 partir de la r\u00e9ponse,<\/li>\n<li>nous fermons le handle cURL puis renvoyons l&rsquo;\u00e9valuation du code d&rsquo;\u00e9tat.<\/li>\n<\/ol>\n<p>Cela semble assez simple, n&rsquo;est-ce pas ?<\/p>\n<p>Et, en g\u00e9n\u00e9ral, \u00e7a l&rsquo;est. Vous devrez peut-\u00eatre faire quelques ajustements par vous-m\u00eame pour votre code d&rsquo;\u00e9tat, ou vous voudrez peut-\u00eatre analyser les informations de la r\u00e9ponse. Cela peut \u00eatre fait en analysant la cha\u00eene, en utilisant des expressions r\u00e9guli\u00e8res, ou plus. Mais cela d\u00e9passe le cadre de cet article.<\/p>\n<p>Au strict minimum, cela vous indiquera si l&rsquo;URL vers laquelle vous \u00eates redirig\u00e9 est une page valide ou non.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a une autre chose qui est utile lorsque vous travaillez avec des redirections et avec cURL\u00a0: d\u00e9terminer si l&rsquo;URL sp\u00e9cifi\u00e9e vous am\u00e8ne \u00e0 une page valide.<\/p>\n","protected":false},"author":1,"featured_media":236354,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,832,801,841,862],"tags":[1167],"class_list":["post-231552","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=231552"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231552\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/236354"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}