Flash counter

Ρουτίνες και scripts που έχουμε φτιάξει σε ActionScript και θέλουμε να τις μοιραστούμε

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

Απάντηση
Άβαταρ μέλους
Knorcedger
Script Master
Δημοσιεύσεις: 1226
Εγγραφή: 18 Μάιος 2004 04:29
Επικοινωνία:

Flash counter

Δημοσίευση από Knorcedger » 13 Μαρ 2006 03:15

Ένας counter για flash sites.

Το γιατί να το χρησιμοποιήσει κάποιος αντί ενός php-counter, είναι ένα θέμα που δεν θα καλυψουμε σε αυτό το πόστ (έλλειψη επιχειρημάτων) (ίσως καποτε το κάνω να μετράει και τα page views, μέσα στο flash, και τότε ίσως γίνει χρήσιμο).

Στην σελίδα σας, στην home page (frame) βαζεται τον παρακάτω κώδικα

Κώδικας: Επιλογή όλων

//----------SHARED OBJECT----------//
counter = SharedObject.getLocal("counter", "/");
lastVisit = counter.data.lastVisit;
//----------MAINDATE OBJECT----------//
today = new Date();
//get the full date
date = (today.getUTCHours()+""+today.getUTCDate()+""+(today.getUTCMonth()+1)+""+today.getUTCFullYear());
//get yeat
nowYear = today.getUTCFullYear();
//get month
nowMonth = today.getUTCMonth();
//get day
nowDay = today.getUTCDate();
//----------XML----------//
friziGETXML = new XML();
friziGETXML.ignoreWhite = true;
friziGETXML.contentType = "text/xml";
//
friziXML = new XML();
friziXML.ignoreWhite = true;
friziXML.contentType = "text/xml";
xml_file = "frizi/db.xml";
server_file = "frizi/update.php";
friziXML.load(xml_file+"?uniq="+new Date().getTime());
friziXML.onLoad = function(success) {
	//xml childNodes
	xmlYear = friziXML.firstChild.childNodes;
	xmlMonth = friziXML.firstChild.lastChild.childNodes;
	xmlDay = friziXML.firstChild.lastChild.lastChild.childNodes;
	//references
	xmlYearRef = friziXML.firstChild;
	xmlMonthRef = friziXML.firstChild.lastChild;
	xmlDayRef = friziXML.firstChild.lastChild.lastChild;
	//check if its a new year
	if (nowYear == xmlYear[xmlYear.length-1].attributes.id) {
		//it is an old year
		//check if its a new month
		if (nowMonth == xmlMonth[xmlMonth.length-1].attributes.id) {
			//it is an old month
			//check if its a new day
			if (nowDay == xmlDay[xmlDay.length-1].attributes.date) {
				//it is an old day
				//check if he has visited the site within 1 hour
				if (date == lastVisit) {
					//it is an old visitor
					xmlDay[xmlDay.length-1].attributes.totalVisitors++;
					updateDB();
				} else {
					//it is a new visitor
					xmlDay[xmlDay.length-1].attributes.uniqueVisitors++;
					updateDB();
				}
			} else {
				//it is a new day
				createDay(false, false);
				updateDB();
			}
		} else {
			//it is a new month
			createMonth(false);
			createDay(true, false);
			updateDB();
		}
	} else {
		//it is a new year
		createYear();
		createMonth(true);
		createDay(true, true);
		updateDB();
	}
};
function createYear() {
	var node = friziXML.createElement("year");
	xmlYearRef.appendChild(node);
	node.attributes.id = nowYear;
}
function createMonth(newYear) {
	var node = friziXML.createElement("month");
	xmlMonthRef.appendChild(node);
	// if it is the first month of a new year
	if (newYear) {
		xmlYearRef.lastChild.appendChild(node);
	} else {
		xmlMonthRef.appendChild(node);
	}
	node.attributes.id = nowMonth;
}
function createDay(newMonth, newYear) {
	var node = friziXML.createElement("day");
	// if it is the first day of a new month of a new year, or the first day of a new month
	if (newYear) {
		xmlYearRef.lastChild.lastChild.appendChild(node);
	} else if (newMonth) {
		xmlMonthRef.lastChild.appendChild(node);
	} else {
		xmlDayRef.appendChild(node);
	}
	node.attributes.totalVisitors = 1;
	node.attributes.uniqueVisitors = 1;
	node.attributes.date = nowDay;
}
function updateDB() {
	counter.data.lastVisit = date;
	friziXML.xmlDecl = "";
	// declaration duplication bug
	friziXML.sendAndLoad(server_file, friziGETXML);
}
φτιάχνεται έναν φάκελο με το όνομα frizi, και βαζεται μέσα ένα αρχείο php με τον κώδικα

Κώδικας: Επιλογή όλων

<?php
$filename = "db.xml";
$raw_xml = file_get_contents&#40;"php&#58;//input"&#41;;

print $raw_xml;

$fp = fopen&#40;$filename, "w"&#41;;
fwrite&#40;$fp, $raw_xml&#41;;
fclose&#40;$fp&#41;;
?>
και τέλος, φτιάχνεται και ένα αρχείο XML, αφήνεται όλους να γράφουν σε αυτό και γράφεται μέσα

Κώδικας: Επιλογή όλων

<counter>
      <year id="2006">
        <month id="2">
          <day date="1" uniqueVisitors="10" totalVisitors="15" />
          <day date="2" uniqueVisitors="12" totalVisitors="19" />
        </month>
      </year>
</counter>
Κλείνωντας σχεδόν ένα χρόνο ενασχόλησης με τον flash, κλείνω και το flash προσωρινά. Ελπίζω μερικους μήνες αργότερα, να καταφερω να το ξανανοιξω. Μέχρι τότε, να περνάτε όλοι καλά :)
Εικόνα
myUbuntu.gr[Ελληνικός οδηγός για Ubuntu]

Άβαταρ μέλους
MinasC
Δημοσιεύσεις: 156
Εγγραφή: 16 Φεβ 2006 01:51
Τοποθεσία: NeverNeverland

Flash counter

Δημοσίευση από MinasC » 16 Μαρ 2006 02:03

ίσα που χάρηκα με το καινούριο σου script , φτάνοντας στο τέλος του post σου πάγωσε το χαμόγελο στα χείλη μου . τι αποφάσεις είναι αυτές ρε φίλε ? εμάς μας ρώτησες που περιμένουμε πως και πως να ανεβάσεις κάτι καινούριο ?

λάθος απόφαση φίλε μου , πολύ λάθος !!!
the flash needs you...and we need you more !!!

πείτε του κάτι και σεις ρε παιδιά ...

Άβαταρ μέλους
MinasC
Δημοσιεύσεις: 156
Εγγραφή: 16 Φεβ 2006 01:51
Τοποθεσία: NeverNeverland

Flash counter

Δημοσίευση από MinasC » 17 Μαρ 2006 01:42

τουλάχιστον πριν εγκαταλείψεις μπορείς να δώσεις μια βοήθεια εδώ ?

http://www.freestuff.gr/forums/viewtopic.php?t=21258

thnx

Απάντηση

Επιστροφή στο “Flash τα δικά μας scripts”

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

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