• Нужно ли хранить данные в базе после их удаления пользователем?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Конечно да!

    P.S. Вот каков вопрос - таков и ответ, ага.
    Если сумеете сформулировать железобетонную причину почему удалять нельзя - тогда и вопрос сам решится.
    Ответ написан
    1 комментарий
  • Можно ли так обезопасить форму?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Как уже заметили коллеги - вы путаете 2 принципиально разные задачи - защиту от спама и защиту от кроссдоменного запроса.

    Для защиты от спама вам необходимо проверять действие на некоторые условия или предпринимать некоторые меры защиты:
    1) Проверять что данные вводит человек, а не робот (для этого есть капча, токен в данном случае бесполезен, так как боты его могут получить абсолютно так же, как живые пользователи)

    2) Вариант с капчей можно не использовать для зарегистрированных и залогиненных пользователей, но тогда нужно следить за спамом в ручном режиме и блокировать аккаунт при такой активности. Как вариант - отслеживать частоту запросов, и при превышении некоторого числа за определенное время показывать капчу (так например работает вк).
    Ответ написан
    Комментировать
  • Как поступить с корзиной пользователя?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сохранить текущую корзину, потому что именно это пользователь точно сейчас хочет купить.
    Молча ничего не добавлять.
    Вежливо показать сообщение "У вас с прошлого раза остались такие-то товары, добавить? Добавить к текущему заказу?".
    Если пользователь согласился - добавить отсутствующие ,пропустить сущестующие.
    Ответ написан
    Комментировать
  • Post и Get запросы, какая между ними разница и что лучше и для каких целей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

    Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

    GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

    Поэтому в контексте PHP опираясь на эту идеологию сделали следующим образом:
    1. При каждом запуске PHP по умолчанию создаются суперглобальные массивы ($_GET, $_POST).
    2. Если в строке запроса есть вопросительный знак(?). То все что после него считается параметрами GET запроса они представлены в формате 'ключ'='значение' и в качестве разделителя используется знак амперсанда (&)
    Пример:
    GET /index.php?name=Андрей&surname=Галкин
    это строка запроса, тут 2 параметра. эти параметры попадут в массив $_GET.
    3. $_POST заполняется другим способом. содержимое этого массива заполняется из "заголовков запроса". То есть из места, скрытого от глаз в явном виде. Всю рутину по созданию таких заголовков берет на себя браузер. Хотя иногда и что-то редактируется в заголовках в ручную.

    Чаще всего пост запрос используется в формах (для отправки данных).

    Например у нас есть форма для входа 2 поля логин и пароль.

    Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

    А вот если бы мы указали методом POST то мы бы получили следующий запрос:
    POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

    Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится "Публичные параметры", которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

    В общем подводя итог:
    GET - это чтобы получить определенную страницу в определенном виде ( сортировка, текущая страница в блоге, строка поиска и т.п. ).
    POST - для оправки данных которые не влияют на отображение страницы, в том плане что эти данные влияют только на результат выполнения скрипта ( логины, пароли, номера кредиток, сообщения и т.п. ).

    И еще одна хорошая новость их можно комбинировать, например
    POST /index.php?page=login (login=Андрей&password=123) Думаю я уже достаточно объяснил что из этого получится и какие параметры в какой массив попадут.
    Ответ написан
    2 комментария
  • Как правильно организовать написание классов PHP?

    на мой взгляд, проще создать экземпляр наследника класса user
    например anonym (неавторизованный),
    registered_user (авторизованный), ну и наверное admin(со всеми правами).
    anonym может только создать пользователя или авторизоваться,
    user может только редактировать себя или выйти с авторизации.
    admin может все.
    то есть класс user наследуют подклассы со своими методами доступа/управления к таблице пользователей.
    Ответ написан
    Комментировать
  • Преобразовать ассоциативный массив в массив с числовыми индексами?

    Denormalization
    @Denormalization
    Начальный масссив положить в $arr:

    $result = [];
    foreach ($arr as $key => $values) {
        foreach ($values as $index => $val) {
            $result[$index][$key] = $val;
        }
    }


    В $result будет нужный массив.
    Ответ написан
    1 комментарий