Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Автоматическая авторизация (нестандартный вопрос)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
NeuroZ
Отправлено: 10 Мая, 2012 - 21:36:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Имеем БД (общую для 2х сайтов)
Когда переходим с сайта 1 на сайт 2 - нужно чтобы пользователь автоматически авторизовывался в системе с логином и паролем от сайта 1 (даже если не был на сайте 2 ни разу)
 
 Top
sKaa
Отправлено: 10 Мая, 2012 - 21:42:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


А в чём проблема? По-моему PDO может работать с несколькими базами одновременно.
 
 Top
Bio man
Отправлено: 10 Мая, 2012 - 21:46:08
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




храни в БД уникальную строку (строки), например IP + USER AGENT и проверяй
 
 Top
sKaa
Отправлено: 10 Мая, 2012 - 21:46:16
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Ступил Улыбка Прощу прощения, был не внимателен Улыбка
Ну как вариант поиграть с аргументом домена кукиесов "/"
 
 Top
Dinisimys
Отправлено: 10 Мая, 2012 - 21:49:13
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Сохранять куки для двох сайтов на 1сайте. Если так можно.
 
 Top
NeuroZ
Отправлено: 10 Мая, 2012 - 21:51:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Bio man пишет:
храни в БД уникальную строку (строки), например IP + USER AGENT и проверяй

а можно по подробнее? как мне авторизоваться-то ?
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Мая, 2012 - 21:53:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Есть вариант проще, правильнее и надежнее.
Отправлять на второй сайт запрос в теге script с ключиком некоего хеша в строке запроса.
Второй сайт проверяет совпадение хеша в таблице у юзера и авторизует его ставя куку для своего домена.

Если ходят на втором сайте - тот совершает аналогичные действия по отношению к первому.

CODE (html):
скопировать код в буфер обмена
  1. <script src="http://www.site-two.ru/checker?hash=234ggiyt34yitf7t4ftyvgi234"></script>

(Отредактировано автором: 10 Мая, 2012 - 21:56:54)

 
 Top
Мелкий Супермодератор
Отправлено: 10 Мая, 2012 - 21:57:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




При авторизации на одном сайте:
0) пишете в базу случайное значение, какой-нибудь md5 от microtime, ip и mt_rand
1) подгружаете, например, в ифрейм скрипт второго сайта с передачей get'ом этой строки
2) в скрипте второго сайта проверяете в базе это значение, если совпадает - стартуете сессию или ставите куку какую, по которой потом будете делать автоматический вход при заходе непосредственно на сайт 2.


-----
PostgreSQL DBA
 
 Top
NeuroZ
Отправлено: 10 Мая, 2012 - 22:09:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Мелкий пишет:
При авторизации на одном сайте:
0) пишете в базу случайное значение, какой-нибудь md5 от microtime, ip и mt_rand
1) подгружаете, например, в ифрейм скрипт второго сайта с передачей get'ом этой строки
2) в скрипте второго сайта проверяете в базе это значение, если совпадает - стартуете сессию или ставите куку какую, по которой потом будете делать автоматический вход при заходе непосредственно на сайт 2.

0) т.е. Создать другую таблицу в которую будут записываться эти данные с сайта1 ?
1) а можно тут по подробнее? я чето не пойму при чем тут ифрейм...
2) а как мне поставить эту куку?
(Добавление)
DeepVarvar пишет:
Есть вариант проще, правильнее и надежнее.
Отправлять на второй сайт запрос в теге script с ключиком некоего хеша в строке запроса.
Второй сайт проверяет совпадение хеша в таблице у юзера и авторизует его ставя куку для своего домена.

Если ходят на втором сайте - тот совершает аналогичные действия по отношению к первому.

CODE (html):
скопировать код в буфер обмена
  1. <script src="http://www.site-two.ru/checker?hash=234ggiyt34yitf7t4ftyvgi234"></script>

Ключик некого хэша - это я так понимаю хэш поля password таблицы users. ok.

Почему в теге скрипт? Как это передать?
т.е.

CODE (htmlphp):
скопировать код в буфер обмена
  1.     $pwdToSite2 = "<script><?php $myPwd = mysql_query(SELECT 'password' FROM jos_users WHERE 'user_id' = '$myUserId');?></script>";
  2.     <form action="http://site2.ru">
  3.     <input type="hidden" value="$pwdToSite2" />
  4.     <button>CLICK</button>
  5.     </form>



Так?
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Мая, 2012 - 23:37:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Не так.

Например.
Добавляете на обоих сайтах юзерам еще одно поле "hash".
Создаете ключ юзера из нескольких его данных.
Создание:
PHP:
скопировать код в буфер обмена
  1. $user = array("id" => 32, "name" => "Вася", "email" => "pupkin@mail.ru");
  2. $hash = md5($user['id'] . $user['name'] . $user['email'] . microtime());

С каждым обновлением страницы перезаписываете этот хеш в базе.
Оба сайта должны смотреть в одну БД с юзерами, или в обе и синхронно обновлять хеши.
Вывод на странице первого сайта:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <script type="text/javascript" src="http://www.site-two.ru/checker.php?hash=<?=$hash?>"></script>

NeuroZ пишет:
Почему в теге скрипт? Как это передать?

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

Прием на втором сайте (checker.php):
PHP:
скопировать код в буфер обмена
  1. // ничего не проверяю - это всего лишь пример
  2. $hash = $_GET['hash'];
  3. // далее запрос в базу на поиск данного хеша
  4. // и если оный есть - старт сессии
  5. // будто юзер уже залогинен
 
 Top
NeuroZ
Отправлено: 10 Мая, 2012 - 23:55:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Ок, спасибо всем за подсказки.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB