За последние 24 часа нас посетили 21800 программистов и 1008 роботов. Сейчас ищут 737 программистов ...

Нормальный редирект

Тема в разделе "PHP для новичков", создана пользователем torsar, 27 июл 2021.

  1. torsar

    torsar Активный пользователь

    С нами с:
    21 ноя 2012
    Сообщения:
    130
    Симпатии:
    1
    Редиректю с помощью header.

    В бд много url введенных пользователями.
    просто: ukr.net
    и https://sql.ru

    И надо, чтоб всегда перекидывалось на внешний сайт.

    А header, если нету в начале url http:// или http:// пытается редиректить
    на внутреннюю страницу сайта.

    Проверять, есть ли в урле протокол геморно.
    И добавлять протокол. если его нету в урле тоже.

    Как быть? Может есть умный способ?
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    https://www.php.net/manual/ru/function.str-replace.php
    PHP:
    1. $url = str_replace(array('http://', 'https://'), '', $url);
    2. echo 'http://'.$url;
     
  3. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @torsar, есть ещё функция PHP: parse_url - Manual. Достаточно проверить наличие элемента "scheme" и в случае его отсутствия - добавить или попросить пользователя указать полный URL.
    Желательно это делать перед добавлением в базу, раз уж "надо, чтоб всегда".
    И для существующих уже записей прогнать скрипт проверки.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Умный способ - проверять и добавлять. А геморно это когда сэкономил 1-2 строки и неделю разгребаешь последствия.