Есть страница 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. Благодарю!
Если исключительно на стороне сервера, то можно использовать временную таблицу (в памяти например). А при редиректе к адресу прикрепляете какой-нибудь указатель на созданную запись. Финальный сэйв лучше делать не в ответ на GET, а тоже в ответ на POST. Т.е. организуете доп. подтверждение. Заодно и стойкость к спаму повысите. --- Добавлено --- P.S. Мы еще доп. ключ при редиректе к ссылке подмешиваем. Это защита от случайных открытий страницы подтверждения не отправителями и опять-таки антиспам. И время на подтверждение ограничиваем. --- Добавлено --- P.P.S. Финальный сэйв можно делать исключительно на сервере БД (INSERT ... SELECT ...).
Вот с этим не совсем понял. (Что есть финальный слейв? И что вообще есть слейв?) ---- Т.е. образно говоря со страницы index.php в thankyou.php без ключа не попадешь или попадешь, но скрипт не обрабатывает данные. И каким образом подмешиваете на редиректе?
Не слэйв, а сэйв – save – не уж-то про ногу бога не слышал, ведь ЧМ еще даже не закончился Прямым. Какой-то рандомный ключ суете в базу и в ссылку. При приеме сверяете. Если есть несоответствие, уже в ответ на GET можно писать «нет такой страницы».
Не за что. Только не надо на странице подтверждения светить пользовательские данные, даже если оч. будет хотеться Вот например просроченная, но еще живая страница: gency.ru/confirm/2201?p=31. После доп. подтверждения можно делать редирект обратно на форму или еще на одну страницу (типа с благодарностями, как у вас), потому что если при подтверждении написать что-нибудь не то, сразу поблагодарить например, пользователи могут забыть сделать подтверждение. --- Добавлено --- ...эээ, в примере любой ключ подходит (это GET-параметр). Это, видимо, сделано для борьбы с подбором, чтобы 404-ая не послужила признаком некорректного ключа.
Да я как бы до этого и не додумался бы Я придерживаюсь той политики, что данные пользователя может видеть только сам пользователь, если он зарегистрирован на сайте и находится в личном кабинете. Так что на странице подтверждения только "Спасибо" и по мере необходимости сама карточка товара/товаров.