applepeace 11 Posted August 20, 2015 Report Share Posted August 20, 2015 Добрый вечер всем! Столкнулся с небольшой проблемой на сайте. Пишу скрипт проверки доступности сайта. Проверка осуществляется в PHP функцией headers($url). Если сервер возвращает 200ОК, тогда процесс идёт дальше. Что делать с теми случаями, когда адрес сайта ввели неверно? На экран отображается вот такая ошибка: Warning: get_headers() [function.get-headers]: php_network_getaddresses: getaddrinfo failed: in \www\functions\main.php on line 53 Мне нужно просто отключить вывод ошибок на экран и выводить "Неверно введен URL". Правильно ли я понимаю? Или как-то можно вообще избежать возникновения ошибок?. Заранее спасибо. Link to post Share on other sites
lutyi-oleg 3 Posted August 20, 2015 Report Share Posted August 20, 2015 Посмотрите 53 строчку \www\functions\main.php on line 53 файла main.php в ней ошибка, может забыли поставить ; ))) applepeace 1 Link to post Share on other sites
TBicTep 59 Posted August 20, 2015 Report Share Posted August 20, 2015 Попробуй if(@get_headers($url)) applepeace 1 Link to post Share on other sites
LetSevI 322 Posted August 20, 2015 Report Share Posted August 20, 2015 (edited) if((bool) filter_var((string) $url, FILTER_VALIDATE_URL)) { //Do something... } else { //Error } Edited August 20, 2015 by LetSevI applepeace 1 Link to post Share on other sites
applepeace 11 Posted August 20, 2015 Author Report Share Posted August 20, 2015 Попробуй if(@get_headers($url)) Даже не знал о "@". Спасибо Link to post Share on other sites
applepeace 11 Posted August 20, 2015 Author Report Share Posted August 20, 2015 if((bool) filter_var((string) $url, FILTER_VALIDATE_URL)) { //Do something... } else { //Error } Сейчас попробую. Спасибо Link to post Share on other sites
roman48 57 Posted August 20, 2015 Report Share Posted August 20, 2015 Поделитесь скриптом как сделаете? Link to post Share on other sites
rafonets 508 Posted August 20, 2015 Report Share Posted August 20, 2015 (edited) HTML: <form action="" method="post"> <input type="text" placeholder="Ваш сайт" name="site" /> <input type="submit" name="submit" value="Проверить" /> </form> PHP: <?php if( isset( $_POST['submit'] ) && strip_tags(trim($_POST['submit'])) == 'Отправить' ){ # получаем URL $_url = strip_tags( trim( $_POST['site'] )); $err = false; # прим: i.ua == 4 символа if( strlen($_url) > 3 ){ # проверяем URL if( substr($_url, 0, 4) == 'http' ){ # не трогаем } else if( substr($_url, 0, 2) == '//' ){ $_url = 'http:'.$_url; } else { $_url = 'http://'.$_url; } # можно еще через Preg_match прогнать } else $err = true; # проверяем шапку сайта if( ! $err ){ # выключаем ошибки "@" $headers = @get_headers( $_url ); # а тут уже делаем что хотим $status = false; foreach( $headers as $header ){ if( stripos($header, '200 OK' ) !== false ) $status = true; } if( $status) echo 'сайт доступен'; else echo 'Оопс сайт не доступен O_щ'; } else echo 'неправильный URL адрес сайта'; } ?> Edited August 20, 2015 by rafonets applepeace 1 Link to post Share on other sites
applepeace 11 Posted August 20, 2015 Author Report Share Posted August 20, 2015 Поделитесь скриптом как сделаете? //ПРОВЕРКА СУЩЕСТВОВАНИЯ САЙТА function site_exists($domain) { if (!get_headers(convert_url($domain), 1)) {return false;} else {return true;} } //КОНВЕРТАЦИЯ АДРЕСА URL (1 - КОРОТКИЙ, 2 - ПОЛНЫЙ) function convert_url($domain,$type = 2) { if ( (strpos($domain,'https://')) === FALSE ){ if ( (strpos($domain,'http://')) === FALSE ) { $full = 'http://' . $domain; $short = $domain; } else { $full = $domain; $short = str_replace('http://','',$domain); } } else { $full = $domain; $short = str_replace('https://','',$domain); } switch ($type) { case 1: return $short; break; case 2: return $full; break; } } Держите) Вторая функция convert_url необязательная. Она проверяет ввод URL-адреса и конвертирует его, добавляя HTTP:// в случае надобности (по умолчанию 2 = полный адрес). Когда вызываю функцию, делаю так (чтобы не выводилась ошибка в случае несуществования сайта). @site_exists($_POST['domain']) OR die('Такого сайта не существует'); Спасибо Твистер за совет roman48 and rafonets 2 Link to post Share on other sites
applepeace 11 Posted August 20, 2015 Author Report Share Posted August 20, 2015 HTML: <form action="" method="post"> <input type="text" placeholder="Ваш сайт" name="site" /> <input type="submit" name="submit" value="Проверить" /> </form> PHP: <?php if( isset( $_POST['submit'] ) && strip_tags(trim($_POST['submit'])) == 'Отправить' ){ # получаем URL $_url = strip_tags( trim( $_POST['site'] )); $err = false; # прим: i.ua == 4 символа if( strlen($_url) > 3 ){ # проверяем URL if( substr($_url, 0, 4) == 'http' ){ # не трогаем } else if( substr($_url, 0, 2) == '//' ){ $_url = 'http:'.$_url; } else { $_url = 'http://'.$_url; } # можно еще через Preg_match прогнать } else $err = true; # проверяем шапку сайта if( ! $err ){ # выключаем ошибки "@" $headers = @get_headers( $_url ); # а тут уже делаем что хотим } else echo 'неправильный URL адрес сайта'; } ?> Прям-таки очень похож код на мой rafonets and roman48 2 Link to post Share on other sites
rafonets 508 Posted August 20, 2015 Report Share Posted August 20, 2015 Прям-таки очень похож код на мой Ваш на 150$, мой на 25$ applepeace 1 Link to post Share on other sites
roman48 57 Posted August 20, 2015 Report Share Posted August 20, 2015 Спасибо большое!я сейчас в бодьнице с планшета,но сделаю закладку и дома его поставлю, очень нужен.можете прикрутить инструкцию,для меня и для тех кто не понимает в пчп applepeace 1 Link to post Share on other sites
applepeace 11 Posted August 20, 2015 Author Report Share Posted August 20, 2015 Ваш на 150$, мой на 25$ Да бросьте Я начинающий Link to post Share on other sites
applepeace 11 Posted August 20, 2015 Author Report Share Posted August 20, 2015 Спасибо большое!я сейчас в бодьнице с планшета,но сделаю закладку и дома его поставлю, очень нужен.можете прикрутить инструкцию,для меня и для тех кто не понимает в пчп //ФАЙЛ functions.php //ПРОВЕРКА СУЩЕСТВОВАНИЯ САЙТА function site_exists($domain) { //ПРОВЕРЯЕМ - ОТВЕЧАЕТ ЛИ САЙТ НА ЗАПРОС, ЕСЛИ ОТВЕЧАЕТ - САЙТ СУЩЕСТВУЕТ if (!get_headers(convert_url($domain), 1)) {return false;} else {return true;} } //КОНВЕРТАЦИЯ АДРЕСА URL (1 - КОРОТКИЙ, 2 - ПОЛНЫЙ) function convert_url($domain,$type = 2) { //ИЩЕМ В ВВОДИМОМ АДРЕСЕ https: или http:, если не находим, то приписываем http: к короткому адресу (как бы подразумевая, что пользователь имел ввиду http: вводя короткий адрес) if ( (strpos($domain,'https://')) === FALSE ){ if ( (strpos($domain,'http://')) === FALSE ) { $full = 'http://' . $domain; $short = $domain; } else { $full = $domain; $short = str_replace('http://','',$domain); } } else { $full = $domain; $short = str_replace('https://','',$domain); } //ПЕРЕКЛЮЧАТЕЛЬ ФУНКЦИИ 1 - КОРОТКИЙ URL (БЕЗ HTTP), 2 - ПОЛНЫЙ (С HTTP) //ЗНАЧЕНИЕ БЕРЕТСЯ ИЗ ПАРАМЕТРА ФУНКЦИИ switch ($type) { case 1: return $short; //ВЕРНУЛИ КОРОТКИЙ УРЛ ЕСЛИ 1 break; case 2: return $full; //ВЕРНУЛИ ПОЛНЫЙ УРЛ ЕСЛИ 2 break; } } <!--- HTML !---> <form action="check.php" method="POST"> <input type="text" name="domain"> <input type="submit" value="проверить"> </form> //ФАЙЛ check.php <?php include "functions.php"; //подключаем функцию проверки if (isset($_POST['domain'])) { //проверяем, ввёл ли пользователь данные в форму if (site_exists($_POST['domain'])) {echo 'Сайт существует';} //проверяем ответ функции site_exists() из functions.php и выводим ответ else {echo 'Сайта не существует';} else { echo 'Заполните поле ввода сайта'; } //если проверка не прошла успешно (пустое поле для ввода) ?> Прокомментировал, как и просили Link to post Share on other sites
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now