PHP session használata iframe-ben (cross-domain)

PHP session használata iframe-ben (cross-domain)
2015-09-15T22:40:39+02:00
2015-09-16T13:40:46+02:00
2022-12-02T20:10:39+01:00
guard
Üdv!

Van egy alkalmazásom facebook lapfülön, ami annyitjelent, hogy a facebook ad egy IFRAME-et, amiben futtathatom a PHP programomat. Mivel nagyon időigényes lenne minden oldaltöltéskor lekérnem a felhasználó adatait (1,1 - 1,2 sec!!!), ezért SESSION változón keresztül adogatom át az oldalak között, ha egyszer már megkaptam.

Teszteltem több böngészőn és több oprendszer alatt, és jellemzően Safari-ban olyan szigorú a cookie használat, hogy ha más domain szolgálja ki az IFRAME-et, mint a szülőt, akkor blokkolja, így nem működik a PHP session.  (Sőt, találtam olyan gépet WIN 7 - 64 bit oprendszerrel, hogy Safari-n kívül más böngészőn is rossz volt!)

Úgy oldaottam meg egyelőre, hogy lekérdezem, él-e a cookie? Ha nem, akkor betöltöm a legfelső frame-be a saját domain-em egy scriptjét, ott elindítom a sessionkezelést, ezután visszatöltöm a facebook oldalamat:
INDEX.PHP-m eleje:
---------------------------------

session_start (); if (count($_COOKIE) === 0) { print "<script type="text/javascript"> \n"; print "window.top.location.href = 'https://[sajat_domain]/cookie_beallito.php';"; print "</script> \n"; }
---------------------------------

a COOKIE_BEALLITO.PHP pedig:
---------------------------------

session_start (); header("Location: https://www.facebook.com/[oldalcimem]/app_123456789"); die;
---------------------------------

Fapados megoldás, de egyelőre nincs jobb ötletem. Mit tanácsoltok? Lehet, hogy így is fogok találni olyan böngészőt / összeállítást, amin nem fog futni? Vagy adogassam át GET / POST paraméterekként a SID-t? Vagy más?

Köszönöm szépen előre is!
Mutasd a teljes hozzászólást!
Ėn biztosan átállnék a session id get paraméterbe történő átadására. Csak get, nem post. Ha post-olsz, akkor is a cél url-be tennėm bele get paraméterként. A php a beállításai közül használhatod a session.use-trans-sid-et erre a célra.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd