Intereting Posts
Подчинение формы PHP с помощью jQuery Mobile WordPress: показывать только будущие сообщения минус один день Как добавить фоновое изображение при создании текстового изображения с использованием php? Ошибка анализа: синтаксическая ошибка, неожиданная '' (T_ENCAPSED_AND_WHITESPACE) Невозможно обновить или удалить динамически с помощью twig и php oop Быстрая и простая защита от наводнений? Заполнение раскрывающегося списка HTML / PHP на основе первого выбора pagination не ссылается на предложение where при нажатии новой страницы Google latitude возвращает пустой ресурс местоположения. Что-то не так в этом потоке Oauth? Рекомендации по использованию и хранению информации о кредитных картах с помощью PHP Операторы PDO автоматически экранируются? Соответствие для нечувствительной к регистру точной фразы с пробелами PHP: лучший способ извлечь текст в круглых скобках? Разделить разделяемые запятыми имена с помощью PHP Поместите URL-адреса из строки в массив с помощью regex (проблема с периодом ожидания)

удалять переменные сеанса, когда идентификатор сеанса известен, но не может запускать сеанс

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

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

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

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

session_start(); $a = session_id(); mail("webmaster@mysite.com", "ipn session id 0", $a, "From: webmaster@mysite.com"); //results in blank email, unlike in other locations on actual displayed pages // Unset all of the session variables. $_SESSION = array(); // Delete the session cookie to kill the session if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } // Finally, destroy the session. session_destroy(); unset($_SESSION['cart']); unset($_SESSION['product_id_array']); unset($_SESSION['pp_checkout_btn']); unset($_SESSION['state']); unset($_SESSION['total']); unset($_SESSION['shipping']); unset($_SESSION['grand_total']); 

но когда я вернусь на страницу просмотра, она все еще там. Любые идеи очень приветствуются. более конкретный код, который поможет, сообщите мне, и я опубликую его.

Related of "удалять переменные сеанса, когда идентификатор сеанса известен, но не может запускать сеанс"

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

После успешной оплаты вам придется очистить переменные сеанса при возврате на ваш сайт. Это не безупречно – есть возможности, что тележка по-прежнему не будет очищена, но это почти единственный способ сделать это.