Как обмениваться данными сеанса между Django и PHP в одном домене - PullRequest
3 голосов
/ 17 июня 2011

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

Пока все хорошо, но:

В том же домене у меня большойКоллекция PHP-страниц, работающих на Apache.Я хочу иметь возможность войти в систему через мое приложение Django и заставить django инициировать все мои переменные сеанса, а затем, когда я нажимаю ссылку, которая ведет меня в раздел php, я хочу иметь возможность доступа к переменным сеанса, которые я создал в Django в php.

Какой мой лучший вариант для совместного использования сеанса?

(Если есть какая-то разница, PHP не редактирует сеанс, а использует только переменные)

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Вы можете реализовать свой собственный Пользовательский обработчик сеансов в PHP. Подключитесь к базе данных, в которой вы храните данные сеанса из базы данных Django, и тогда эти данные будут прозрачно предлагаться в PHP в качестве значений сеанса.

Преимущество пользовательского обработчика сеансов также в том, что вы можете сделать этот сеанс в PHP защищенным от записи, просто отбросив любые изменения.

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

0 голосов
/ 17 июня 2011

УДАЧИ !! (в своем роде). Его немного взломали, но мне удалось заставить его работать.

Вместо того, чтобы пытаться переписать файл django_php_bridge db.py, чтобы использовать новую версию phpserialise (1.2),

Я использовал старую версию с парой собственных настроек. Самое главное, что мне пришлось добавить дополнительный оператор if в функцию serialize для преобразования строки в юникоде, но кроме этого я просто следовал файлу djang_php_bridge с инструкциями (не забывая установить поле SESSION_COOKIE_NAME в файле настроек django), и он сразу сработал .

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

...