- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
Как можно в php получить сабдомен?
Например есть поддомен вида (во всех вариациях):
нужно получить только sub
Drinktea :
нужно получить только sub
как дети малые. чесслово
echo explode('.', parse_url ( 'https://my.site.com', PHP_URL_HOST ))[0]
это без www
с www добавляете проверку на www
если решать задачу "в лоб" а не красиво, то будет что-то подобное.
приведение к нижнему регистру сделано для того, что parse_url работает как есть. То-есть вываливает имя в том виде, в каком его получает на входе, независимо от регистра.
как дети малые. чесслово
echo explode('.', parse_url ( 'https://my.site.com', PHP_URL_HOST ))[0]
это без www
с www добавляете проверку на www
а чем не угодил $_SERVER['HTTP_HOST'] ?
какую переменную вы туда вкорячите зависит от вашего воображения.
только в той переменной должен быть валидный http адрес, иначе вернет пустую строку
апд.
разумеется, если в качестве источника мы берем $_SERVER, то проще использовать 'HTTP_HOST'
но это может быть не всегда. например, если url вводится руками пользователя в форме
зы2.прошу прощения за кучу правок.
Самочувствие не очень, сижу на колёсах.
тем, что это способ разбить путь на составляющие, а не получить его
какую переменную вы туда вкорячите зависит от вашего воображения.
..
Самочувствие не очень, сижу на колёсах.
мда...
всем неуд.
1) читаем внимательно что спрашивается!
надо именно извлечь sub из всех возможных вариантов, а не просто получить SERVER_NAME.
да и SERVER_NAME не совсем верно использовать.
для примера в nginx конфиге пусть будет:
server_name domen.com www. domen.com sub.domen.com;
но переменная $_SERVER['SERVER_NAME'] будет всегда равна domen.com даже если мы зайдем на www. domen.com или sub.domen.com
правильней брать имя домена из HTTP_HOST
но кто вообще говорил что скрипт будет запускаться из под каждого из этих поддоменов, а не просто списком откуда-то браться?
2) parse_url() "споткнется" если на входе будет sub.domen.com, а не http://sub.domen.com
т.е. это уже не все варианты как спрашивалось изначально.
при решении исходим из:
а) если имя основного домена нам не дано, то однозначно определить что считать поддоменом невозможно. будут различные трактовки. потому принимаем, что domen.com нам известно и используем его для вычленения поддомена.
б) не сказано сколько уровней поддоменов может быть. только sub.domen.com или sub.sub.domen.com тоже возможны. примем что такое тоже может быть (вариант с explode '.' и выбор [0] или [1] уже не катит).
решение (одно из):
пусть задано имя основного домена как-то так:
самое простое что можно сделать - найти это имя домена в строке $s (предположительно исключаем ситуацию когда domen.com в строке вообще не будет) и дальше работаем с тем что слева от него.
получаем все что слева от domen.com
дальше идея в том чтоб справа налево дойти www. или / (конец http:// или https://) или до конца строки.
разворачиваем строку задом наперед:
и таким же поиском strstr находим www. (верней уже .www)
но www. у нас может не быть в строке, поэтому чтоб не получить нулевой результат добавим одно www. специально:
и в случае если www. было, то отрежется оно вместе с нашим добавленным, а если не было, то только наша вставка откусится.
аналогично делаем для слэша:
возвращаем правильный порядок символов:
и напоследок обрезаем точку в конце (разделяющую sub и domen.com):
итого:
проверяем:
но переменная $_SERVER['SERVER_NAME'] будет всегда равна domen.com даже если мы зайдем на www. domen.com или sub.domen.com
Далеко не всегда.
Но согласен, с SERVER_NAME не всё однозначно.
С HTTP_HOST, впрочем, тоже могут быть нюансы. Но это всё легко выясняется.
Хинт: можно даже заюзать $_SERVER['SERVER_ADMIN'], если мыло админа настроена на этот домен ;).
но кто вообще говорил что скрипт будет запускаться из под каждого из этих поддоменов, а не просто списком откуда-то браться?
ТС:
причем нужно это на своем сайте применить, т.е. получить свой субдомен
SERVER_NAME это имя вирт. хоста, но этот вирт. хост может откликаться на разные домены/поддомены.
и у всех этих вариантов (в рамках этого вирт. хоста) SERVER_NAME будет одна и та же, а HTTP_HOST могут отличаться. например с www. и без такового.
а SERVER_ADMIN вообще вполне может быть не задано.
короче самое надежное это HTTP_HOST - это то, что браузер шлет в заголовке Host: запрашивая сайт этот.
в любом случае задача так понял была надежно вырезать именно sub из всевозможных написаний поддомена. все остальное вторично.