На одном сайте нужно было проверять ссылку перед скачиванием, рабочая ссылка или нет. Делаем через получения заголовков от страницы. Если не битая — качаем файл, битая — ничего не делаем или выводим что-то (ну или редиректим).
Как проверить рабочая ссылка или нет на php
Получаем заголовок, проверяем на 404 ошибку:
1 2 3 4 | function is_valid_uri($uri) { $hds = @get_headers($uri); return !$hds || (strpos($hds[0], ' 404 ') !== false ) ? 'Битая ссылка' : 'Ссылка работает'; } |
Если 404 — то «битая», иначе рабочая. Нам нужно было для скачивания файла, без редиректа на другую страницу. Делали без ajax. Если не битая, тогда задаем тип файла, и качаем:
1 2 3 4 5 6 7 8 | 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.
1 2 3 4 5 6 7 8 9 10 11 12 | <?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 "Ссылка битая, проверьте."; } ?> |
0 Comments