Это очень теневая область безопасности PHP - как сохранить сеанс, не раскрывая cookie или идентификатор сеанса в URL? К сожалению, единственное безопасное решение - использование куки, но я постараюсь объяснить, как сделать его максимально безопасным.
Перед тем, как пользователь покинет сайт, вам необходимо подготовить базу данных для ее принятия без необходимости повторного ввода данных для входа в систему - создайте в своей пользовательской таблице два столбца - «ключ» и «время ожидания».
Теперь, когда пользователь готовится покинуть сайт через ваш платежный шлюз, вам необходимо обновить свою запись в базе данных - сгенерировать уникальный ключ для хранения.
$key = md5(uniqid(rand(), true));
Сохраните это в базе данных вместе с тайм-аутом (скажем, час, два или даже целый день - все, что вам нужно). Пока они возвращаются в течение указанного периода времени и могут выдать правильный ключ, система будет продолжать распознавать пользователя, и вам не придется беспокоиться о повторном входе в систему.
Теперь нам нужно установить cookie с тем же ключом и, скажем, соленый хэш md5 их имени пользователя (на всякий случай). Не забудьте указать тот же тайм-аут, который вы указали в базе данных (вы не хотите, чтобы старые файлы cookie с конфиденциальной информацией валялись вечно).
Как только они вернутся на сайт, возьмите cookie с уникальным идентификатором и хэшированным именем пользователя и сравните его с комбинацией ключ / тайм-аут в вашей базе данных. Если они совпадают, все хорошо. Затем удалите куки.