За последние 24 часа нас посетили 228114 программистов и 1731 робот. Сейчас ищут 1730 программистов ...

Передача POST параметров.

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

  1. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Есть страница index.php на нее приходит некий GET запрос:
    index.php?id=123&text=title
    На странице установлен PHP код, который определяет ip пользователя и user Agent
    На странице есть форма в которую пользователь вводит данные, к примеру номер телефона и свое имя.

    После нажатия на кнопку формы "отправить" пользователь перенаправляется на страницу благодарности thankyou.php, где собственно и должен стоять обработчик, который будет принимать все данные через POST и писать в базу.

    И собственно сам вопрос: Как безопасно и правильно сформировать POST для передачи из index.php в thankyou.php

    PS: Как я понимаю, данные которые отправляются не через форму, можно записать в сессию и потом просто на странице thankyou.php получить данные из сессии и из формы. Есть другие варианты и без JS.

    Благодарю!
     
    #1 AlexandrS, 14 июл 2018
    Последнее редактирование: 14 июл 2018
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    никак

    но есть сессии
     
    AlexandrS нравится это.
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Если исключительно на стороне сервера, то можно использовать временную таблицу (в памяти например). А при редиректе к адресу прикрепляете какой-нибудь указатель на созданную запись. Финальный сэйв лучше делать не в ответ на GET, а тоже в ответ на POST. Т.е. организуете доп. подтверждение. Заодно и стойкость к спаму повысите.
    --- Добавлено ---
    P.S. Мы еще доп. ключ при редиректе к ссылке подмешиваем. Это защита от случайных открытий страницы подтверждения не отправителями и опять-таки антиспам. И время на подтверждение ограничиваем.
    --- Добавлено ---
    P.P.S. Финальный сэйв можно делать исключительно на сервере БД (INSERT ... SELECT ...).
     
    AlexandrS нравится это.
  4. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Вот с этим не совсем понял.
    (Что есть финальный слейв? И что вообще есть слейв?)
    ----
    Т.е. образно говоря со страницы index.php в thankyou.php без ключа не попадешь или попадешь, но скрипт не обрабатывает данные. И каким образом подмешиваете на редиректе?
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Не слэйв, а сэйв – save – не уж-то про ногу бога не слышал, ведь ЧМ еще даже не закончился :)

    Прямым. Какой-то рандомный ключ суете в базу и в ссылку. При приеме сверяете. Если есть несоответствие, уже в ответ на GET можно писать «нет такой страницы».
     
    AlexandrS нравится это.
  6. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    А (save) = сохранять :)
    Я чет не так прочитал.
    Благодарю!

    PS: А ЧМ не смотрю и не слежу :)
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Не за что. Только не надо на странице подтверждения светить пользовательские данные, даже если оч. будет хотеться ;)

    Вот например просроченная, но еще живая страница: gency.ru/confirm/2201?p=31. После доп. подтверждения можно делать редирект обратно на форму или еще на одну страницу (типа с благодарностями, как у вас), потому что если при подтверждении написать что-нибудь не то, сразу поблагодарить например, пользователи могут забыть сделать подтверждение.
    --- Добавлено ---
    ...эээ, в примере любой ключ подходит (это GET-параметр). Это, видимо, сделано для борьбы с подбором, чтобы 404-ая не послужила признаком некорректного ключа.
     
    AlexandrS нравится это.
  8. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Да я как бы до этого и не додумался бы :) Я придерживаюсь той политики, что данные пользователя может видеть только сам пользователь, если он зарегистрирован на сайте и находится в личном кабинете.
    Так что на странице подтверждения только "Спасибо" и по мере необходимости сама карточка товара/товаров.