Skocz do zawartości

Cookie na 2 domeny


koras

Rekomendowane odpowiedzi

Raczej nie istnieje standardowy mechanizm, który to robi.

Możesz ustawić cookie na wsztskie subdomeny w domenie za pomocą session_set_cookie_params.

Zawartość cookie możesz skopiować między domenami wstawiając na stronie niewidoczny iframe odwołujący się do adresu spod drugiej domeny, wartość cookie przekażesz przez parametr URL (HTTP GET). Można też pewnie tak zrobić z obrazkiem (<img>) albo skryptem (<script>) lub background-image w klasie CSS, chociaż tutaj nie jestem w 100% pewny.

Odnośnik do komentarza
Udostępnij na innych stronach

wystarczy że przeczytasz dokumentacje: https://pl.php.net/manual/pl/function.setcookie.php, tak czy siak ciacho jest zapisywane w buforze przeglądarki i odczytywane przez konkretną domenę lub subdomene. Czyli możesz zrobić tak że domena aaa.com ci odczyta ciacho, zas xxx.aaa.com już nie. Podobnie odwrotnie.

Pisząc tak prosto z przykładu:

$czas = time()+3600;

setcookie("TestCookie", $value, $czas, "/", "example.com", 1);

setcookie("TestCookie", $value, $czas, "/", "example2.com", 1);

bedziesz mieć to samo ciacho przypisane dla 2 domen i ich subdomen...

..:: Strony WWW ::....:: Nowe technologie ::....:: Hurtownie ::....:: Reszte znajdziesz w google.pl ::..

Odnośnik do komentarza
Udostępnij na innych stronach

Nie zadziała z IE6 / IE7, jedynie w bardzo starych FireFoxach i może w starszym niż IE5.5. Nowe przeglądarki mają domyślnie ustawioną opcję zabezpieczania cookie przed modyfikacją z innej domeny. Czyli musisz mieć na example.com odwołanie do example2.com które to ciasteczko ustawi dla example2.com (i odwrotnie).

IE6 / IE7 ma to domyślnie włączone, ale można to zmienić gdzebiąc w "settings". W firefoxie wyłączyć się tego nie da z tego co wiem.

Jak jesteś na example.com to zadziała jedynie linijka 1. Jak jesteś na example2.com zadziała jedynie 2. Tak samo z odczytem. Wniosek: nie przeniesiesz w ten sposób zawartości ciasteczek. Użytkownik po zmianie domeny zostanie wylogowany. Mechanizm który opisujesz działa tylko i wyłącznie dla subdomen.

Żródło: https://wp.netscape.com/newsref/std/cookie_spec.html

Only hosts within the _specified___domain_ can set a cookie for a domain and domains must have at least two (2) or three (3) periods in them to prevent domains of the form: ".com", ".edu", and "va.us". Any domain that fails within one of the seven special top level domains listed below only require two periods. Any other domain requires at least three. The seven special top level domains are: "COM", "EDU", "NET", "ORG", "GOV", "MIL", and "INT".

The default value of domain is the host name of the server which generated the cookie response.

Stąd też pewnie zalecenie na php.net, żeby przed nazwą domeny dawać ktopkę, jeśli chcemy ustawiać ciastko dla wszystkich subdomen, czyli:

setcookie("TestCookie", $value, $czas, "/", "example2.com", 1); OK

ale

setcookie("TestCookie", $value, $czas, "/", "example2.pl", 1); już nie

Odnośnik do komentarza
Udostępnij na innych stronach

Ooo..

no to mnie zaskoczyłeś. Nie wiedziałem o tym ;)

No to jeśli tak to można zrobić to pod dowolną ilość domen i napisac prosty skrypt wywoływany przez XMLHttpRequest i po problemie :D

Tak chyba sie da bez problemu ;]

..:: Strony WWW ::....:: Nowe technologie ::....:: Hurtownie ::....:: Reszte znajdziesz w google.pl ::..

Odnośnik do komentarza
Udostępnij na innych stronach

zauważyłem że IE7 nie pozwala też na utworzenie ciasteczka w subdomenie dla całej domeny. Czyli: gdybym chciał zrobić na aaa.bb.pl ciacho dla całej domeny bb.pl to nie chce przejść. Ale jeśli zrobie to samo w domenie bb.pl, a nie subdomenie to zadziała pięknie...

..:: Strony WWW ::....:: Nowe technologie ::....:: Hurtownie ::....:: Reszte znajdziesz w google.pl ::..

Odnośnik do komentarza
Udostępnij na innych stronach

Dziwne, powinno pójść, ja mam taki kod, może nie masz ustawione domeny na [kropka]bbb[kropka]pl

// handling long sessions

session_set_cookie_params(3600*24*7 , '/', '.XXXXXXXX.com');

ini_set("session.cache_expire", 60*24*7); // minutes

ini_set("session.gc_maxlifetime", 3600*24*7);

session_save_path("/tmp/___XXX");

user zalogowany dla wszystkich subdomen. Co do XMLHttpRequest to raczej powinno iść (chociaż nie wiem na 100%).

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności