Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка на валидность url

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Функция для проверки существования url
AlexGreF
Отправлено: 27 Мая, 2009 - 20:18:51
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Март 2009  
Откуда: Амурка


Помог: 0 раз(а)




Народ, подскажите плиз функцию или способ как можно проверить существование url..
Например, мой скрипт находится по адресу http://phpscripts.ru/script.php, ему передаётся параметр типа 'http://domain.ru/index.php?dir=23&fak=3', и вот нужно проверить существует ли такая страница, либо нет(код 404 или другой).


-----
Моё место во фрилансе - http://weblancer[dot]net/users/alexsava
 
 Top
vitaliy_mad
Отправлено: 27 Мая, 2009 - 20:20:16
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




 
 Top
AlexGreF
Отправлено: 27 Мая, 2009 - 20:34:47
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Март 2009  
Откуда: Амурка


Помог: 0 раз(а)




vitaliy_mad пишет:
http://forum.php.su/topic.php?forum=62&topic=31

Такой способ я прекрасно знаю, но я думал может есть что попроще, какая-нибудь одна функция, которая бы проверяла url..


-----
Моё место во фрилансе - http://weblancer[dot]net/users/alexsava
 
 Top
valenok Модератор
Отправлено: 27 Мая, 2009 - 20:55:20
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Проверять url нужно тогда двумя этапами..
Во первых это проверить что домен куда то ведет (наличие A record ) и наличие сервера который обрабатывает эти запросы (хотя проще уже сразу отправить запрос к нужному url, чем проверять эти записи). Во вторых это проверить что на твой запрос сервер не возвращает ошибке 404


-----
Truly yours, Sasha.
 
My status
 Top
AlexGreF
Отправлено: 28 Мая, 2009 - 11:04:40
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Март 2009  
Откуда: Амурка


Помог: 0 раз(а)




Вот нашёл функцию для проверки валидности url:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function check_url($url) {
  4.  if (eregi( '^http://', $url)) {
  5.     $urlArray = parse_url($url);
  6.        if (!$urlArray[port]) $urlArray[port] =  '80';
  7.        if (!$urlArray[path]) $urlArray[path] =  '/';
  8.        $sock = fsockopen($urlArray[host], $urlArray[port], &$errnum, &$errstr);
  9.        if (!$sock) $res =  'DNS';
  10.        else {
  11.           $dump .=  "GET $urlArray[path] HTTP/1.1\r\n";
  12.           $dump .=  "Host: $urlArray[host]\r\nConnection: close\r\n";
  13.           $dump .=  "Connection: close\r\n\r\n";
  14.           fputs($sock, $dump);
  15.           while ($str = fgets($sock, 1024)) {
  16.              if (eregi("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*", $str))
  17.                $res[code] = trim(eregi_replace('^http/[0-9]+.[0-9]+
  18. ([0-9]{3})
  19. [a-z ]*',  "\\1", $str));
  20.              if (eregi("^Content-Type: ", $str))
  21.                $res[contentType] = trim(eregi_replace("^Content-Type: ",
  22. "",
  23. $str));
  24.           }
  25.           fclose($sock);
  26.           flush();
  27.           return $res[code];
  28.        }
  29.  } else $res = "N/A";
  30.  return $res;
  31. }
  32. ?>


-----
Моё место во фрилансе - http://weblancer[dot]net/users/alexsava
 
 Top
goodier
Отправлено: 06 Июля, 2012 - 01:08:11
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Самый простой способ узнать ответ от сервера
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $url = 'http://www.example.com';
  4.  
  5.  
  6. ?>


Результатом выполнения данного примера будет что-то подобное:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => HTTP/1.1 200 OK
  4.     [1] => Date: Sat, 29 May 2004 12:28:13 GMT
  5.     [2] => Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
  6.     [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
  7.     [4] => ETag: "3f80f-1b6-3e1cb03b"
  8.     [5] => Accept-Ranges: bytes
  9.     [6] => Content-Length: 438
  10.     [7] => Connection: close
  11.     [8] => Content-Type: text/html
  12. )
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB