cum introduc un counter simplu intr-un flash player?

Discutii despre integrarea PHP & Flash; Ming, FlashMX, Actionscript, etc.

Moderator: Moderatori

ApologetX
Senior Member
Mesaje: 275
Membru din: Dum Oct 16, 2005 11:57 am
Localitate: Timisoara
Contact:

cum introduc un counter simplu intr-un flash player?

Mesajde ApologetX » Joi Ian 27, 2011 2:16 pm

transmit live cu un player flash simplu, free si mi-as dori sa contorizez vizitatorii live (exact cum probabil ati vazut si la ustream.tv, in playerele lor) ,cum as putea sa modific playerul si sa introduc si contorizarea..? ,a mai facut cineva asa ceva? cred ca e action script in spate insa cum nu ma prea pricep, am dat un search dupa un player flash care sa aiba integrat asa ceva si nu am gasit.. ,astept un hint ceva de la voi..



Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Joi Ian 27, 2011 4:48 pm

de ce nu faci contorizarea in PHP, la vizualizarea paginii apoi s-o trimiti ca parametru (flashVars) catre flash s-o afiseze ?

In cazul in care vrei sa faci afisarea player-ului prin intermediul unui embed pe alte site-uri, este mult mai complicat, pentru ca incalci securitatea adobe. Teoretic poti trimite un LoadVars catre un server unde sa faci un simplu insert. Practic, trebuie sa ai la
<object ...
<param name="allowscriptaccess" value="always"> ...

dar nu stiu daca merge asa.

Oricum, ca sa faci oricare dintre astea doua tre' sa ai sursa flash-ului

ApologetX
Senior Member
Mesaje: 275
Membru din: Dum Oct 16, 2005 11:57 am
Localitate: Timisoara
Contact:

Mesajde ApologetX » Mie Feb 02, 2011 2:15 pm

scuze de intarziere,

cu PHP nu stiu daca se poate ce imi doresc eu (poate Ajax) dar hai sa vedem, din cate stiu flashvar-urile sunt citite doar la intrarea pe pagina, daca userul paraseste pagina? eventual se pot apela niste metode din JS spre Flash? eu as vrea sa contorizeze toate afisarile "live" si anume, daca eu deschid 3 tab-uri intr-un browser cu acel player live, vreau sa-mi afiseze 3 useri, daca inchid 2, sa-mi afisez 1 user live.

am swf-ul si si f4m-ul ,iar in embed am si acel parametru allowscriptaccess" value="always" ,cred eu ca trebuie sa fie mai simplu dar nu am acea sclipire.

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Mie Feb 02, 2011 3:47 pm

Ah.... eu am crezut ca tu vrei sa afisezi cati au vizitat acel player, nu cati sunt on-line live.

Pai, in cazul asta e simplu
- trimiti prin flashVars session_id-ul
- faci un setInterval in flash care iti trimite la interval de 2-3 secunde un GET catre un fisier PHP cu id-ul de sesiune
Ai in baza de date un tabel => ID (auto-i), sessionID (varchar), lastAction (bigint)
- fisierul PHP primeste GET-ul si, daca acel session_id nu exista in baza de date face insert, cu time() al lui PHP. Daca exista acel session_id, face update cu noua data. In schimb, va returna lui Flash un COUNT de toate session_id-urile de la care s-au primit request-uri in ultimele 5 secunde.

si, aia e. Ai o marja de eroare de cateva secunde.

ApologetX
Senior Member
Mesaje: 275
Membru din: Dum Oct 16, 2005 11:57 am
Localitate: Timisoara
Contact:

Mesajde ApologetX » Mie Feb 02, 2011 4:02 pm

mda cu PHP-ul ma descurc, nu stiu sa fac actionscript-ul care face request-ul spre PHP. o sa dau un search pe net.. merci oricum

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Mie Feb 02, 2011 9:42 pm

<object type="application/x-shockwave-flash" data="some.swf" width="300" height="130">
<param name="movie" value="some.swf" />
<param name="flashVars" value="sessid=<?php echo session_id() ?>" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" /> </object>

Cod: Selectaţi tot

// luam sesiunea din flashVars
var sessid = _root.sessid || '';

// functia care face check la vizitatori
function makecheck() {
   // init vars
   var vars:LoadVars = new LoadVars();
   vars.sid = sessid;
   vars.onLoad = function() {
      _root.viz = this.vizitatori;
   };
   vars.sendAndLoad('paginaphp.php',vars,'POST');
}

// make setInterval
setInterval(this,'makecheck',7000);
// trebuie sa nu pui intervalul foarte scurt,
// sa poata sa aiba timp sa faca request-ul catre 'paginaphp.php'

_root.onEnterFrame = function() {
   // trebuie sa ai un camp de text, sa zicem ca are numele `vizitatori`
   vizitatori.text = _root.viz; // la care faci update continuu
};




In fisierul paginaphp.php ai ceva de genul

[php] <?php
if(isset($_POST['sessid']) && $_POST['sessid'] == session_id()) {

/* get date din mysql */
# SELECT `id` FROM `tabel` WHERE `sessid`= escape($_POST['sessid'])
if( isset($rec['id']) && !empty($rec['id']) )
mysql_query('UPDATE .... `lastaction`='.time() . ' where id='.$rec['id']);
else mysql_query('INSERT .... `sessid`=\''.session_id().'\', `lastaction`='.time());

$sql = 'SELECT COUNT(`id`) as vizite FROM `tabel`
WHERE `lastaction`> ' . (time()-10);
// adica ii iei pe toti cei care au fost activi in ultimele 10 secunde

// aici faci output pentru flash
echo 'viz='.$date['vizite']; // unde $date este assoc-ul din mysql

}

?> [/php]

bafta!


Înapoi la “PHP & Flash”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 23 vizitatori