Возможно ли очистить переменную другого сеанса?

#php #session

#php #сессия

Вопрос:

У меня есть некоторая информация, хранящаяся в $ _SESSION, сеанс сохраняется в базе данных через пользовательский обработчик сеанса.

Существует ли стандартный способ либо «олицетворять» сеанс, имеющий идентификатор сеанса, либо очистить определенные переменные из другого сеанса.

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

Что я хочу найти, так это способ очистить исходную переменную сеанса из запроса уведомления paypal, который видит другой сеанс. Есть ли способ сделать это?

Одной из идей могло бы быть ручное редактирование базы данных, в которой хранятся данные сеанса, но я хочу поискать что-нибудь стандартное, независимо от обработчиков сеанса.

Комментарии:

1. Стандартный способ «олицетворения» сеанса называется «перехват сеанса»; и обычно используется людьми того типа, от которых вы обычно хотели бы защитить свой сайт. Мне, конечно, было бы неудобно использовать этот метод против paypal.

Ответ №1:

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

Что я хочу найти, так это способ очистить исходную переменную сеанса из запроса уведомления paypal, который видит другой сеанс. Есть ли способ сделать это?

Если вам понадобилось отредактировать данные в чужом сеансе, вам не следует хранить эти данные в сеансе с самого начала.

Если вам нужно прочитать или иным образом поработать с IPN, возможно, вам следует сохранить их в базе данных в реальной таблице. Вы можете связать строку с идентификатором сеанса пользователя или, предпочтительно, с его логином или адресом электронной почты.

Ответ №2:

Сеансы работают из-за файлов cookie браузера. Если вы удалите cookie, это создаст новый сеанс. Если вы измените свой cookie на один для другого сеанса, вы теперь выдаете себя за этот сеанс.

Вы можете использовать инструменты разработчика Chrome или дополнение веб-разработчика Firefox, чтобы получить легкий доступ к файлам cookie ваших браузеров.

Комментарии:

1. По умолчанию он работает с файлами cookie, я использую свой собственный обработчик сеанса для хранения данных в базе данных. Я не хочу изменять файлы cookie или базу данных, я ищу общий подход

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

Ответ №3:

Вы пытались создать массив сеансов и присвоить ему идентификатор.

вот так

 $_SESSION['ipn'] ="";
$_SESSION['ipn']= "Mescalito";
  

Комментарии:

1. Не уверен, что я понимаю вас здесь, это только добавляет данные в $ _SESSION , это не совсем то, о чем я спрашивал.

Ответ №4:

В первую очередь в этом не должно быть необходимости.

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