{"id":231011,"date":"2022-12-24T18:16:00","date_gmt":"2022-12-24T15:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231011"},"modified":"2022-12-07T11:02:02","modified_gmt":"2022-12-07T08:02:02","slug":"uembersuunamise-sihtkoha-leidmine-php-ga","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/uembersuunamise-sihtkoha-leidmine-php-ga\/","title":{"rendered":"\u00dcmbersuunamise sihtkoha leidmine PHP-ga"},"content":{"rendered":"\n<p>Hiljuti t\u00f6\u00f6tasin projekti kallal, mis suhtles kolmanda osapoole API-ga, mis nagu paljud API-d saadab tagasi palju andmeid, millest osa sisaldab API-ga seotud toote URL-i.<\/p>\n<p>Tagastatud API asi ei olnud \u00f5ige sihtkoha URL. Selle asemel oli see URL, mis l\u00f5puks suunati \u00fcmber teisele URL-ile.<\/p>\n<p>Kujutage ette, et l\u00f6\u00f6te n\u00e4iteks <strong>saidile acme.site-info.com<\/strong> ja suunate selle otse aadressile <strong>acme.com<\/strong>. Teeme seda kogu aeg k\u00e4sitsi, kuid mul oli vaja URL-ist saada otsene tegelik v\u00f5i l\u00f5plik sihtkoht.<\/p>\n<p>Ja PHP-ga \u00fcmbersuunamise sihtkoha leidmine on lihtne; see aga eeldab, et on ainult \u00fcks \u00fcmbersuunamine.<\/p>\n<p>Sellegipoolest on siin, kuidas seda teha.<\/p>\n<p>Pange t\u00e4hele, et j\u00e4rgmine eeldus eeldab, et olete <a href=\"https:\/\/curl.haxx.se\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cURL<\/a> -iga tuttav .<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160277-61e708790bd4a.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-160277-61e708790bd4a.png\" alt=\"\u00dcmbersuunamise sihtkoha leidmine PHP-ga\" ><\/a><\/p>\n<p>Ja kui ei, siis on funktsiooni kasutamine piisavalt lihtne.<\/p>\n<blockquote>\n<p>curl kasutatakse k\u00e4suridades v\u00f5i skriptides andmete edastamiseks. Seda kasutatakse ka autodes, telerites, ruuterites, printerites, heliseadmetes, mobiiltelefonides, tahvelarvutites, digiboksides, meediumipleierites ning see on Interneti-edastuse tugisammas tuhandetele tarkvararakendustele, mis m\u00f5jutavad iga p\u00e4ev miljardeid inimesi.<\/p>\n<\/blockquote>\n<p>Lisaks on PHP juhendis selle kohta palju teavet <a href=\"https:\/\/www.php.net\/manual\/en\/book.curl.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">, mida saate<\/a> vastavalt vajadusele lugeda (ja t\u00f5en\u00e4oliselt vajate seda ka tulevikus).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160277-61e7087de6a45.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-160277-61e7087de6a45.png\" alt=\"\u00dcmbersuunamise sihtkoha leidmine PHP-ga\" ><\/a><\/p>\n<p>Igatahes, siin on kood koos v\u00e4ikese selgitusega <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1e9882520588a5d8ee8948050ce48d69\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00e4rast koodi<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Determines the destination URL of a provided URL that gives a redirect.\n *\n * @param string $url the specified URL provided by the API.\n * @return string $url the destination of the specified URL.\n *\/\nprivate function getDestinationUrl($url)\n{\n  $ch = curl_init();\n\n  curl_setopt($ch, CURLOPT_URL, $url);\n  curl_setopt($ch, CURLOPT_HEADER, true);\n  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);\n  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\n  \/\/ Read the headers as provided by cURL.\n  $headers = curl_exec($ch);\n  $url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);\n\n  \/\/ We only need the domain so just read the first part.\n  $url = explode('\/', $url);\n  $url = $url[0];\n\n  return $url;\n}<\/code><\/pre>\n<p>Funktsioon teeb j\u00e4rgmist:<\/p>\n<ol>\n<li>aktsepteerib API pakutavat URL-i,<\/li>\n<li>otsib p\u00e4ringu p\u00e4ised URL-ile, kasutades cURL-i,<\/li>\n<li>pakub p\u00e4iseid, mida saame lugeda ja haarata URL-i<\/li>\n<\/ol>\n<p>Pange t\u00e4hele ka seda, et eraldan URL-i kaldkriipsu alusel, et saaksin lugeda ainult domeeni, kuna ma ei muretse millegi p\u00e4rast p\u00e4rast p\u00f5hidomeeni (see t\u00e4hendab, et kui domeenil on <strong>indeks<\/strong>. <strong>php<\/strong> laiend, <strong>vaikimisi.<em><\/em><\/strong> aspx<em><\/em> laiendus jne), siis saan seda vastavalt vajadusele oma t\u00f6\u00f6s kasutada.<\/p>\n<p>Teiseks pange t\u00e4hele, et ma ei tea, kas see toimib rohkem kui \u00fche h\u00fcppe puhul. Nii et kui teil on mitu \u00fcmbersuunamist, v\u00f5ite seda funktsiooni mitu korda korrata. Ma ei tea, aga ma arvasin, et see on mainimist v\u00e4\u00e4rt.<\/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>See lahendus PHP-ga \u00fcmbersuunamise sihtkoha leidmiseks on lihtne, kuid eeldab \u00fchte \u00fcmbersuunamist.<\/p>\n","protected":false},"author":1,"featured_media":235285,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,802],"tags":[1165],"class_list":["post-231011","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-php-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231011","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=231011"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231011\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/235285"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}