![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| bscint13 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Подскажите, пожалуйста, Как закрыть доступ к странице (файлу скрипта) через строку браузера?
Переход на данную страницу, которую и требуется закрыть из вне (доступ через строку браузера) происходит после успешной оплаты, т.е. из платёжной системы. Передача данных в платёжной системе используется методом POST Закрыть доступ к файлу через .htaccess не удалось, используя стандартные правила типа deny. Есть ли другой способ? Конечно, не переделывая скрипт целиком, через использование cookie. Я не программист, и довольно очень далёк от этого, даже не начинающий, просто пытаюсь и пробую... очень надо, помогите, пожалуйста... |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
чтобы сделать это наверняка, придется пользоваться session
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
baldina, нет. Если на банковском клиенте покупатель потеряет минут 20 - наша сессия уже может кончится.
Обычно, платежные системы передают идентификатор операции. По идентификатору нужно в нашей базе уточнить состояние заказа, есть он или нет и оплачивается или нет. По идентификатору нужно слазить на банковский сервер и запросить статус операции. Бывают очень заковыристые схемы оплаты. А вот полученному статусу уже можно верить. Это сообщение отредактировал(а) ksnk - 13.2.2014, 10:56 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| AJIeKceuD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
Вообще на сколько я знаю именно переадресации платежной системы доверять нельзя. Там просто показывается сообщение о том что оплата прошла успешно, а основная работа происходит на фоне. Не уверен на счет обычно, но я несколько раз сталкивался что в настройках платежной системы можно только забить URL для переадресации после успешной оплаты или в случае провала.
Опять же в любом случае на основе этой переадресации нельзя утверждать что оплата была. Либо отправлять запрос платежной системе о статусе заказа, либо я чаще сталкивался с тем что система сама оповещает вас когда статус меняется - после переадресации статус может поменяться только через несколько минут. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
ок, session в широком смысле. я хотел подчеркнуть, что на базе только запроса надежно сделать не получится
ну это от разработчика зависит. к тому же я не понимаю как связаны 20мин в клиенте и переадресация после post: переадресация занимает секунды |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Хм... Вот примерный алгоритм оплаты через сбербанковский терминал.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| bscint13 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Благодарю за совет и пример!!! Вот только как его и куда применить? Подскажите, пожалуйста... Если правильно понимаю... его надо вставить на страницу, которую требуется закрыть от доступа из вне через строку браузера, сразу же после начала PHP кода, т.е. после <?php Правильно или всё же нет??? Заранее благодарю за ответ. Добавлено через 3 минуты и 24 секунды
Вы совершенно правы, переадресация из платёжки на страницу сайта после оплаты происходит в течение 10 секунд... |
||||||
|
|||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
ksnk, понятно. если участвует более одного сайта, то задержка может быть большой, и одной сессией, без бд не обойдешься.
но технических проблем с устареванием сессии я не вижу: 20 мин достаточно; можно установить хоть 10 часов
ну, если она происходит с чужого сайта, это нам не поможет, см. выше. Добавлено через 2 минуты и 35 секунд итого: скрипт страницы, к которой не должно быть прямого доступа, должен 1. идентифицировать клиента (это может быть сессия или любой другой подходящий id) 2. проверять состояние платежа в базе парой строк тут не обойтись |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
В общем, да. А чья система оплаты ставится? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| bscint13 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Не совсем понятен вопрос... чья система ставится... электронная платёжная... Perfect Money. Вы это имели ввиду??? По идее, как подсказывает интуиция, Ваш пример должен подойти, однако кто знает... не проверив, не узнаешь... сегодня постараюсь проверить и уже обязательно отпишусь здесь же... Благодарю за помощь!!! Также благодарен Всем участникам данного поста!!! Добавлено через 8 минут и 38 секунд
Вы правы... идентификация клиента выполняется с помощью $_Session, а вот в проверке состояния платежа в базе, наверное в более сложном варианте скрипта он бы имел место - нет необходимости... хотя??? Во всяком случае в используемом мной скрипте таблица в базе под платежи не предусмотрена... Прошу отнестись с пониманием к написанному мной... как писал в первом посте - в PHP и вообще программировании - Я лузер... в наше время очень тяжело найти надёжного и верного партнёра, согласитесь... |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Да, именно это. Там, видимо, простая форма для оплаты? Ну, для несложных магазинчиков без бухгалтерии можно и так. Все более сложные операции, типа возврата средств и неожиданной доплаты за заказ можно и вручную проводить. К тому же нужно обязательно проверять корректность платежа, хотя бы используя предлагаемые там скрипты проверки, иначе довольно легко обмануть такую систему оплаты. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| bscint13 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Да... меня постигло разочарование... К сожалению, данная страница всё-равно доступна из строки браузера, никакой реакции... Вот как у меня записано в коде данной страницы: <? if($_SERVER['REQUEST_METHOD']=='POST'){ // это вход платежной системы } else { // это вход через адресную строку } include'../config.php'; $title="$CONFIG->site Оплата прошла успешно!"; и так далее... Скажите, пожалуйста, я правильно вставил Ваш пример кода или всё же нет? |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Имелось ввиду что-то вроде
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| bscint13 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 13.2.2014 Репутация: нет Всего: нет |
Я действительно не так написал, в принципе этого и следовало ожидать... поэтому прошу не судить строго... особенно за последующий вопрос и оказать всё же помощь... за что буду очень благодарен и признателен. Небольшое уточнение, простите уж... Фрагмент кода: } else { // это вход через адресную строку header("HTTP/1.0 404 Not Found"); echo 'Тут рыбы нет'; exit(); } указанный после... и так далее... Следует писать после футера, т.е. нижнего колонтитула сайта, перед закрытием ?> PHP кода или всё же до футера... Простите не так богат знаниями и опытом, чтобы знать куда влепить данный фрагмент. И от всей души поздравляю Вас и участников данного поста с Праздником Всех Влюблённых, Днём Святого Валентина... Здоровья, счастья, любви и всех благ!!! |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |