За последние 24 часа нас посетили 91389 программистов и 7081 робот. Сейчас ищут 2198 программистов ...

Генерация страниц

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

  1. maksimbrilliant

    maksimbrilliant Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Доброго времени суток. Подскажите пожалуйста.
    Я слаб в php. На стадии обучения. Учусь по видео и разным статьям. У меня есть личный кабинет учета клиентов. Есть страница на которой выводится список всех клиентов. Мне нужно так, чтоб при нажатии на номер договора, чтоб открывалась страница с данными, которые относятся к договору. Нашел вариант, что-то типа site/com/page?title=id.

    Но проблема в том, что сам сайт реализован таким образом, что обрезается .php и все страницы работают так site.com/page, site.com/login, site.com/profile и т.д.
    Соответственно не подходит мне такой вариант. Каким образом можно реализовать подобрый вариант? site.com/page/id ? Как минимум не понимаю как правильно запрос в поиск задать, чтоб найти то-что нужно. Подскажите пожалуйста
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
  3. maksimbrilliant

    maksimbrilliant Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Очень сложно понимаю, как это применить)
     
  4. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    а может для понимания, сделать это без ЧПУ?
    Сделайте это на простых гет параметрах и потом всё потихоньку усложняйте.
     
  5. maksimbrilliant

    maksimbrilliant Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Имеете введу через аякс подругужать данные относительно нажатой кнопки? Но тут проблема т.к. нужно будет сделать доступ к страницам клиента. Я хз как это реализовать
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    просто разбей путь по / и возьми тот кусок, что поле нужного тебе слова
     
  7. maksimbrilliant

    maksimbrilliant Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    если это минутное дело - то можешь пример показать? Бо опыта у меня маловато. Даже с ссылкой не соображаю как применять
     
  8. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Т.е. речь об этом?
    site.com/page/title/id/
    А разве при этом 404 не выскочит?
     
  9. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ничего там не может обрезаться. site.com/cto_ugodno/cto_ugodbo/cto_ugodno?id=1&name=jhon&surname=smith
     
  10. maksimbrilliant

    maksimbrilliant Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Все. Спасибо всем, кто участвовал в помощи. Мне помогли из телеграм.
    Кому полезно будет.

    if ( $_SERVER['REQUEST_URI'] == '/' ) $page = 'home';
    else {
    $path = explode('/', substr($_SERVER['REQUEST_URI'], 1));
    // проверим, есть ли элементы адреса
    if (count($path)) {
    $page = $path[0];
    if (isset($path[1]))
    $id = $path[1];
    }
    // тут дальше проверки
    if ( !preg_match('/^[A-z0-9]{3,13}$/', $page)) not_found();
    };

    А потом уже $id сравниваем с нужным столбцом в базе данных и таким образом все, что пишем после site.com/post/*** если совпадает с данными из того поля, в моем случае номер договора - то выводит данные
     
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @maksimbrilliant, прежде чем работать с путем, не мешало бы прежде отделить строку параметров. Пример тут.
     
    AlexandrS нравится это.
  12. maksimbrilliant

    maksimbrilliant Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Спасибо за бесполезный и ненужный материал
     
  13. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    ОК, оставайтесь недоучкой в своем телеграм, мне пофиг.
     
    AlexandrS нравится это.
  14. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Я так понимаю, как пример, по этому принципу работает вордпресс?
     
  15. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Я с WP не дружу, но насколько знаю, он способен работать со строкой параметров и после рерайта (внутр. редиректа). Наверно это наследие «тяжелого прошлого». Вот тут комменты почитайте (саму статью писал не я, а мой единомышленник, так сказать).

    Если вы спрашивали в общем про единую точку входа, то да. Сейчас она используется практически везде, вот только форумные движки немного отстают :)
     
    AlexandrS нравится это.
  16. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Благодарю!
     
  17. maksimbrilliant

    maksimbrilliant Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Вы чушь написали никому не нужную. То, что по ссылке уже есть в файле .htaccess и путь описывающейся по ссылке не соответствует тому, что мне надо. Мое решение отличное, без всяких там ?id=1 и т.п. Все четко теперь site.com/client/id
    --- Добавлено ---
    Вот ты красава. Описал именно то, что мне нужно
     
  18. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Не зря же стажировку в самой Ванги проходил.
     
  19. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @maksimbrilliant, вижу, вы еще тот незнайка, раз даже не смогли понять суть написанного мной поста.

    igordata действительно красава, т.к. дал вам ссылку на описание parse_url, с помощью которой можно проделать названный мной шаг, а также упомянул explode, которая может быть универсальным решением как для отделения строки параметров, так и для деления пути. В статье по ссылке есть пример использования explode в том числе и для выполнения первого шага.

    Вы уверены, что без всяких там «?id=1»? Попробуйте-ка скормить вашему отл. решению к примеру адрес /client?id=1/100500. Думаю, сильно удивитесь :)

    Впрочем, я наверно много прошу от такого важного человека, как вы. Делайте, что хотите. Кому действительно надо, тот меня услышит.
     
  20. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Ооо... в выложенном вами коде зачем-то показана как раз валидация для $page, ну тогда можно порезвиться непосредственно со значением $id (/client/100500?id=1).
    --- Добавлено ---
    Про SQL-инъекции и проч. подобные шалости, борьба с которыми в выложенном коде никак не отражена, я уже молчу.
     
  21. maksimbrilliant

    maksimbrilliant Новичок

    С нами с:
    10 мар 2018
    Сообщения:
    8
    Симпатии:
    0
    Да к чему это все? Прописал 3 строки кода и все работает через слеш, как я хотел. Зачем все усложнять и костылярить