Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
Есть страница с формой комментария. После заполнения всех полей и нажития кнопки "Добавить комментарий" пользователь перенаправляется на страницу с благодарностью вида: www.site.ru/thank.php?article=name а затем повторно на страницу с уже добавленным комментарием. Вопрос: как запретить пользователю напрямую заходить по адресу (только по нажатию кнопки "Добавить комментарий"): www.site.ru/thank.php?article=name Задам вопрос по другому: Как на PHP (или в .htaccess) организовать проверку в файле thank.php - напрямую в него заходят или попадают после нажатия кнопки "Добавить комментарий". Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 16:38 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
При отдаче формы в сессии устанавливаете контрольную переменную, которую и проверяете при запросе страницы thank.php?article=name. Если переменной нет - отправляете пользователя на исходную страницу. Если с переменной все в порядке - удаляете ее и производите какие-то действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 16:45 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
Насколько я знаю Ваше решение уязвимое. Оно реализовано в WordPress. У меня есть сайт на WordPress, так вот там спамеры-боты напрямую отправляют данные в обработчик комментариев а не через форму. Если я правильно понимаю схему данные методом POST можно отправлять не только с родной страницы. Может есть какие то внутренние резервы PHP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 16:54 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
Если сессию (куки) стырить - то можно делать что угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 17:04 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
Небольшая корректива. Сам обработчик комментариев находится в том же файле где сама форма. Файл thank.php не обработчик, а только страничка с благодарностью, через которую методом GET передается одна переменная - имя статьи. Я ее сделал чтобы очищалась форма после добавления комментария. А методом POST туда ничего не передается. Собственно два вопроса: 1. Возможно ли запретить пользователю запретить заходить на такую страницу (я так понимаю контрольную переменную здесь задать невозможно)? 2. Правильно ли я сделал? Стоит ли мне сейчас вытаскивать обработчик в новый файл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 17:27 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
1. Да, возможно. 2. Не имеет значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 17:28 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
Подскажите, как можно передать контрольную переменную в данном случае? Я знаю только 1 способ: <input type="hidden" value="kontrolnaya_peremennaya"> но эта переменная отправляется по адресу в <form action="/"> а мне нужно ее передать по адресу www.site.ru/thank.php?article=name Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 17:36 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
Стремно себя цитировать, но раз уж не читаете, повторю: vkleв сессии устанавливаете контрольную переменную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 17:43 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
vkle, ок, буду разбираться. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 17:46 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
а можно сделать все аяксом, красиво, быстро и голову ломать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 17:58 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
SharuPoNemnogu, И как аякс поможет топикстартеру защититься от "прямого" поста, минуя форму? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 18:22 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
Степан РечнойПодскажите, как можно передать контрольную переменную в данном случае? Я знаю только 1 способ: <input type="hidden" value="kontrolnaya_peremennaya"> но эта переменная отправляется по адресу в <form action="/"> а мне нужно ее передать по адресу www.site.ru/thank.php?article=name Спасибо. ========== опуская долгие рассказы о том, сколько ты ещо нового узнаешь для себя о шттп, о работе веба и прочего.... сразу отвен на неозвученый вопрос. Вопрос - что тебе делать, чтоб боты не добавляли коментарии ответ - по простому сделай чтобы при отправке формы(событие он сабмит формы) в форму добавлялось джаваскриптом скрытое поле с значением - напримем текстом - 'I am not a BOT :)' и проверяй по нему.(боты, они обычно анализируют штмл, а вот джаваскрипт на них не работает) текст может меняться скажем текст для переменой генерируеться любой а в форме вкачестве адреса обработчика(форма методом пост) пишеться ссылка obrabotchik.php?action=xxxx где хххх хеш от сгенерированого значения для скрытого поля...хешировать можно с солью а чтобы на скрипт определёный можно было зайти(в твоём случае только в результате внутренего редиректа) - тоесть зайти на сенкью только как перенаправление воспользоваться всё темже методом - передавать пару значений методом гет, через кукисы значение и хеш с солью можно в сесии сохранять факт отправки коментария и только при наличии этого факта пускать на страницу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2014, 18:44 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
для вордпресса можно посмотреть реализацию check_ajax_referer() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2014, 15:03 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Спасибо! Интересно а есть ли какой либо способ без использования ЯваСкрипт. Дело в том что я JS не знаю совсем и мне бы хотелось чтобы система была самодостаточной, независящей от настроек браузера пользователя. Я так понимаю что если отключить JS комментарии отправляться не будут. vkle, попробовал с помощью сессий. Все работает ок, только возникло 2 вопроса. 1. Мне показалось что после подключения сессий время формирования страницы существенно увеличилось, это заметно даже не вооруженным глазом. Если раньше страница появлялась меньше чем через секунду, то сейчас явно больше. Хотя когда я вставил скрипт измеряющий время генерации страницы то разницы особо не заметил. В обоих случаях показывает время примерно 0.02 секунд, за исключением первой загрузки страницы - 0.7 сек. В файл добавил только 2 строчки: session_start(); $_SESSION['ch4R']=1; Могут ли сессии так сильно грузить систему? 2. Теперь если напрямую пытаться зайти по ссылке www.site.ru/thank.php?article=name до отправки комментария через форму, то как и положено доступа к ней нет. Но если отправить комментарий, то можно заходить по ссылке напрямую сколько угодно раз, пока полностью не закроешь браузер и не откроешь заново. Мне бы хотелось чтобы страница с благодарностью появлялась на пару секунд после добавления комментария, а после ее закрытия становилась недоступна для прямого доступа. Сессию и контрольную переменную уничтожаю сразу после загрузки страницы с благодарностью - не помогает. Как быть в этой ситуации? Еще раз спасибо всем за помощь!!!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 08:56 |
|
||
|
Запретить доступ к php файлу напрямую, только после нажатия кнопки.
|
|||
|---|---|---|---|
|
#18+
Степан Речной, 1. Как и при выполнении любой функции, какая-то нагрузка/задержка от сессий есть. Другой вопрос в значениях. 0,7 секунды - это как-то аномально много, такое значение не оправдывает даже необходимость дополнительного обращения к диску, где хранятся файлы сессий. 2. При успешном выполнении задачи нужно очищать контрольную переменную. Вероятно, она не уничтожается или что-то не так с проверкой. Или же, что-то не так с механизмом сессий, на что косвенно указывает и пункт 1. Для более тонкого контроля (если есть вероятность одновременного открытия нескольких экземпляров страницы одним пользователем) можно вместо фиксированного имени переменной генерировать случайный код и отправлять его скрытым полем формы, а на приеме проверять соответствие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 09:12 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38762453&tid=1462374]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 445ms |

| 0 / 0 |
