| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Как закрыть доступ через строку браузера? |
| Автор: bscint13 13.2.2014, 04:14 |
| Подскажите, пожалуйста, Как закрыть доступ к странице (файлу скрипта) через строку браузера? Переход на данную страницу, которую и требуется закрыть из вне (доступ через строку браузера) происходит после успешной оплаты, т.е. из платёжной системы. Передача данных в платёжной системе используется методом POST Закрыть доступ к файлу через .htaccess не удалось, используя стандартные правила типа deny. Есть ли другой способ? Конечно, не переделывая скрипт целиком, через использование cookie. Я не программист, и довольно очень далёк от этого, даже не начинающий, просто пытаюсь и пробую... очень надо, помогите, пожалуйста... |
| Автор: ksnk 13.2.2014, 09:18 | ||
? |
| Автор: baldina 13.2.2014, 09:39 |
| чтобы сделать это наверняка, придется пользоваться session |
| Автор: ksnk 13.2.2014, 10:55 |
| baldina, нет. Если на банковском клиенте покупатель потеряет минут 20 - наша сессия уже может кончится. Обычно, платежные системы передают идентификатор операции. По идентификатору нужно в нашей базе уточнить состояние заказа, есть он или нет и оплачивается или нет. По идентификатору нужно слазить на банковский сервер и запросить статус операции. Бывают очень заковыристые схемы оплаты. А вот полученному статусу уже можно верить. |
| Автор: AJIeKceuD 13.2.2014, 11:48 |
| Вообще на сколько я знаю именно переадресации платежной системы доверять нельзя. Там просто показывается сообщение о том что оплата прошла успешно, а основная работа происходит на фоне. Не уверен на счет обычно, но я несколько раз сталкивался что в настройках платежной системы можно только забить URL для переадресации после успешной оплаты или в случае провала. Опять же в любом случае на основе этой переадресации нельзя утверждать что оплата была. Либо отправлять запрос платежной системе о статусе заказа, либо я чаще сталкивался с тем что система сама оповещает вас когда статус меняется - после переадресации статус может поменяться только через несколько минут. |
| Автор: baldina 13.2.2014, 12:03 |
| ок, session в широком смысле. я хотел подчеркнуть, что на базе только запроса надежно сделать не получится ну это от разработчика зависит. к тому же я не понимаю как связаны 20мин в клиенте и переадресация после post: переадресация занимает секунды |
| Автор: ksnk 13.2.2014, 12:48 |
| Хм... Вот примерный алгоритм оплаты через сбербанковский терминал.
|
| Автор: bscint13 13.2.2014, 12:59 | ||||||
Благодарю за совет и пример!!! Вот только как его и куда применить? Подскажите, пожалуйста... Если правильно понимаю... его надо вставить на страницу, которую требуется закрыть от доступа из вне через строку браузера, сразу же после начала PHP кода, т.е. после <?php Правильно или всё же нет??? Заранее благодарю за ответ. Добавлено через 3 минуты и 24 секунды
Вы совершенно правы, переадресация из платёжки на страницу сайта после оплаты происходит в течение 10 секунд... |
| Автор: ksnk 13.2.2014, 14:46 | ||
В общем, да. А чья система оплаты ставится? |
| Автор: bscint13 13.2.2014, 18:35 | ||||||||
Не совсем понятен вопрос... чья система ставится... электронная платёжная... Perfect Money. Вы это имели ввиду??? По идее, как подсказывает интуиция, Ваш пример должен подойти, однако кто знает... не проверив, не узнаешь... сегодня постараюсь проверить и уже обязательно отпишусь здесь же... Благодарю за помощь!!! Также благодарен Всем участникам данного поста!!! Добавлено через 8 минут и 38 секунд
Вы правы... идентификация клиента выполняется с помощью $_Session, а вот в проверке состояния платежа в базе, наверное в более сложном варианте скрипта он бы имел место - нет необходимости... хотя??? Во всяком случае в используемом мной скрипте таблица в базе под платежи не предусмотрена... Прошу отнестись с пониманием к написанному мной... как писал в первом посте - в PHP и вообще программировании - Я лузер... в наше время очень тяжело найти надёжного и верного партнёра, согласитесь... |
| Автор: ksnk 13.2.2014, 20:19 |
Да, именно это. Там, видимо, простая форма для оплаты? Ну, для несложных магазинчиков без бухгалтерии можно и так. Все более сложные операции, типа возврата средств и неожиданной доплаты за заказ можно и вручную проводить. К тому же нужно обязательно проверять корректность платежа, хотя бы используя предлагаемые там скрипты проверки, иначе довольно легко обмануть такую систему оплаты. |
| Автор: bscint13 14.2.2014, 03:07 | ||||
Да... меня постигло разочарование... К сожалению, данная страница всё-равно доступна из строки браузера, никакой реакции... Вот как у меня записано в коде данной страницы: <? if($_SERVER['REQUEST_METHOD']=='POST'){ // это вход платежной системы } else { // это вход через адресную строку } include'../config.php'; $title="$CONFIG->site Оплата прошла успешно!"; и так далее... Скажите, пожалуйста, я правильно вставил Ваш пример кода или всё же нет? |
| Автор: ksnk 14.2.2014, 06:57 | ||
Имелось ввиду что-то вроде
|
| Автор: bscint13 14.2.2014, 15:00 | ||||
Я действительно не так написал, в принципе этого и следовало ожидать... поэтому прошу не судить строго... особенно за последующий вопрос и оказать всё же помощь... за что буду очень благодарен и признателен. Небольшое уточнение, простите уж... Фрагмент кода: } else { // это вход через адресную строку header("HTTP/1.0 404 Not Found"); echo 'Тут рыбы нет'; exit(); } указанный после... и так далее... Следует писать после футера, т.е. нижнего колонтитула сайта, перед закрытием ?> PHP кода или всё же до футера... Простите не так богат знаниями и опытом, чтобы знать куда влепить данный фрагмент. И от всей души поздравляю Вас и участников данного поста с Праздником Всех Влюблённых, Днём Святого Валентина... Здоровья, счастья, любви и всех благ!!! |
| Автор: ksnk 14.2.2014, 15:33 | ||
Проще сделать вот так. первые 6 строчек добавить в начало файла. |
| Автор: bscint13 14.2.2014, 18:06 | ||||
Благодарю... кажется работает... в том плане, что страница не доступна из строки браузера... выдаёт чистую страницу и вверху пишет... как Вы указали в echo 'Тут рыбы нет' Осталось проверить в действии с платёжной системой. Я Вам очень благодарен, даже не представляете как, можно сказать почти год бьюсь над этой проблемой, уже бился... правда больше в ожиданиях. Надеюсь, что и с платёжкой будет всё нормально... Не хотелось бы менять тему и создавать новую, точнее новый пост... могли бы Вы примерно показать как создать правило для проверки номера счёта, собственно валидации... ereg уже не используется, вместо него preg_match, правильно? Номер счёта состоит из двух больших латинских букв и от 7 до 9 цифр. Возможно ли это указать в одной строке правила? |