χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

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

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

Απάντηση
erateini
Δημοσιεύσεις: 36
Εγγραφή: 11 Ιούλ 2007 20:10

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από erateini » 06 Οκτ 2007 14:15

Χαιρετώ το forum και όλους όσους ασχολούνται...
Θέλω να υπολογίζω το χρόνο παραμονής κάποιου στο site μου αλλά σε μία συγκεκριμένη σελίδα.

Ο υπολογισμός θέλω να γίνεται ακόμα και αν ο χρήστης/επισκέπτης κλείσει τον φυλλομετρητή κάποια στιγμή, ακόμη και αν πατίσει back ή refresh, με λίγα λόγια ο,τιδήποτε κι αν κάνει φεύγοντας απ'τη συγκεκριμένη σελίδα...

Λογικά θα χρειαστεί php, από εκεί και ύστερα δεν ξέρω, το σύστημα θα κοιτάει ip...,sessions,...δεν έχω βρει λύση...
( Καλό θα ήταν βέβαια να μην περιλαμβάνονται cookies στον υπολογισμό για να μη μπορεί ο χρήστης να επέμβει αλλάζοντάς τα. )

Σκοπός μου είναι να καταγράφω αυτόν τον υπολογισμό σε μία database.

Το έχω ψάξει αρκετά και κάνω μία προσπάθεια και εδώ...
Αν υπάρχει συγκεκριμένη λύση και μπορεί κάποιος να βοηθήσει.....Ευχαριστώ....


erateini
Δημοσιεύσεις: 36
Εγγραφή: 11 Ιούλ 2007 20:10

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από erateini » 06 Οκτ 2007 19:01

Χωριό μου είναι... Αλλά εσύ καμία σχέση με το topic?

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από skeftomilos » 06 Οκτ 2007 20:18

Θα χρειαστείς PHP για να αποθηκεύσης τα στοιχεία στη βάση, αλλά για να μαζέψεις τα στοιχεία θα χρειαστείς JavaScript. Μπορείς να καταγράφεις όλα τα keydowns. keyups και mousemoves του χρήστη στη σελίδα, και κάθε 1-2 sec να τα κάνεις πακέτο και να τα στέλνεις στον server με XmlHttp. Αυτό που ΔΕΝ γίνεται να ξέρεις στα σίγουρα είναι αν ο χρήστης κοιτάει τη σελίδα βλοσυρός και ακίνητος ή έχει αλλάξει tab και βλέπει μια άλλη, ή έχει σηκωθεί να πιει ένα ποτήρι νερό. Θα χρειαζόταν μία real-world υπηρεσία κατασκοπίας που να κάνει χρήση εξελιγμένων ηλεκτρονικών μέσων (κάμερες θερμικής ακτινοβολίας - υπέρηχοι) για να συλλεχθούν απόλυτα αξιόπιστα στοιχεία. :-)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

erateini
Δημοσιεύσεις: 36
Εγγραφή: 11 Ιούλ 2007 20:10

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από erateini » 06 Οκτ 2007 20:41

φίλε μου σ'ευχαριστώ που ενδιαφέρθηκες, είναι ενδιαφέροντα αυτά που λες, κι εγώ πραγματικά εκεί έχω καταλήξει... Δηλαδή νομίζω είναι απαραίτητο να χρησιμοποιήσω javascript για να αποθηκεύσω το χρόνο εισόδου και εξόδου αντίστοιχα σε δύο μεταβλητές, να βρω και τη διαφορά τους, και να περάσω το χρόνο στη database με php. Ωστόσο προβληματίζομαι ως προς τη μεταφορά των μεταβλητών, ή όπως λεσ κι εσύ το πως θα γίνουν πακέτο... Επίσης, με javascript λογικά θα πρέπει να ανιχνέυω το browser close, back, forward κλπ ώστε λογικά τότε να διενεργείται ο τελικός χρόνος παραμονής, έτσι δεν είναι?

Αν μπορούσες να μου δώσεις περισσότερες λεπτομέρειες θα το εκτιμούσα, ακόμη και κάποιες εντολές..έστω τις βασικές...
(από εντολές php είμαι εντάξει...)
Ευχαριστώ εκ των προτέρων...

Υ.Σ. : Όσον αφορά στην υπηρεσία "real world"... εντάξει, νομίζω δε ζητάω κάτι τέτοιο...είναι λίγο εξωπραγματικό! :-)

Άβαταρ μέλους
EneMe
Super Moderator
Δημοσιεύσεις: 13307
Εγγραφή: 09 Ιούλ 2002 13:29
Τοποθεσία: Στο κέντρο της Ελλάδας!
Επικοινωνία:

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από EneMe » 06 Οκτ 2007 20:56

erateini έγραψε:Χωριό μου είναι... Αλλά εσύ καμία σχέση με το topic?
Είμαι κοντοχωριανός και κάθε καλοκαίρι είμαι εκεί για κάποιες μέρες, αλλά δεν πειράζει...
Θυμήθηκα γιατί δεν πάει μπροστά αυτός ο τόπος! :lol:

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από skeftomilos » 06 Οκτ 2007 21:52

Το πρόβλημά σου αυτή τη στιγμή δεν είναι να μάθεις τις εντολές της JavaScript αλλά να ξεκαθαρίσεις τι ακριβώς θέλεις να μετρήσεις. Η έννοια του "χρόνου παραμονής" μπορεί να φαίνεται αρκούντως ξεκάθαρη σε κάποιον που έχει ορισμένες συγκεκριμένες συνήθειες όταν κάνει browsing στο web, όπως το να χρησιμοποιεί μόνο ένα παράθυρο, μόνο ένα tab, και να κλείνει τον browser μόλις τελειώσει την περιήγηση. Αυτή η περιγραφή μπορεί να μην ανταποκρίνεται καθόλου στον τρόπο που λειτουργεί ένας άλλος χρήστης, που έχει ταυτόχρονα τρία παράθυρα ανοιχτά, με δέκα ανοιχτά tabs στο κάθε παράθυρο, και δεν κλείνει ποτέ τον browser.

Αν προσπαθούσες να παρακάμψεις το πρόβλημα αναδιατυπώνοντας την ερώτηση ώστε να αφορά το "μέσο χρήστη", τότε θα έπρεπε κατ αρχήν να οριστεί ποιος είναι ο "μέσος χρήστης", και μετά να αναζητηθούν τεχνικές διαχωρισμού των ΜΗ μέσων χρηστών από τους μέσους, ώστε οι πρώτοι να αγνοηθούν.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

erateini
Δημοσιεύσεις: 36
Εγγραφή: 11 Ιούλ 2007 20:10

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από erateini » 06 Οκτ 2007 22:35

Έχεις δίκιο και πρέπει πρώτα να καθορίσω πώς ακριβώς θα ενεργήσω και μετά τις εντολές.
Ωστόσο, νομίζω πως δεν υπάρχει διαφορά μεταξύ ενός browser close και ενός tab close εφόσον η Javascript θα μετρήσει το τέλος του χρόνου παραμονής με τον ίδιο τροπο...Το ίδιο και για τις άλλες λειτουργίες με τις οποίες "φεύγεις" από τη συγκεκριμένη σελίδα. Υπό'ψην κιόλας ότι αναφέρομαι σε τελείως απλή σελίδα χωρίς links...

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από skeftomilos » 06 Οκτ 2007 22:47

Μα τα tabs δεν τα κλείνεις, τα αφήνεις ανοιχτά. Μόλις διαβάσεις μια σελίδα αλλάζεις tab και διαβάζεις την επόμενη, αφήνοντας ανοιχτό το ενδεχόμενο να επανέλθεις. Ένα tab μπορεί να μείνει ανοιχτό για ώρες, αλλά ο συνολικός χρόνος που το κοίταξε κάποιος να είναι 15 sec.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

erateini
Δημοσιεύσεις: 36
Εγγραφή: 11 Ιούλ 2007 20:10

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από erateini » 06 Οκτ 2007 22:59

Έτσι είναι με τα tabs, αλλά εμένα δεν με ενδιαφέρει αν ο άλλος βλέπει ή δε βλέπει. Εμένα ουσιαστικά με ενδιαφέρει να μετρήσω την ώρα που είναι ανοιχτή η σελίδα μου, κι ο άλλος ας κόψει το κεφάλι του, καταλαβες? Όσον αφορά το συνολικό χρόνο νομίζω δεν έχεις δίκιο, γιατί η javascript μετράει χρόνο παραμονής στον browser, η στο tab...Δεν έχει διαφορά ούτε έχει να κάνει με το αν βλέπεις το tab.,

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από skeftomilos » 06 Οκτ 2007 23:11

Σορρυ δεν κατάλαβα. Ποιος είναι ο άλλος που θα κόψει το κεφάλι του; :-)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

erateini
Δημοσιεύσεις: 36
Εγγραφή: 11 Ιούλ 2007 20:10

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από erateini » 06 Οκτ 2007 23:17

:-) Σχήμα λόγου! Ο επισκέπτης εννοώ!

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από skeftomilos » 07 Οκτ 2007 00:34

Λοιπόν σε γενικές γραμμές αυτό που έχεις να κάνεις είναι να βάλεις τη σελίδα να στέλνει ένα http request στον server κάθε π.χ. 10 sec. Με κάθε request που θα λαμβάνεις θα ξέρεις ότι η σελίδα παρέμεινε ανοιχτή για άλλα 10 δευτερόλεπτα. Όταν ο χρήστης κλείσει τη σελίδα, τα requests θα πάψουν να έρχονται, και θα ξέρεις ότι την έχει κλείσει.

Από τεχνική άποψη σε client-side επίπεδο θα χρειαστείς την setTimeout για να προγραμματίσεις την εκτέλεση των εντολών ανά τακτά χρονικά διαστήματα, και για το request που θα γίνεται με AJAX θα χρειαστεί να μάθεις για τα παρακάτω:

new XMLHttpRequest()
new ActiveXObject('Microsoft.XMLHTTP') ή new ActiveXObject('MSXML2.XMLHTTP')

Σε server-side επίπεδο δε μπορώ να σου πω πολλά πράγματα γιατί οι γνώσεις μου σε PHP είναι περιορισμένες.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

erateini
Δημοσιεύσεις: 36
Εγγραφή: 11 Ιούλ 2007 20:10

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από erateini » 07 Οκτ 2007 01:56

Φίλε μου είσαι ωραίος, σ'ευχαριστώ πολύ, αυτήν την ιδέα με το να στέλνεις requests στον server χρειαζόμουν...Τώρα από δω και πέρα νομίζω μπορώ να προχωρήσω..Αν βρω κάποιο πρόβλημα μπορεί να ξανααπευθυνθώ, ελπίζω όχι βεβαια... Το server-side το καλύπτω μόνος μου, να'σαι καλα!

erateini
Δημοσιεύσεις: 36
Εγγραφή: 11 Ιούλ 2007 20:10

χρόνος παραμονής επισκέπτη/χρήστη σε συγκεκριμένη σελίδα

Δημοσίευση από erateini » 07 Οκτ 2007 12:56

Βασικά επειδή βλέπω ότι ξέρεις από javascript, εγώ κυρίως τα βασικά ξέρω, ο κώδικας είναι αυτός νομίζω...

<script type="text/javascript">
var xmlhttpfunction loadXMLDoc(url)
{
xmlhttp=null
// Code for Mozilla 1.0+, Firefox 1.0+, Safari 1.2+, Opera 9+, and Netscape 7+
var xmlhttp=new XMLHttpRequest()
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest()
}
// Code for Internet Explorer 5.0+
else if (window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
}
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=state_Change
xmlhttp.open("GET",url,false)
xmlhttp.send(null)
}
else
{
alert("Your browser does not support XMLHTTP.")
}
}

function state_Change()
{
// if xmlhttp shows "loaded"
if (xmlhttp.readyState==4)
{
// if "OK"
if (xmlhttp.status==200)
{
var milisec = 0;
var seconds = 0;

function display(){
if (milisec>=9){
milisec=0
seconds+=1
}
else{
milisec+=1
document.d.d2.value = seconds + "." + milisec;
setTimeout("display()",100);
}
}
}
else
{
alert("Problem retrieving XML data")
}
}
}
</script>

Το σωστό είναι να βάλω ένα μετρητή μέσα στο xmlhttp.status==200 ?
Αν ναι, το αποτέλεσμά του τι θα το κάνω μετά ? (λογικά το d2)
Θέλω να το περνάει επαναλαμβανόμενα στη database, πώς θα γίνει ?
Πρέπει να βάλω τον server-side κώδικα μέσα στο xmlhttp.status==200 ώστε να αποθηκεύεται συνεχώς ?

Ή βοηθάει να δουλέψω με μία φόρμα όπως :

<body onLoad="display();">

<form name="d">
<input type="text" size="8" name="d2">
</form>

και από εκέι και ύστερα να παίρνω το d2 με server-side ?

Απάντηση

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

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

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