Πέρασμα $_SESSION με $_GET

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από korgr » 20 Φεβ 2012 20:09

Όπως το λέει ο τίτλος.
Ποια θα ήταν η προσέγγιση σας για το πετύχετε;
Για παράδειγμα τα περιεχόμενα ενός session του www.domain1.com να τα υποδεχθεί το www.domain2.com και να συνεχίσει να τα χρησιμοποιεί στο νέο session

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από dva_dev » 20 Φεβ 2012 21:22

Εχεις πρόσβαση και στα 2 domains (ή έστω συνεργασία με κάποιον άλλο);

Το πρώτο πράγμα που μου ήρθε στο μυαλό είναι public/private key encryption.
Το domain1 ζητάει το public key του domain2. Κωδικοποιεί τα δεδομένα του session1 που θέλει να στείλει με το public key και τα στέλνει με κάποιο τρόπο (ακόμα και παράμετρο στο url) στο domain2.
Το domain2 τα αποκωδικοποιεί με το private key του και τα τοποθετεί στο δικό του session2.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από korgr » 20 Φεβ 2012 21:36

Μπορείς να μου δώσεις ένα παράδειγμα σε κώδικα;
Υπάρχει πρόσβαση στα domains

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από dva_dev » 20 Φεβ 2012 21:55

http://php.net/manual/en/function.opens ... ncrypt.php

Δες τα παραδείγματα που έχει πιο κάτω.

Άβαταρ μέλους
panxer
Δημοσιεύσεις: 113
Εγγραφή: 26 Ιουν 2011 20:29
Τοποθεσία: Athens, Greece
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από panxer » 20 Φεβ 2012 23:53

υπάρχει λόγος για τέτοια υλοποίηση; φαίνεται αρκετά επικίνδυνη.

Μια λογική πάντως θα ήταν να παίρνεις τα keys και τα values από το SESSION του domain1 και να καλείς από το domain1 script με με fetch_url ενα script του domain2 με GET παραμέτρους και τιμές ότι ήταν τα keys και τα values στο session του domain1, στη συνέχεια το script αυτό στο domain2 ότι πήρε από αυτό το GET το κάνει array και το βάζει στο SESSION του.

Χοντρικά αυτά.
Άσχημο και επικίνδυνο.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από korgr » 21 Φεβ 2012 10:54

panxer το session που στέλνεται μέσω GET δεν είναι του τύπου sessionVar=value&sessionVar2=value2 κλπ...

Φαντάσου πως είναι κάτι του τύπου
www.domain2.com?session_data=YToxMDp7cz ... owOiIiO30=

Όλο το session δηλαδή περνιέται σαν ένα ενιαίο κωδικοποιημένο string.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από korgr » 21 Φεβ 2012 10:56

dva_dev έγραψε:http://php.net/manual/en/function.opens ... ncrypt.php

Δες τα παραδείγματα που έχει πιο κάτω.
Thanks! :)
Κάτι τέτοιο εφάρμοσα αλλά με την mcrypt

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από dva_dev » 21 Φεβ 2012 13:29

Δεν ξέρω τι ακριβώς έκανες με την mcrypt (συμμετρική ή ασύμμετρη κωδικοποίηση) αλλά αν μπορείς να κάνεις ασύμμετρη κωδικοποίηση με mcrypt προτίμησε τη. Στην ασύμμετρη το public key μπορείς να το διαθέσεις σε οποιονδήποτε στο ζητήσει. Τα δεδομένα που κωδικοποιούνται με το public key, αποκωδικοποιούνται μόνο με το private, οπότε θα μπορεί να κωδικοποιήσει δεδομένα οποιοσδήποτε έχει το public key (το domain1 τώρα, ή και το domain3 αύριο), αλλά να τα αποκωδικοποιήσει μόνο αυτός που έχει το private key (λογικά μόνο το domain2).

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από korgr » 21 Φεβ 2012 14:45

Μόνο private key χρειάζομαι γιατί η όλη ιστορία γίνεται μεταξύ του root και του subdomain του ίδιου domain.
Πάντως ακόμα και παρακάμπτοντας το θέμα ασφάλεια, το να περάσεις ένα session με $_GET είναι πρόκληση :)
Όποιος το δοκιμάσει ποτέ θα καταλάβει, αφού ένα session μπορεί να έχει σύνθετη δομή με δισδιάστατους ή τρισδιάστατους πίνακες, να περιέχει ελληνικούς και άλλους special χαρακτήρες και πολλά παρόμοια καλούδια :)

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πέρασμα $_SESSION με $_GET

Δημοσίευση από jpk » 22 Φεβ 2012 22:31

Kor ρίξε μια ματιά σε αυτό,
http://php.net/manual/en/function.sessi ... andler.php
το να έχεις ένα session σε παραπάνω από ένα domain – sub domain ή ακόμα και σε διαφορετικούς servers είναι ένα παλιό θέμα συζήτησης. Υπάρχουν πολλές διαφορετικές απόψεις, και φυσικά δεν λέω ότι ο τρόπος που σου προτείνω (μέσω βάσης δεδομένων) είναι ο μόνος σωστός για όλους, απλά κοίταξε και αυτή την επιλογή.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από korgr » 22 Φεβ 2012 23:52

Thanks, I'll check it :)

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από agrippas » 24 Φεβ 2012 00:34

Εάν τα δύο domains είναι στον ίδιο server και τα δεδομένα είναι μεγάλα η μέθοδος GET δε θα δουλέψει.

Το πιο λογικό approach είναι το πρώτο domain να γράψει ένα αρχείο με ένα ID στο δίσκο σε μια κοινή τοποθεσία και να περάσει με GET την ID στο δεύτερο domain. Μετά το δεύτερο domain να διαβάσει το αρχείο με την ID που έλαβε.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από korgr » 24 Φεβ 2012 11:13

Ναι κι αυτή είναι μια καλή αντιμετώπιση αν έχεις μεγάλα sessions.
Από τα δικά μου πειράματα προέκυψε πως το μέγεθος του session μου κυμαίνεται από 600 bytes έως 1,5 kb (base64_endoded) με την συντριπτική πλειοψηφία να μην ξεπερνά το 1kb.
Το χαμηλότερο όριο που έχει ο ΙΕ και ο Safari είναι 2kb, ενώ οι άλλοι Browsers δέχονται 4 και 8kb.
Λογικά δεν έχεις μεγαλύτερο φόρτο στο server αν κάνεις r/w στο δίσκο από σελίδα σε σελίδα?
Αυτό θέλω να αποφύγω.
Μια σκέψη είναι να ελέγχω το session length και από κάποιο όριο και πάνω να εφαρμόζεται η λύση του δίσκου, διαφορετικά το πέρασμα με το request.

Thanks για την ωραία ιδέα :)

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από Rapid-eraser » 24 Φεβ 2012 15:04

Είναι για migration αυτό ή κάποιου τύπου redundancy (cluster);
Χρειάζεσαι share ή coop ή απλά one time transfer;
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πέρασμα $_SESSION με $_GET

Δημοσίευση από korgr » 24 Φεβ 2012 15:11

Είναι complicated.
Ο χρήστης εναλλάσσεται σε σελίδες του root και του subdomain οπότε όποια παρέμβαση γίνεται στο session του subdomain πρέπει να μεταφέρεται και στο session του root (όταν ο χρήστης επιστρέψει εκεί).
Δηλαδή είναι στην standar λειτουργία του site, δεν είναι κάποια διαδικασία εφάπαξ...
Πάντως δουλεύει πολύ καλά η τεχνική και αν βρω χρόνο θα προσθέσω και την δικλείδα ασφαλείας για disk r/w σε μεγαλύτερα sessions.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες