{"id":231657,"date":"2022-12-26T13:02:00","date_gmt":"2022-12-26T10:02:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231657"},"modified":"2022-12-26T13:04:36","modified_gmt":"2022-12-26T10:04:36","slug":"curl-osoitteen-kaeyttaeminen-sen-maeaerittaemiseen-onko-maeaeritetty-url-osoite-kelvollinen-sivu","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/curl-osoitteen-kaeyttaeminen-sen-maeaerittaemiseen-onko-maeaeritetty-url-osoite-kelvollinen-sivu\/","title":{"rendered":"cURL-osoitteen k\u00e4ytt\u00e4minen sen m\u00e4\u00e4ritt\u00e4miseen, onko m\u00e4\u00e4ritetty URL-osoite kelvollinen sivu"},"content":{"rendered":"<p>Aiemmin t\u00e4ss\u00e4 kuussa kirjoitin <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/uudelleenohjauksen-maeaeraenpaeaen-loeytaeminen-php-n-avulla\/\" title=\"uudelleenohjauksen kohteen l\u00f6yt\u00e4misest\u00e4 PHP:n cURL:n avulla\">uudelleenohjauksen kohteen l\u00f6yt\u00e4misest\u00e4 PHP:n cURL:n avulla<\/a>. T\u00e4m\u00e4 voi olla hy\u00f6dyllinen toiminto, kun:<\/p>\n<ul>\n<li>tied\u00e4t, ett\u00e4 URL-osoitteet, joiden kanssa olet tekemisiss\u00e4, ohjaavat uudelleen,<\/li>\n<li>tied\u00e4t, ett\u00e4 uudelleenohjausten m\u00e4\u00e4r\u00e4 rajoitetaan yhteen.<\/li>\n<\/ul>\n<p>My\u00f6nnett\u00e4k\u00f6\u00f6n, ett\u00e4 j\u00e4lkimm\u00e4isess\u00e4 tapauksessa siit\u00e4 tulee vaikeampaa, koska esimerkiksi Twitterin kaltaisilla sivustoilla on useita uudelleenohjauksia ennen kuin p\u00e4\u00e4set m\u00e4\u00e4r\u00e4np\u00e4\u00e4h\u00e4n.<\/p>\n<p>Mutta se on toisen postauksen aihe (ellet vain halua toteuttaa rekursiivista tai iteratiivista tapaa k\u00e4sitell\u00e4 pyynt\u00f6j\u00e4, kunnes l\u00f6yd\u00e4t lopullisen m\u00e4\u00e4r\u00e4np\u00e4\u00e4n).<\/p>\n<p>Joka tapauksessa on toinen asia, joka voi my\u00f6s olla hy\u00f6dyllinen, kun ty\u00f6skentelet uudelleenohjausten ja cURL-osoitteen kanssa, ja se m\u00e4\u00e4ritt\u00e4\u00e4, viek\u00f6 m\u00e4\u00e4ritetty URL-osoite kelvolliselle sivulle.<\/p>\n<h2>Onko m\u00e4\u00e4ritetty URL-osoite kelvollinen sivu?<\/h2>\n<p>T\u00e4m\u00e4n viestin koodi ei ole t\u00e4ysin erilainen kuin mit\u00e4 olet ehk\u00e4 n\u00e4hnyt aiemmissa viesteiss\u00e4; t\u00e4rkeimm\u00e4t asiat, jotka aiomme tehd\u00e4, ovat kuitenkin seuraavat:<\/p>\n<ul>\n<li>alusta cURL meille antamallamme URL-osoitteella,<\/li>\n<li>aseta CUROPT_RETURNTRANSFER arvoksi tosi (joka palauttaa siirron arvon merkkijonona),<\/li>\n<li>ja arvioi sitten pyynn\u00f6st\u00e4 palautettu HTTP-tilakoodi.<\/li>\n<\/ul>\n<p>Voit lukea kaiken <a href=\"https:\/\/httpstatuses.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4n sivuston<\/a> koodeista, mutta kaksi, joista olemme eniten huolissamme, ainakin t\u00e4m\u00e4n viestin osalta, ovat 404 ja 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=\"cURL-osoitteen k\u00e4ytt\u00e4minen sen m\u00e4\u00e4ritt\u00e4miseen, onko m\u00e4\u00e4ritetty URL-osoite kelvollinen sivu\"><\/a><\/p>\n<p>Joten ensin <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ad96af9aa3007807686ac87b630dcd7\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koodi:<\/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>Ja n\u00e4in se toimii:<\/p>\n<ol>\n<li>funktio hyv\u00e4ksyy URL-osoitteen argumenttina,<\/li>\n<li>alustamme cURL:n oikeilla asetuksilla ja suoritamme sitten pyynn\u00f6n,<\/li>\n<li>luemme vastauksesta tallennetun tilakoodin arvon,<\/li>\n<li>suljemme cURL-kahvan ja palautamme sitten tilakoodin arvioinnin.<\/li>\n<\/ol>\n<p>Se n\u00e4ytt\u00e4\u00e4 riitt\u00e4v\u00e4n yksinkertaiselta, eik\u00f6?<\/p>\n<p>Ja yleisesti ottaen on. Sinun on ehk\u00e4 s\u00e4\u00e4dett\u00e4v\u00e4 itse tilakoodiasi tai haluat ehk\u00e4 j\u00e4sent\u00e4\u00e4 tiedot vastauksesta. T\u00e4m\u00e4 voidaan tehd\u00e4 j\u00e4sent\u00e4m\u00e4ll\u00e4 merkkijono, k\u00e4ytt\u00e4m\u00e4ll\u00e4 s\u00e4\u00e4nn\u00f6llisi\u00e4 lausekkeita tai muuta. Mutta se ei kuulu t\u00e4m\u00e4n postauksen piiriin.<\/p>\n<p>V\u00e4hint\u00e4\u00e4nkin t\u00e4m\u00e4 kertoo, onko URL-osoite, jolle sinut ohjataan, kelvollinen sivu vai ei.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Toinen asia, josta on hy\u00f6ty\u00e4, kun ty\u00f6skentelet uudelleenohjausten ja cURL-osoitteen kanssa: sen m\u00e4\u00e4ritt\u00e4minen, viek\u00f6 m\u00e4\u00e4ritetty URL-osoite kelvolliselle sivulle.<\/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":[719,895,834,843,803,864],"tags":[1166],"class_list":["post-231657","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opas-aloittelijoille","category-opetusohjelmia","category-php-5","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=231657"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231657\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/236354"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}