Jump to content

Recommended Posts

Добрый вечер всем! Столкнулся с небольшой проблемой на сайте. Пишу скрипт проверки доступности сайта. Проверка осуществляется в PHP функцией headers($url). Если сервер возвращает 200ОК, тогда процесс идёт дальше. Что делать с теми случаями, когда адрес сайта ввели неверно? На экран отображается вот такая ошибка:

 

Warning: get_headers() [function.get-headers]: php_network_getaddresses: getaddrinfo failed: in \www\functions\main.php on line 53

 

Мне нужно просто отключить вывод ошибок на экран и выводить "Неверно введен URL". Правильно ли я понимаю? Или как-то можно вообще избежать возникновения ошибок?. Заранее спасибо.

Share this post


Link to post
Share on other sites

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 by rafonets

Share this post


Link to post
Share on other sites

Поделитесь скриптом как сделаете?

//ПРОВЕРКА СУЩЕСТВОВАНИЯ САЙТА
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('Такого сайта не существует');

Спасибо Твистер за совет :)

Share this post


Link to post
Share on other sites

 

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 адрес сайта';

}
?>

 

Прям-таки очень похож код на мой :D

Share this post


Link to post
Share on other sites

Спасибо большое!я сейчас в бодьнице с планшета,но сделаю закладку и дома его поставлю, очень нужен.можете прикрутить инструкцию,для меня и для тех кто не понимает в пчп

Share this post


Link to post
Share on other sites

Спасибо большое!я сейчас в бодьнице с планшета,но сделаю закладку и дома его поставлю, очень нужен.можете прикрутить инструкцию,для меня и для тех кто не понимает в пчп

//ФАЙЛ 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 'Заполните поле ввода сайта'; } //если проверка не прошла успешно (пустое поле для ввода)

?>

Прокомментировал, как и просили :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...