Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]połączenie 2 serwisów (rejestracja użytkowników)
Forum PHP.pl > Forum > Przedszkole
thurinon
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. winksmiley.jpg
PS. Wiem że porywam się na głęboką wodę (a może nie?), ale musieć znaczy chcieć (czy jakoś tak). rolleyes.gif Z góry dzięki za wszelką pomoc, propozycje, i podpowiedzi
Pozdrawiam smile.gif

Tej nocy googel mnie zabije sciana.gif
jmail
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?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 winksmiley.jpg
f1xer
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.
thurinon
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 smile.gif ... na pewno się przyda, jak już sprawie że wspomniany użytkownik będzie zarejestrowany za jednym razem na obu serwach. smile.gif

f1xer. XML-RPC zacząłem googlować, przeraziłem się i wyłączyłem przeglądarkę... 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 questionmark.gif całkiem sprytne by to było ...

ok ok Już idę spać smile.gif Dobranoc i dzięki za pomoc smile.gif
T-ox
Witam, a da się połaczyć np bazę webSPELL z bazą phpBB?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.