#php #curl
Здравствуйте! У меня такой вопрос. Я отправляю post данные с помощью cURL на другой сайт. Мне нужно проверить если в курле введен не существующий url сайта, то в итоге возвращается стр. 404. Как сделать проверку что возвращена именно страница 404? Поиском подстроки 404 в принятом html или есть какой-то другой способ?
Ответы
Ответ 1
Это очень индивидуально для каждого сайта. "Правильная" 404 страница отдаёт http_code 404, но к сожалению не все сайты правильные. Многие отдают 200 ОК на 404 ошибку. Кроме того, каждый сайт может сделать свою кастомную 404 страничку с уникальным дизайном. Там может вообще не встретиться 404 (легко: сделано картиной) Поэтому нужно смотреть на конкретный сайт и анализировать конкретно его особенности. Кроме того, принятый алгоритм может вдруг перестать работать после редизайна сайта. Искать в теле только 404 чревато изредка ложными срабатываниями -- особенно если на сайте много разных цифр и таблиц -- может найтись и такая, на которой 404 встречается. Увы, серебряной пули нет. Подбирайте под конкретный сайт свой собственный алгоритм. PS Классический ответ 404 в http_code реализуется так: $handle = curl_init($url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); /* Get the HTML or whatever is linked in $url. */ $response = curl_exec($handle); /* Check for 404 (file not found). */ $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); if($httpCode == 404) { /* Handle 404 here. */ } curl_close($handle); Пример отсюда: https://stackoverflow.com/questions/408405/easy-way-to-test-a-url-for-404-in-php Также см. в документации: http://php.net/manual/ru/function.curl-getinfo.php
Комментариев нет:
Отправить комментарий