Цитата:
Сервер может поступать как ему вздумается, вернее разработчик - организовал передачу заголовка/статуса 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, время: 17:09. |