Categories: Php

Как проверить битая ссылка или нет на php

На одном сайте нужно было проверять ссылку перед скачиванием, рабочая ссылка или нет. Делаем через получения заголовков от страницы. Если не битая — качаем файл, битая — ничего не делаем или выводим что-то (ну или редиректим).

Как проверить рабочая ссылка или нет на php

Получаем заголовок, проверяем на 404 ошибку:

function is_valid_uri($uri) {
     $hds = @get_headers($uri);
     return !$hds || (strpos($hds[0], ' 404 ') !== false ) ? 'Битая ссылка' : 'Ссылка работает';
 }

Если 404 — то «битая», иначе рабочая. Нам нужно было для скачивания файла, без редиректа на другую страницу. Делали без ajax. Если не битая, тогда задаем тип файла, и качаем:

if (is_valid_uri($download_file) != 'Битая ссылка') {
 header('Content-Type: application/vnd.android.package-archive');
 header('Content-Disposition: attachment; filename="file.apk"');
 readfile($download_file);
} else {
 header('HTTP/1.0 204 No Content');
 exit;
}

Если ссылка «битая» (404 ошибка = не существует), тогда ничего не делаем (задали в заголовке).

В вашем случае, наверняка, нужно просто выводить что-то на экране. Можно упростить код и вместо текста писать 1 или 0.

<?php
 function is_valid_uri($uri) {
      $hds = @get_headers($uri);
      return !$hds || (strpos($hds[0], ' 404 ') !== false ) ? '1' : '0';
  }

 if (is_valid_uri($download_file) != '1') {
  echo "Ссылка рабочая.";
 } else {
  echo "Ссылка битая, проверьте.";
 }
?>

 

veniamin

Recent Posts

Как заработать токе NOT за стейкинг BNB или FDUSD

Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…

2 дня ago

Как заработать TON и NOT за стейкинг в телеграм

Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…

2 дня ago

Бонус 100 USDT +10 BUSD от Binance

Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…

2 года ago

Как парсить длительность видео youtube на php в привычном виде

Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…

2 года ago

Как удалить чужую сессию пользователя в ubuntu (linux)

Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…

2 года ago

Как наложить watermark на видео в python windows массово

Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…

3 года ago