На одном сайте нужно было проверять ссылку перед скачиванием, рабочая ссылка или нет. Делаем через получения заголовков от страницы. Если не битая – качаем файл, битая – ничего не делаем или выводим что-то (ну или редиректим).
Как проверить рабочая ссылка или нет на 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 "Ссылка битая, проверьте.";
}
?>

