Проверка ссылок с учётом кириллических доменов

Тема в разделе "Как сделать...", создана пользователем Extalionez, 3 дек 2012.

  1. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Здравствуйте! Получаю от пользователя ссылку. Спрашивается как проверить ссылка ли это тем более что он может прислать хоть президент.рф. Кроме того, нужно ещё ведь самому дописать в начале http:// если пользователь сам не додумался.
     
  2. SolutionFix

    SolutionFix 17 лет програмлю ;)

    Регистр.:
    20 ноя 2006
    Сообщения:
    272
    Симпатии:
    318
    Не могу найти, где-то потерялась функция проверки в недрях проектов.
    Но стартовать идеологически правильно вот от этой страницы http://tools.ietf.org/html/rfc3986#page-50
     
  3. zhitya

    zhitya Создатель

    Регистр.:
    4 фев 2008
    Сообщения:
    15
    Симпатии:
    7
    Для начала нужно проверить (jscript) формат вводимого пользователем адреса на такие условия:
    1. Наличие протокола
    2. Наличие домена 1го уровня (последним не буквенным символом в имени домена должна быть точка)
    3. Далее ссылку проверять сложно

    Самый простой способ.
    Если вы даете право пользователям оставлять ссылки, и вам важно, чтобы они были рабочими, то нужно подсказывать пользователю правила написания онных, а затем можно проверить ссылку по заголовку:
    PHP:
    $link 'http://президент.рф/favicon.ico';
    $headers = @get_headers($link);
    if(
    strpos($headers[0],'200')===false) {
        
    $exists false//Нерабочая ссылка
    }
    else {
        
    $exists true//Рабочая ссылка
    }
    Этот способ должен работать для любых ссылок на любом языке мира.

    Вот заголовки ответа:
    Код:
    HTTP/1.1 200 OK
    Server: nginx
    Date: Sun, 13 Jan 2013 10:56:14 GMT
    Content-Type: image/x-icon
    Content-Length: 1150
    Last-Modified: Fri, 08 Apr 2011 11:28:03 GMT
    Accept-Ranges: bytes