Могу ли я рассчитывать на доступность сеанса после перенаправления на другой сервер? - PullRequest
0 голосов
/ 26 мая 2009

вопрос действительно в названии.

У меня есть онлайн-форма, в которой после ряда этапов пользователь отправляется в платежный шлюз на другом сервере, а затем возвращается обратно после заполнения своих данных (никакая карточка или личная информация не отправляется, только зашифрованные токены в этом все дело).

Так могу ли я рассчитывать на то, что данные сеанса все еще доступны, когда они отправляются обратно (через POST?), А также должен Я так делаю?

Мое тестирование показало бы, что да, но я впервые пытаюсь сделать что-то подобное. Альтернатива - сохранить прогресс формы перед перенаправлением и затем восстановить его, когда они вернутся. Это было бы лучше и почему, если так?

TIA:)

Ответы [ 4 ]

1 голос
/ 26 мая 2009

Да, вы обычно можете положиться на эту работу.

Ваш сеанс будет по-прежнему истекать в обычном режиме, поэтому, если вы ожидаете, что ваш клиент будет тратить меньше времени на сторонний сайт, чем требуется для тайм-аута сеанса, у вас все будет хорошо.

Я делаю именно то, что вы предлагаете, на некоторых сайтах, которые я поддерживаю, и нет никаких серьезных проблем. Я думаю, что это может быть сложнее, если ожидается, что у большого процента ваших клиентов отключены куки-файлы, но если вы работаете с общественностью, это действительно не проблема.

Однако большинство платежных шлюзов позволяют вам передавать им дополнительную информацию, которую они отправят вам, когда вернут клиента на ваш сайт. Даже если у них нет встроенного способа сделать это, вы добавляете GET-параметры к URL-адресу, который они используют, чтобы вернуть вам клиента. Здесь стоит добавить идентификатор или номер заказа, чтобы вы могли что-то сделать, даже если сеанс закончился.

ПРИМЕЧАНИЕ. Некоторые платежные службы на самом деле не возвращают клиента на ваш сайт в конце транзакции, а просто звонят на ваш сервер, чтобы сообщить вам, что определенный платеж завершен. В этой ситуации ваш сеанс будет не поврежден, так как это не тот клиент, который делает запрос с вашего веб-сервера.

0 голосов
/ 26 мая 2009

Если вы хотите убедиться, что сеанс доступен, вы можете отредактировать тайм-аут файла cookie сеанса следующим образом:

session_set_cookie_params(604800);
session_start();

Срок действия файла cookie истекает через неделю после его создания. По умолчанию он истекает при закрытии браузера.

Подробнее об этом можно прочитать здесь

http: // uk3.php.net/manual/en/function.session-set-cookie-params.php

0 голосов
/ 26 мая 2009

Зависит. Скорее всего, ваши PHP-сеансы обрабатываются с помощью файла cookie, хранящего идентификатор сеанса, однако, если у вашего клиента отключены файлы cookie, то (в зависимости от конфигурации / использования SID) его можно добавить в строку запроса. В случае файлов cookie это должно быть не проблема - сеанс должен продолжаться. Если куки отключены, то вы полагаетесь на своего провайдера платежного шлюза, чтобы предоставить идентификатор сеанса, когда он возвращает клиента

edit: просто для добавления, если клиент не вышел из системы (сеанс завершен), сохранение данных формы в переменных сеанса не должно быть проблемой.

Что касается безопасности, вы можете убедиться, что сеанс каким-то образом ограничен ip (проверяется при каждой загрузке страницы, чтобы убедиться, что он совпадает), чтобы гарантировать, что сеанс не будет захвачен платежным шлюзом или другим недобросовестным человеком. посередине (действительно беспокоит, если куки отключены и строка запроса включает PHPSESSID).

0 голосов
/ 26 мая 2009

Это зависит от времени ожидания сеанса и от того, произошел ли сбой / перезапуск apache Если вам нужен отказоустойчивый способ, сохраните информацию о сеансе обратно в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...