Цитата:
Сервер может поступать как ему вздумается, вернее разработчик - организовал передачу заголовка/статуса 404 если страница не найдена, или отдает статус 200, а на странице картинка 404. Не трудно догадаться, что это в общем-то нерабочая ссылка. Но никакой РНР скрипт этого проанализировать не может. Все что вам нужно, это get_headers(URL, 1) и анализировать статус. Все. |
А как тогда это мой скрипт проверяет если это невозможно?
|
Цитата:
|
Да, но мой скрипт проверяет ссылку полностью, так как надо. А ваш скрипт проверяет только до слеша. Об этой разнице я и пишу уже несколько страниц.
|
Ну-ка пример такого URL, только реального, а не фейка или из не доверенных
|
<li class="span3">
<div class="thumbnail"> <a href="https://bprice.ge/keis191" target="_blank"><img src="<?=LINK?>/image/catalog/cases/191/1.jpg" width="150"> <div class="caption"> <?PHP $content = @file_get_contents("$link/keis191"); if (strpos($http_response_header[0], "200")) { echo "<h5>Текст при живой ссылке</h5>"; } else { echo "<font color=red><h5>Текст если ссылка не существует</h5></font>"; } ?> </a> </div> </div> </li> |
Это не URL, это хрень, которую никто проверить не сможет. Вам вообще чего надо, проверять есть ли картинка? Так для этого ну клиенте нужно проверять событие ее загрузки, а на севере настроить .htaccess, скриптов для этого не нужно.
|
drmodjo, вы можете через сервер узнать, какой статус возвращает ресурс, и уже на клиенте раскрасить ссылки в зависимости от статуса ссылки. Вот PHP-скрипт, который «узнаёт» статус запрашиваемого ресурса...
<?php $headers = get_headers($_GET['url']); header($headers ? $headers[0] : $_SERVER['SERVER_PROTOCOL'] . ' 500'); header('Access-Control-Allow-Origin: *');Для примера я его опубликовал на https://is-valid-url.malleys.repl.co/index.php Пример... <section> <a href="https://javascript.ru/forum/jquery/79699-proverka-ssylki-na-aktivnost-3.html">javascript.ru/forum/jquery/79699-proverka-ssylki-na-aktivnost-3</a> <a href="http://javascript.ru/forum/jquery/ams">javascript.ru/forum/jquery/ams</a> <a href="https://site.ru/public/1024">site.ru/public/1024</a> <a href="https://google.ru/">google.ru</a> <a href="https://bprice.ge/keis191">bprice.ge/keis191</a> <a href="https://javascript.ru/cat/list/j_s.gif">javascript.ru/cat/list/j_s.gif</a> <a href="https://javascript.ru/cat/list/js.gif">javascript.ru/cat/list/js.gif</a> </section> <style> a { all: unset; display: block; pointer-events: none; font-size: 200%; } a:before { content: "♻"; color: gold; width: 1em; display: inline-block; } a.ok { pointer-events: all; text-decoration: underline; color: blue; cursor: pointer; } a.ok:before { content: "✔"; color: yellowgreen; } a.error:before { content: "✖"; color: red; } </style> <script> (async function main() { for (const link of document.links) { const { status } = await fetch("https://is-valid-url.malleys.repl.co/index.php?url=" + encodeURIComponent(link)); link.classList.add(status >= 200 && status < 400 ? "ok" : "error"); } })(); </script> Всё просто — в зависимости от статуса на ссылку добавляется соответствующий класс — "ok" или "error". |
Вы пишите какую-т хрень. Проверяем - берем url реально существующей картинки на этом форуме и запрашиваем заголовки:
print_r(get_headers('https://javascript.ru/cat/list/js.gif', 1)); Ответ: Код:
Array print_r(get_headers('https://javascript.ru/cat/list/j_s.gif', 1)); Ответ: Код:
Array |
Я удивлен. Где вы там проверку картинки увидели?
Скрипт который вы всю переписку критикуете делает свое дело. А ваш не справляется с поставленной задачей. И только одно радует, что вы считаете невозможным делает этот скрипт. Наверное зря потратил ваше время. Просто надежду подал ваш статус "Профессор" под вашим псевдонимом. Извините за беспокойство. |
Часовой пояс GMT +3, время: 02:44. |