Έλεγχος multiple browser instances

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

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

Απάντηση
dotoree
Δημοσιεύσεις: 16
Εγγραφή: 29 Ιαν 2009 10:51

Έλεγχος multiple browser instances

Δημοσίευση από dotoree » 20 Φεβ 2009 18:26

Καλήσπέρα παιδιά.

Μήπως γνωρίζει κάποιος (ή έχει καμιά ιδέα :)) πώς μπορούμε να ελέγχουμε αν μια σελίδα μπορεί να έχει ανοιξει σε πολλά browser tabs (μοιράζονται το ίδιο session) απο ότι βρήκα clientside (javascript) δεν παίζει κάτι... server side με php δεν ξέρω αν υπάρχει τρόπος...

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Έλεγχος multiple browser instances

Δημοσίευση από soteres2002 » 21 Φεβ 2009 11:24

Για tabs προσωπικά δεν γνωρίζω αν υπάρχει κάποια αξιόπιστη λύση, αλλά ξέρω ότι μπορείς να ελέγχεις απο script πόσες ταυτόχρονες συνδέσεις υπάρχουν στον σέρβερ σου από ενα μοναδικό browser μια δεδομένη στιγμή (δλδ κάτι σαν το rapidshare). Μπορεί να γίνει σε κάθε web server, και υπάρχουν modules για Apache/Lighttpd, αλλά μπορείς να επεκτείνεις το server εσύ αν έχεις όρεξη. Το script μπορεί να επικοινωνήσει με το server και να πάρει τις μετρήσεις που κάνει (ο server) για κάθε ΙΡ, και άρα να μπλοκάρει ή να επιτρέπει πρόσβαση σε περισσότερους πόρους σε μια ΙΡ.

dotoree
Δημοσιεύσεις: 16
Εγγραφή: 29 Ιαν 2009 10:51

Έλεγχος multiple browser instances

Δημοσίευση από dotoree » 21 Φεβ 2009 17:10

soteres2002 έγραψε:Για tabs προσωπικά δεν γνωρίζω αν υπάρχει κάποια αξιόπιστη λύση, αλλά ξέρω ότι μπορείς να ελέγχεις απο script πόσες ταυτόχρονες συνδέσεις υπάρχουν στον σέρβερ σου από ενα μοναδικό browser μια δεδομένη στιγμή (δλδ κάτι σαν το rapidshare). Μπορεί να γίνει σε κάθε web server, και υπάρχουν modules για Apache/Lighttpd, αλλά μπορείς να επεκτείνεις το server εσύ αν έχεις όρεξη. Το script μπορεί να επικοινωνήσει με το server και να πάρει τις μετρήσεις που κάνει (ο server) για κάθε ΙΡ, και άρα να μπλοκάρει ή να επιτρέπει πρόσβαση σε περισσότερους πόρους σε μια ΙΡ.
Κατα ρχήν soteres2002 ευχαριστώ για την απάντηση σου, αλλα νομίζω οτι η IP δεν είναι η λύση (μπορεί πχ να έχουν πρόσβαση διαφορετικά άτομα μεσα απο ενα ιντερνετ καφε το οποιό μοιράζεται την ίδια IP). Mετρήσεις για κάθε IP μπορείς να κάνεις και μέσω της PHP, αλλα δεν νομίζω ότι είναι εκεί το θέμα.

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Έλεγχος multiple browser instances

Δημοσίευση από soteres2002 » 21 Φεβ 2009 18:53

Ναι, έχεις δίκιο για τις ΙΡ. Αν σε νοιάζει και αυτή η περίπτωση, μπορείς να χρησιμοποιήσεις το session id και να καταγράφεις κάθε φορά που κάνουν hit κάτι την τρέχουσα ώρα. Στο επόμενο hit βρίσκεις την ώρα που έγινε από το ίδιο session id κάποιο request προηγούμενως (αν έγινε). Αν η διαφορά των χρόνων μεταξύ των 2 requests είναι μεταξύ ενός συγκεκριμένου ορίου πχ 1 λεπτό, αρνείσαι την πρόσβαση και τους λές δοκιμάστε αργότερα, αλλιώς στέλνεις τα περιεχόμενα που θες (μέσα από το script, και στέλνοντας διαφορετικό content-type header αν είναι απαραίτητο). Με αυτόν τον τρόπο, πρέπει να σκεφτείς σωστά πώς θα καθαρίζεις αυτές τις εγγραφές από την ΒΔ, διότι μπορεί να γεμίσεις άσκοπα με άχρηστες εγγραφές ή ακόμα κατα λάθος να μην δίνεται σωστά πρόσβαση στο χρήστη. Ίσως το καθάρισμα θα μπορούσε να γίνει με το logout, ή μέσω ενός cron job (πχ κάθε 5 λεπτά) για να αποφύγεις την περίπτωση που κάποιος δεν κάνει logout. πχ σβήσε το ιστορικό κάθε χρήστη που έκανε έτηση εντός των προηγούμενων 45 λεπτών και δεν είναι τώρα συνδεδεμένος.

dotoree
Δημοσιεύσεις: 16
Εγγραφή: 29 Ιαν 2009 10:51

Έλεγχος multiple browser instances

Δημοσίευση από dotoree » 23 Φεβ 2009 14:04

soteres2002 έγραψε:Ναι, έχεις δίκιο για τις ΙΡ. Αν σε νοιάζει και αυτή η περίπτωση, μπορείς να χρησιμοποιήσεις το session id και να καταγράφεις κάθε φορά που κάνουν hit κάτι την τρέχουσα ώρα. Στο επόμενο hit βρίσκεις την ώρα που έγινε από το ίδιο session id κάποιο request προηγούμενως (αν έγινε). Αν η διαφορά των χρόνων μεταξύ των 2 requests είναι μεταξύ ενός συγκεκριμένου ορίου πχ 1 λεπτό, αρνείσαι την πρόσβαση και τους λές δοκιμάστε αργότερα, αλλιώς στέλνεις τα περιεχόμενα που θες (μέσα από το script, και στέλνοντας διαφορετικό content-type header αν είναι απαραίτητο). Με αυτόν τον τρόπο, πρέπει να σκεφτείς σωστά πώς θα καθαρίζεις αυτές τις εγγραφές από την ΒΔ, διότι μπορεί να γεμίσεις άσκοπα με άχρηστες εγγραφές ή ακόμα κατα λάθος να μην δίνεται σωστά πρόσβαση στο χρήστη. Ίσως το καθάρισμα θα μπορούσε να γίνει με το logout, ή μέσω ενός cron job (πχ κάθε 5 λεπτά) για να αποφύγεις την περίπτωση που κάποιος δεν κάνει logout. πχ σβήσε το ιστορικό κάθε χρήστη που έκανε έτηση εντός των προηγούμενων 45 λεπτών και δεν είναι τώρα συνδεδεμένος.
Δυστυχώς φίλε μου soteres2002, ούτε αυτή η λύση με τα activity intervals θα δουλέψει λόγω των ιδιατεροτήτων της εφαρμογής.

Για να δώσω ένα παράδειγμα ας υποθέσουμε το εξής: Ότι κατασκευάζουμε ένα site όπου ο κάθε χρήστης κάνει login για να βλέπει την ώρα (γελίο και εντελώς υποθετικό, αλλά μιάζει με αυτό που κάνει η εφαρμογή) με μορφή ΩΩ:ΛΛ:ΔΔ και η ώρα αυτή ανανεώνεται κάθε ένα δευτερόλεπτο μέσω κλήσης AJAX. Αν μπορεί ο συνδεδεμένος χρήστης να ανοίγει πολλά tabs, μου επιβαρύνει το σύστημα άσκοπα και δεν το θέλω. Το πρόβλημα είναι το κοινό session_id μεταξύ των tabs. Μέρος του AJAX παίζει με xajax και μπορεί και εκεί να κρύβεται η λύση.... είδωμεν!

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Έλεγχος multiple browser instances

Δημοσίευση από cherouvim » 23 Φεβ 2009 21:56

Κάνεις όντως μία http κλήση κάθε δευτερόλεπτο για να πάρεις την ώρα;
Και είναι αυτός ο λόγος που θες να ψάξεις όλη αυτή την ιστορία με τα multiple tabs;

:o

Απάντηση

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

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

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