Во-первых, да, я знаю, что это большая безопасность НЕТ . Но сценарий таков;
При оформлении заказа в интернет-магазине я использую платежный шлюз, который может прокси-форму моей проверки через их SSL.
(следующие URL-адреса - только теория, другие URL-адреса применяются для приложения)
Как это работает, веб-сайт перенаправляет пользователя на его https : //gateway.org/secure-tunnel.php, передавая URL-адрес в запросе, как этот? Url = http://myshop.com/cc-form.php < - должен быть закодирован.
Защищенный туннель запрашивает URL-адрес - добавьте магию по URL-адресу в документе - и покажет его пользователю.
Теперь я хочу передать идентификатор сеанса в URL cc-form.php, и эта часть заработала. НО запрашиваемая страница не принимает переданный идентификатор сеанса.
Есть идеи на этот счет?
Следующее из моего application.ini
resources.session.name = UPSSESSID
resources.session.save_path = APPLICATION_PATH "/../data/session"
resources.session.use_only_cookies = off
resources.session.referer_check = off
resources.session.remember_me_seconds = 864000
Также во время исследования я обнаружил, что расширение Suoshin может вызывать некоторые проблемы, поэтому я добавил это в .htaccess
php_flag suhosin.session.cryptua off
Я использую маршрут к моей платежной форме
$this->_helper->url->url(array(session_name() => Zend_Session::getId()), 'payment')
РЕДАКТИРОВАТЬ: возможно, довольно хитрое решение
Мне действительно удалось восстановить сеанс, вставив его в _initApplication()
в моем файле начальной загрузки. Это довольно хитроумно, так что, если кто-нибудь знает о лучшем - более ZF'ish - пути, пожалуйста, совет!
if(isset($_GET[$appConfig->resources->session->name])) {
session_id($_GET[$appConfig->resources->session->name]);
}
РЕДАКТИРОВАТЬ: DOH!
Хорошо .. Оказывается, предыдущая правка не нужна. Непосредственно перед тем, как добавить предыдущие строки в загрузчик, я также изменил расположение URL.
Изменил его с /pay/UPSSESSID/{session-id-here}
на /pay?UPSSESSID={session-id-here}
- И это было на самом деле корень проблемы: (
Теперь я удалил строки из начальной загрузки и сессию, которую я восстановил правильно.
Моя ошибка!