Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
 
Start new topic
Odpowiedzi
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

Posty w temacie


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: 3.10.2025 - 13:34