
12.03.2020, 12:49
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Сообщение от drmodjo
|
|
Ну это же надо в совокупности с основным кодом.
|
Каким кодом?
Сервер может поступать как ему вздумается, вернее разработчик - организовал передачу заголовка/статуса 404 если страница не найдена, или отдает статус 200, а на странице картинка 404. Не трудно догадаться, что это в общем-то нерабочая ссылка. Но никакой РНР скрипт этого проанализировать не может. Все что вам нужно, это get_headers(URL, 1) и анализировать статус. Все.
|
|

12.03.2020, 13:21
|
|
Интересующийся
|
|
Регистрация: 12.12.2014
Сообщений: 26
|
|
|
А как тогда это мой скрипт проверяет если это невозможно?
|
|

12.03.2020, 13:51
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Сообщение от drmodjo
|
|
А как тогда это мой скрипт проверяет если это невозможно?
|
Ваш анализирует заголовки ответа. Тоже самое и я написал, только без лишнего мусора. А вот обмануть скрипт как два пальца ...
|
|

12.03.2020, 15:24
|
|
Интересующийся
|
|
Регистрация: 12.12.2014
Сообщений: 26
|
|
|
Да, но мой скрипт проверяет ссылку полностью, так как надо. А ваш скрипт проверяет только до слеша. Об этой разнице я и пишу уже несколько страниц.
|
|

13.03.2020, 00:27
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Ну-ка пример такого URL, только реального, а не фейка или из не доверенных
|
|

13.03.2020, 01:47
|
|
Интересующийся
|
|
Регистрация: 12.12.2014
Сообщений: 26
|
|
|
<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>
|
|

13.03.2020, 02:06
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Это не URL, это хрень, которую никто проверить не сможет. Вам вообще чего надо, проверять есть ли картинка? Так для этого ну клиенте нужно проверять событие ее загрузки, а на севере настроить .htaccess, скриптов для этого не нужно.
|
|

13.03.2020, 02:18
|
 |
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
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".
Последний раз редактировалось Malleys, 13.03.2020 в 02:26.
|
|

13.03.2020, 02:18
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Вы пишите какую-т хрень. Проверяем - берем url реально существующей картинки на этом форуме и запрашиваем заголовки:
print_r(get_headers('https://javascript.ru/cat/list/js.gif', 1));
Ответ:
|
Код:
|
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Thu, 12 Mar 2020 23:24:05 GMT
[Content-Type] => image/gif
[Content-Length] => 2602
[Connection] => close
[Set-Cookie] => __cfduid=d17f92f66d695c0ffc5d1e1bc04e392951584055445; ...
[Cache-Control] => max-age=315360000
[Cf-Bgj] => imgq:100
[Cf-Polished] => status=not_needed
[ETag] => "59159012-a2a"
[Expires] => Thu, 31 Dec 2037 23:55:55 GMT
[Last-Modified] => Fri, 12 May 2017 10:36:02 GMT
[CF-Cache-Status] => HIT
[Age] => 175
[Accept-Ranges] => bytes
[Expect-CT] => max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
[Server] => cloudflare
[CF-RAY] => 57314444aa28dfe3-FRA
) |
Изменим адрес на фиктивный, просто укажем несуществующее имя:
print_r(get_headers('https://javascript.ru/cat/list/j_s.gif', 1));
Ответ:
|
Код:
|
Array
(
[0] => HTTP/1.1 404 Not Found
[Date] => Thu, 12 Mar 2020 23:25:30 GMT
[Content-Type] => text/html; charset=utf-8
[Content-Length] => 162
[Connection] => close
[Set-Cookie] => __cfduid=d5cd26eb70e3ca33ff307d37733935bf61584055530; ...
[Cache-Control] => max-age=86400
[CF-Cache-Status] => EXPIRED
[Expect-CT] => max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
[Server] => cloudflare
[CF-RAY] => 5731465629ec1f45-FRA
) |
А что вы там у себя вытворяете, бог его знает.
|
|

13.03.2020, 02:23
|
|
Интересующийся
|
|
Регистрация: 12.12.2014
Сообщений: 26
|
|
|
Я удивлен. Где вы там проверку картинки увидели?
Скрипт который вы всю переписку критикуете делает свое дело. А ваш не справляется с поставленной задачей. И только одно радует, что вы считаете невозможным делает этот скрипт. Наверное зря потратил ваше время. Просто надежду подал ваш статус "Профессор" под вашим псевдонимом. Извините за беспокойство.
|
|
|
|