{"id":231097,"date":"2022-12-26T13:18:00","date_gmt":"2022-12-26T10:18:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231097"},"modified":"2022-12-26T13:18:41","modified_gmt":"2022-12-26T10:18:41","slug":"curl-i-kasutamine-et-teha-kindlaks-kas-maeaeratud-url-on-kehtiv-leht","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/curl-i-kasutamine-et-teha-kindlaks-kas-maeaeratud-url-on-kehtiv-leht\/","title":{"rendered":"cURL-i kasutamine, et teha kindlaks, kas m\u00e4\u00e4ratud URL on kehtiv leht"},"content":{"rendered":"\n<p>Selle kuu alguses kirjutasin <a href=\"https:\/\/wordpress.mediadoma.com\/et\/uembersuunamise-sihtkoha-leidmine-php-ga\/\" title=\"\u00fcmbersuunamise sihtkoha leidmisest PHP-s cURL-i abil\">\u00fcmbersuunamise sihtkoha leidmisest PHP-s cURL-i abil<\/a>. See funktsioon v\u00f5ib olla kasulik, kui kasutada:<\/p>\n<ul>\n<li>teate, et URL-id, millega tegelete, suunavad \u00fcmber,<\/li>\n<li>teate, et \u00fcmbersuunamiste arv on piiratud \u00fchega.<\/li>\n<\/ul>\n<p>T\u00f5si, viimasel juhul muutub see keerulisemaks, kuna saitidel, nagu n\u00e4iteks Twitter, on enne sihtkohta j\u00f5udmist mitu \u00fcmbersuunamist.<\/p>\n<p>Kuid see on m\u00f5ne teise postituse teema (v\u00e4lja arvatud juhul, kui soovite rakendada rekursiivset v\u00f5i iteratiivset viisi p\u00e4ringute l\u00e4bimiseks, kuni leiate l\u00f5ppsihtkoha).<\/p>\n<p>Igatahes on veel \u00fcks asi, mis v\u00f5ib olla kasulik alati, kui t\u00f6\u00f6tate \u00fcmbersuunamiste ja cURL-iga, ning see m\u00e4\u00e4rab, kas m\u00e4\u00e4ratud URL viib teid kehtivale lehele.<\/p>\n<h2>Kas m\u00e4\u00e4ratud URL on kehtiv leht?<\/h2>\n<p>Selles postituses olev kood ei erine t\u00e4ielikult sellest, mida olete n\u00e4inud eelmistes postitustes; aga peamised asjad, mida me tegema hakkame, on j\u00e4rgmised:<\/p>\n<ul>\n<li>l\u00e4htestage cURL meile antud URL-iga,<\/li>\n<li>m\u00e4\u00e4rake CUROPT_RETURNTRANSFER v\u00e4\u00e4rtuseks t\u00f5ene (mis tagastab \u00fclekande v\u00e4\u00e4rtuse stringina),<\/li>\n<li>ja seej\u00e4rel hinnake p\u00e4ringust tagastatud HTTP olekukoodi.<\/li>\n<\/ul>\n<p>Saate lugeda k\u00f5ike <a href=\"https:\/\/httpstatuses.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sellel saidil<\/a> olevate koodide kohta, kuid kaks, mille p\u00e4rast me v\u00e4hemalt selle postituse puhul k\u00f5ige rohkem muretseme, on 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-i kasutamine, et teha kindlaks, kas m\u00e4\u00e4ratud URL on kehtiv leht\"><\/a><\/p>\n<p>Niisiis, esiteks <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ad96af9aa3007807686ac87b630dcd7\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kood:<\/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 see toimib j\u00e4rgmiselt:<\/p>\n<ol>\n<li>funktsioon aktsepteerib argumendina URL-i,<\/li>\n<li>l\u00e4htestame cURL-i \u00f5igete s\u00e4tetega ja seej\u00e4rel t\u00e4idame p\u00e4ringu,<\/li>\n<li>loeme vastusest salvestatud olekukoodi v\u00e4\u00e4rtuse,<\/li>\n<li>sulgeme cURL-i k\u00e4epideme ja tagastame seej\u00e4rel olekukoodi hinnangu.<\/li>\n<\/ol>\n<p>Tundub piisavalt lihtne, kas pole?<\/p>\n<p>Ja \u00fcldiselt on. V\u00f5imalik, et peate oma olekukoodi ise pisut kohandama v\u00f5i soovite vastusest teavet s\u00f5eluda. Seda saab teha stringi s\u00f5elumise, regulaaravaldiste v\u00f5i muu abil. Kuid see ei kuulu selle postituse ulatusse.<\/p>\n<p>See annab minimaalselt teada, kas URL, kuhu teid suunatakse, on kehtiv leht v\u00f5i mitte.<\/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>On veel \u00fcks asi, mis on kasulik alati, kui t\u00f6\u00f6tate \u00fcmbersuunamiste ja cURL-iga: selle kindlaksm\u00e4\u00e4ramine, kas m\u00e4\u00e4ratud URL viib teid kehtivale lehele.<\/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":[718,833,894,842,802,863],"tags":[1165],"class_list":["post-231097","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-juhend-algajatele","category-kood","category-opetused","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231097"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231097\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236354"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}