За последние 24 часа нас посетили 18988 программистов и 1613 роботов. Сейчас ищут 694 программиста ...

как получить аргументы URL?

Тема в разделе "PHP для новичков", создана пользователем Dimon2x, 14 янв 2018.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    Такая беда, ссылка выглядит вот так <a href=?page=2

    после отработки .htaccess, ссылка получается не page=2, а просто домен/2

    Если вытаскивать так print_r($_GET); то такой get параметр он не видит.

    Если так echo $_SERVER['REQUEST_URI'];, то видит, и можно достать её с помощью explode и потом по числовым ключам найти эту страницу, но проблема состоит в том, что если перед этим аргументом, будет ещё аргументы, то уже нужный ключ будет стоять в другом месте, а как сделать, что бы всегда можно было получить нужный ключ?

    Вот так нормально shop/2/

    PHP:
    1. echo '<pre>';
    2. print_r(explode('/', $_SERVER['REQUEST_URI']));
    3. echo '</pre>';
    4.  
    5. (
    6.     [0]=>
    7.     [1]=> shop
    8.     [2]=>2
    9.     [3]=>
    10. )
    Но будут случаи, когда в урле, будет только shop/?sort=asc

    Тогда explode будет работать некорректно, как быть в таких случаях, проверять количество аргументов, перед разбивокой?
    --- Добавлено ---
    или искать регулярками карман, в котором есть только цифры?
     
  2. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Там все упирается в регулярку, либо .htaccess прописывать так чтобы не изменялось то что после "?" или доставать из 'REQUEST_URI' как это делается в MVC и там не просто.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    В этом вся суть ЧПУ - придумать проблему а, точнее, комплекс проблем, чтобы потом их решать ради СЕОшной мифологии.
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @Dimon2x то что у вас номера страниц в GET-параметре – это скорее хорошо, чем плохо. С фильтрами/сортировками уже возможны варианты. Попробуйте обрабатывать исходный адрес целиком (и путь, и строку парметров) в скрипте. Прежде чем разбивать путь, не мешало бы сначала отделить строку параметров (либо вытянуть нужные вам параметры из полного адреса при помощи регулярки, независимо от того, находятся они в пути или в строке параметров). Простейший пример такого отделения я показал в статье http://gency.ru/single-entry-point – условие в ветвлении (1) можно опустить – оно используется для того, чтобы не потерять завершающий вопр. знак, когда строка параметров пустая.
    --- Добавлено ---
    Информация к размышлению. Вот так тоже нормально:
    /shop?page=2
    /sort-asc/shop (в роботс легко закрывать подобные неполные дубли при помощи маски /sort-asc/ и т.п.)
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    сделаю, как на авито