2013-05-29 4 views
1

Я пытаюсь передать текущий идентификатор пользователя с одного сайта на другой.Выполнение текущего входа пользователя из одного домена в другой

Пример: пользователь регистрируется на user.domain.com, это создает идентификатор пользователя $ _SESSION ['uid']. Мне нужно получить значение этого пользователя для домена domain.com.

Я попытался установки session_set_cookie_params:

session_set_cookie_params(0, "/", ".domain.com", false, false); 

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

Я прочитал много сообщений/ответов, используя либо $ _GET, Cookie, либо HTTP Headers для хранения идентификатора пользователей, но я считаю это очень неуверенным в этом способом.

Как любят Facebook делать с $ facebook-> getUser(); ?

Любая помощь была бы очень признательна, я прочесал сеть для хорошего времени, не повезло.
Спасибо, Крис.

+0

У вас есть доступ к созданию таблицы базы данных на обоих серверах? –

+0

@Phil Crosyes да, на самом деле, оба сайта будут подключаться к одной и той же базе данных MySQL – Chris

+0

Еще лучше :-) –

ответ

1

Этот ответ применим только в том случае, если вы можете создать таблицу базы данных на исходном сервере.

Я не буду писать код, но его больше руководства:

1) Создать таблицу на исходном сервере под названием что-то вроде tbl_auth_tokens со следующими полями: record_id (auto_increment primary_key), user_id (int) и token_id (varchar (32)).

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

3) Сохранить пользователей ID и маркер ID в таблицу tbl_auth_tokens, перенаправите пользователя в другой домен с помощью token_id в строке запроса.

4) На новом сервере используйте предоставленный идентификатор токена, чтобы получить идентификатор пользователя из базы данных исходных серверов, затем полностью удалите запись токена.

Этот метод, по меньшей мере, остановит видимость идентификатора пользователя, и любые потенциальные evesdroppers будут видеть только файл token_id, который удаляется после того, как пользователь был проверен на втором сервере.

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

Если вам нужно больше указаний, не стесняйтесь комментировать :)

Смежные вопросы