Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]połączenie 2 serwisów (rejestracja użytkowników)
thurinon
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 2
Dołączył: 8.10.2009

Ostrzeżenie: (0%)
-----


Witam.
Nie znam się za bardzo na PHP i MySQL, ale niestety "muszę" połączyć dwa serwisy.
Mam serwis ogłoszeń np. na domenie "ogłoszenia", serwerze "ogłoszenia" i bazie danych "ogłoszenia"
teraz tworzę stronę, na której chciałbym stworzyć małą społeczność.
Oba serwisy dają możliwość rejestracji użytkownika edycji konta i takie tam.
Problem polega na tym że oba serwisy mają dwie różne bazy danych stojące na dwóch różnych serwerach i dwóch różnych domenach.
Jak to połączyć, aby użytkownik rejestrujący się w jednym serwisie, miał założone konto na obu serwisach - to samo hasło ten sam login, funkcjonalność poszczególnych paneli użytkownika nie będzie zsynchronizowana. Chodzi tylko o login i hasło...
Dodam, że nie mogę umieścić ich na jednym serwerze na jednej domenie, ani w jednej bazie danych, tego niestety nie da się zmienić, mam jednak dużo czasu. (IMG:style_emoticons/default/winksmiley.jpg)
PS. Wiem że porywam się na głęboką wodę (a może nie?), ale musieć znaczy chcieć (czy jakoś tak). (IMG:style_emoticons/default/rolleyes.gif) Z góry dzięki za wszelką pomoc, propozycje, i podpowiedzi
Pozdrawiam (IMG:style_emoticons/default/smile.gif)

Tej nocy googel mnie zabije (IMG:style_emoticons/default/sciana.gif)
Go to the top of the page
+Quote Post
jmail
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


a czy PHP stoi na tym samym serwerze dla obydwóch serwisów? Wtedy nie byłby to problem - rozwiązałbyś sesją.

Jeżeli stoją na osobnych serwerach to tylko zabawa z ciastkami + jakieś cholernie mocne zabezpieczenie + ewentualnie przekazywanie z jednego do drugiego serwisu zmienną POST identyfikator sesji i utrzymywanie informacji o sesji na obydwóch bazach danych.

Ciastka chyba odpadną przy różnych domenach


na przykład:

struktura tabeli dla sesji

session_id
id_user
pass?(IMG:style_emoticons/default/questionmark.gif) ? - raczej nie - to możesz łatwo przy rejestracji zdublować.

I teraz

z jednego serwisu przechodzisz na drugi:

nie przechodzisz linkiem tylko formularzem. Naciśnięcie linka do drugiego serwisu musi spowodować wysłanie ID sesji na przykład

na pierwszym serwisie

zapisz id sesji do bazy

do każdej strony dodaj

  1. <form name="ukryta_sesja" method="POST" action="">
  2. <input type="hidden" name="podaj_dziwna_nazwe_nie_id_sesji" value="wstaw_wartosc_id_sesji">
  3. </form>
  4.  
  5. <a href="java script:void(0)" onClick="przekazParametry(Link do drugiego serwisu)">opis</a>
  6.  
  7. <script type="text/javascript" language="JavaScript">
  8. function przekazParametry(link){
  9. ukryta_sesja.action = 'link';
  10. ukryta_sesja.submit();
  11. }


link wiadomo dodajesz tam gdzie potrzebujesz.

Natomiast to co masz wyżej dodaj w stopce każdej strony.

teraz na drugim serwerze gdzie będą dane odbierane:

  1. if(isset($_POST['podaj_dziwna_nazwe_nie_id_sesji'])){
  2. //tutaj odtwórz sesję użytkownika
  3. }


To jedno rozwiązanie. I jest ono delikatnie rzecz ujmując niebezpieczne i moze doprowadzić do przejęcia sesji. Zostawię jednak dla potomnych w razie gdyby komuś do czegoś innego się przydało.

Natomiast w trakcie pisania odpowiedzi wpadłem na inny pomysł :F

Procedura wygląda tak.

Na obydwóch serwisach musisz mieć takie same nazwy pól do logowania. Na przykład

  1. <form name="logowanie" method="POST" target="" action="">
  2. <input type="text" name="login">
  3. <input type="password" name="pass">
  4. <input type="button" value="loguj" onClick="loguj()">
  5. </form>


teraz dodajesz do strony iframe'a (do obydwóch stron logowania na obydwóch serwerach)

  1. <iframe name="logowanie_na_drugim_serwerze" id="logowanie_na_drugim_serwerze"></iframe>


na koniec dopisujemy funkcję JS

  1. <script type="text/javascript" language="JavaScript">
  2. function loguj(){
  3. //najpierw zalogujmy się na drugim serwerze
  4. //ustawiamy, że formularz ma być wysłany na iframe
  5. logowanie.target = 'logowanie_na_drugim_serwerze';
  6. //ustawiamy na jaki url ma być przesłany formularz
  7. logowanie.action = 'link_do_strony_obslugujacej_logowanie_na_drugim_serwerze_http://_na_poczatku_koniecznie!!!!';
  8. //wysyłamy formularz
  9. logowanie.submit();
  10. //po stronie drugiewgo serwera przeprowadź normalną procedurę logowania
  11.  
  12. //dajmy sobie jedną sekundę na przetworzenie formularza na drugim serwie i ustawienie cistka!
  13. var date = new Date();
  14. var curDate = null;
  15. do {
  16. curDate = new Date();
  17. }
  18. while(curDate-date < 1000)
  19.  
  20. //teraz zalogujmy się do serwera na który weszliśmy
  21. //ustawiamy, że formularz ma być wysłany bez iframe
  22. logowanie.target = '';
  23. //ustawiamy na jaki url ma być przesłany formularz
  24. logowanie.action = 'link_do_strony_obslugujacej_logowanie_na_tym_serwerze';
  25. //wysyłamy formularz
  26. logowanie.submit();
  27. //tutaj też przeprowadź normalną procedurę logowania
  28. }
  29. </script>


jak dołozysz do tego ciastko to wszystko pięknie pójdzie i zalogujesz się na obydwu serwerach. Dlaczego najpierw na drugim serwerze się logujemy? żeby ciastko się ustawiło, i żeby możnabyło normalnie sesję zrobić

Miłego dnia (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
f1xer
post
Post #3





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

Ostrzeżenie: (0%)
-----


a czy z serwera A możesz połączyć się z bazą danych serwera B? i na odwrót? jeżeli tak to masz problem z głowy możesz wyedytować proces zapisywania użytkownika do bazy i po dodaniu do bazy macierzystej możesz dopisać dodawanie do drugiej bazy danych. Drugi sposób to zaimplementowanie obsługi protokołu Wykonywania zdalnych procedur, np. XML-RPC.
Go to the top of the page
+Quote Post
thurinon
post
Post #4





Grupa: Zarejestrowani
Postów: 55
Pomógł: 2
Dołączył: 8.10.2009

Ostrzeżenie: (0%)
-----


serwis www - SERWER = Home.pl Domena = Netart wywalona na home.pl baza danych na home oczywiście
ogłoszenia - SERWER netart (nazwa.pl) domena netart baza danych = net art.
Nie wiem jak to ze sobą współpracuje :/

Jmail. Dzięki za pomoc, ale o ile dobrze rozumiem (godz 4:47) ;/ napisałeś/aś ;p mi jak sprawić aby podczas przechodzenia z jednego serwisu na drugi, nie wylogowało użytkownika (IMG:style_emoticons/default/smile.gif) ... na pewno się przyda, jak już sprawie że wspomniany użytkownik będzie zarejestrowany za jednym razem na obu serwach. (IMG:style_emoticons/default/smile.gif)

f1xer. XML-RPC zacząłem googlować, przeraziłem się i wyłączyłem przeglądarkę... (IMG:style_emoticons/default/smile.gif) ... chodzi o to że w momencie kiedy użytkownik wypełnia formularz rejestracji na serwisie A to dzięki XML-RPC nieświadom niczego robi to również na serwisie B (IMG:style_emoticons/default/questionmark.gif) całkiem sprytne by to było ...

ok ok Już idę spać (IMG:style_emoticons/default/smile.gif) Dobranoc i dzięki za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-T-ox-
post
Post #5





Goście







Witam, a da się połaczyć np bazę webSPELL z bazą phpBB?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:28