{"id":231850,"date":"2022-12-26T13:06:00","date_gmt":"2022-12-26T10:06:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231850"},"modified":"2022-12-26T13:09:31","modified_gmt":"2022-12-26T10:09:31","slug":"utilizzo-di-curl-per-determinare-se-lurl-specificato-e-una-pagina-valida","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-di-curl-per-determinare-se-lurl-specificato-e-una-pagina-valida\/","title":{"rendered":"Utilizzo di cURL per determinare se l&#8217;URL specificato \u00e8 una pagina valida"},"content":{"rendered":"\n<p>All&#8217;inizio di questo mese, ho scritto sulla ricerca della <a href=\"https:\/\/wordpress.mediadoma.com\/it\/trovare-la-destinazione-di-un-reindirizzamento-con-php\/\" title=\"destinazione di un reindirizzamento utilizzando cURL in PHP\">destinazione di un reindirizzamento utilizzando cURL in PHP<\/a>. Questa pu\u00f2 essere una funzione utile da utilizzare ogni volta che:<\/p>\n<ul>\n<li>sai che gli URL con cui hai a che fare verranno reindirizzati,<\/li>\n<li>sai che il numero di reindirizzamenti sar\u00e0 limitato a uno.<\/li>\n<\/ul>\n<p>Certo, in quest&#8217;ultimo caso, sta diventando pi\u00f9 difficile perch\u00e9 siti come, ad esempio, Twitter, hanno pi\u00f9 reindirizzamenti prima di arrivare a destinazione.<\/p>\n<p>Ma questo \u00e8 un argomento per un altro post (a meno che tu non voglia semplicemente implementare un modo ricorsivo o iterativo di elaborare le richieste fino a trovare la destinazione finale).<\/p>\n<p>Ad ogni modo, c&#8217;\u00e8 un&#8217;altra cosa che pu\u00f2 anche essere utile ogni volta che lavori con i reindirizzamenti e con cURL, ed \u00e8 determinare se l&#8217;URL specificato ti porta a una pagina valida.<\/p>\n<h2>L&#8217;URL specificato \u00e8 una pagina valida?<\/h2>\n<p>Il codice in questo post non sar\u00e0 del tutto diverso da quello che potresti aver visto nei post precedenti; tuttavia, le cose chiave che faremo sono le seguenti:<\/p>\n<ul>\n<li>inizializza cURL con l&#8217;URL che ci \u00e8 stato fornito,<\/li>\n<li>impostare il valore CUROPT_RETURNTRANSFER su true (che restituisce il valore del trasferimento come stringa),<\/li>\n<li>e quindi valutare il codice di stato HTTP restituito dalla richiesta.<\/li>\n<\/ul>\n<p>Puoi leggere tutto sui codici su <a href=\"https:\/\/httpstatuses.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo sito,<\/a> ma i due che ci interessano di pi\u00f9, almeno per questo post, sono 404 e 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=\"Utilizzo di cURL per determinare se l&#039;URL specificato \u00e8 una pagina valida\"><\/a><\/p>\n<p>Quindi, prima, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ad96af9aa3007807686ac87b630dcd7\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">il codice:<\/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>Ed ecco come funziona:<\/p>\n<ol>\n<li>la funzione accetta un URL come argomento,<\/li>\n<li>inizializziamo cURL con le impostazioni appropriate, quindi eseguiamo la richiesta,<\/li>\n<li>leggiamo il valore del codice di stato memorizzato dalla risposta,<\/li>\n<li>chiudiamo l&#8217;handle cURL e quindi restituiamo la valutazione del codice di stato.<\/li>\n<\/ol>\n<p>Sembra abbastanza semplice, vero?<\/p>\n<p>E, in generale, lo \u00e8. Potrebbe essere necessario apportare alcune modifiche da solo al codice di stato o potresti voler analizzare le informazioni dalla risposta. Questo pu\u00f2 essere fatto analizzando la stringa, usando espressioni regolari o altro. Ma questo va oltre lo scopo di questo post.<\/p>\n<p>Come minimo, questo ti dir\u00e0 se l&#8217;URL a cui vieni indirizzato \u00e8 una pagina valida o meno.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C&#8217;\u00e8 un&#8217;altra cosa utile ogni volta che lavori con i reindirizzamenti e con cURL: determinare se l&#8217;URL specificato ti porta a una pagina valida.<\/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":[896,835,804,720,844,865],"tags":[1168],"class_list":["post-231850","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-php-6","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231850","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231850"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231850\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236354"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231850"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231850"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}