Задать вопрос
BostonGeorge
@BostonGeorge
Айтишник и юрист

Как сформировать внешний URL?

Добрый день!
На моём сайте есть форма обратной связи, одно из полей которой называется "Ваш сайт". В это поле клиенты вводят всё, что угодно, а в частности, следующее:
  • нету сайта
  • мой.сайт
  • www.мой.сайт

Заполненная форма обратной связи приходит на почту и хранится в БД.
Никак не могу разобраться, как же корректно сформировать ссылку на сайт клиента в этой форме:
Вариант с "нету сайта" хотя бы можно привязать к наличию точки в названии сайта, то есть, если нет точки, то и ссылки тоже нет.
А вот дальше... Как показала практика, у большинства клиентов не настроена переадресация, то есть, по факту,

- это разные сайты, и существует только один из них.
Если попытаться поставить ссылку просто как <a href="мой.сайт">мой.сайт</a>,
то в почтовой программе такая ссылка вообще не срабатывает, а в CMS сайта ведет на адрес "<адрес CMS>/мой.сайт", так как, по сути, является относительной.

Подскажите, пожалуйста, как же правильно отформатировать адрес сайта из формы обратной связи и сформировать ссылку?
Заранее спасибо за ответ!
  • Вопрос задан
  • 463 просмотра
Подписаться 4 Простой 2 комментария
Решения вопроса 1
ivan_zhuck
@ivan_zhuck
Возможно, после проверки значения поля через регуляное выражение (дабы удостовериться, что там содержится нечто похожее на доменное имя), стоит пингануть варианты адресов до первого полученного ответа 200 и считать его правильным.

Т.е. вы получаете значение поля в виде: мой.сайт, далее отправляете запрос на http://мой.сайт через какой-нибудь curl, смотрите на ответ, если ответ отличен от 200, то проверяете далее адреса по списку https://мой.сайт, http://www.мой.сайт, https://www.мой.сайт.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Подскажите, пожалуйста, как же правильно отформатировать адрес сайта из формы обратной связи и сформировать ссылку?
$url = substr($url, 0, 4) == 'http' ? $url : "http://$url";
if (!filter_var($url, FILTER_VALIDATE_URL)) {
     $errors['url'] = "введен некорректный адрес сайта";
}
Ответ написан
BostonGeorge
@BostonGeorge Автор вопроса
Айтишник и юрист
В итоге было реализовано решение @ivan_zhuck:
Вот что получилось: https://github.com/SexyGrandma/redirect
Пример переадресации: http://www.ze3.ru/redirect/?url=правительство.рф
Пример получения ответа сервера: http://www.ze3.ru/redirect/checkHeaders.php?link=п...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы