Pagina 1 di 10 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 95
  1. #1

    [PILLOLA] Interazione tra FlashMX e PHP

    INTERAZIONE TRA PHP e FlashMX
    [andr3a 24-05-2003]

    Il presupposto e' che voi gia' conosciate l'utilizzo di Action Script in MX e il php

    Le parti trattate saranno puramente dimostrative ed estremamente sintetiche, suddivise in "come faccio a inviare a flashMX" e "come faccio a caricare da PHP" ed in fine "come faccio ad inviare a PHP" .
    Per eventuali approfondimenti ho scritto un articolo nel mio sito che tratta in maniera piu' dettagliata l'argomento [ http://www.3site.it/index.php?sezion...lo=42&pagina=1 ]

    Come faccio a inviare variabili da php a flash MX ?
    Ci sono 4 metodi per fare questo:
    1 - appendere in modalita' GET al nome dell' swf specificato nel param name e nel data dell' Object le variabili da inviare [ limiti del get ]
    2 - creare un file di testo tramite php da far leggere poi all' swf [ problemi di cache ]
    3 - inserire in db le variabili e far caricare all' swf il file php che le estrapola e le invia [ macchinoso ma affidabile ]
    4 - utilizzare il loadvars o loadVariablesNum o LoadVariables

    Esempio numero 1:

    <OBJECT id="prova1" name="prova.swf" class="prova" classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" data="prova.swf?idpassato=30" type="application/x-shockwave-flash" />
    <param name="movie" value="prova.swf?idpassato=30"><param name="quality" value="best"><param name="bgcolor" value="#FFFFFF"><param name="menu" value="false">
    </OBJECT>

    In questo modo invieremo al file prova.swf una variabile , di nome idpassato che conterra' il valore 30.
    In AS quindi avremo come riferimento il semplice _root.idpassato; che conterra' il valore, come gia' detto, 30.
    Se avessimo voluto aggiungere altre variabili, una scritta di questo tipo prova.swf?idpassato=30&nome=ciccio&cognome=pasticc io non avrebbe niente di sbagliato, permettendoci di risalire ai vari valori con _root.nome; e _root.cognome;

    N.B. se utilizzate anche l' embed, assicuratevi per precauzione che i valori in get siano "appesi" anche li, in modo da essere sicuri, a seconda del browser, di ritrovarvi quanto specificato.

    P.S. il metodo get su caricamento swf serve anche ad evitare di lasciare il file swf in cache e vedere quindi ad ogni visita della pagina il preload e tutto il filmato come se non fosse mai stato visto.
    Il consiglio che vi do e' di appendere questa stringa cosi' da essere sicuri che non si possa ripetere, assicurandovi il ricaricamento da 0.
    prova.swf?reload=<?php echo date("Ymdhis").microtime();?>

    Esempio numero 2, 3 e 4:
    per ora ci fermiamo al primo, perche' questi esempi fanno parte della seconda parte di questo articolo...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #2
    Come faccio a caricare variabili in FlashMX dal PHP ?
    Se avete interagito con i files di testo, noterete come questa parte sia molto piu' semplice di quanto crediate.
    Se non lo avete fatto invece, considerate che il FlashMX accetta file contenenti stringhe di questo tipo:
    nome=andr3a&cognome=coniltre&anni=25

    Per una questione di comodita', metti caso che le variabili siano 34534, possiamo inviarle a FlashMX anche in questo modo
    &nome=andr3a&
    &cognome=coniltre&
    &anni=25&
    N.B. questo metodo non e' preferibile all'altro, perche' invia delle variabili vuote ed inutili al FlashMX. E' comunque funzionante e secondo me in certi casi indispensabile.


    Come usare il PHP
    Se avete capito la sintassi da utilizzare, un file di questo tipo non dovrebbe sembrarvi strano o incomprensibile:
    file prova.php
    Codice PHP:
    <?php
    mysql_connect
    ("localhost","user","pass");
    mysql_select_db("database");
    $query mysql_query("select * from tabella");
    if(
    mysql_num_rows($query)>0) {
        
    $mostra mysql_fetch_array($query);
        
    $output "&nome=".$mostra["nome"]."&\n";
        
    $output .= "&cognome=".$mostra["cognome"]."&\n";
        
    $output .= "&anni=".$mostra["anni"]."&";
    }
    echo 
    nl2br($output);
    ?>
    Se lanciaste il file vedreste questo:
    &nome=andr3a&
    &cognome=coniltre&
    &anni=25&

    Ci siamo quindi creati a tutti gli effetti un output identico a quello che saremmo andati a scrivere in un file di testo, effettuando pero' tutti i nostri porci comodi in php per rilasciare poi l'output solo a fine elaborazione.
    E' importante scrivere codice il piu' pulito possibile ed evitare di far inviare al PHP dei warnings, messaggi che potrebbero bloccare il vostro swf facendovi impazzire.
    Altra cosa importante e' scrivere nel modo piu' leggero possibile, ovvero cercare di rinunciare a qualunque cosa possa far aumentare di un singolo bit i vostri files in php.
    Quindi invece di un...
    Codice PHP:
    if($cosodice!="") {
        
    $output .= "coso ha detto ".$cosodice;
    }
    else {
        
    $output .= "non ha detto niente";
    }
    // e' di gran lunga preferibile una sintassi di questo tipo
    $out=$cd!=""?"coso ha detto ".$cd:"non ha detto niente"
    Quindi risparmiate ovunque per avere interattivita' il piu' veloce possibile


    Come usare il FlashMX
    Una volta impostato ad hoc e testato il vostro file.php [ se richiedete valori in get testate anche quelli appendendo alla pagina cio' che andreste ad appendere all' swf ]
    passimao al FlashMX.
    Ci sono 3 metodi per caricare:
    1 - loadVars
    2 - loadVariablesNum
    3 - LoadVariables
    Io vi scrivo solo il primo perche' gli altri sono metodi "vecchi" ed hanno il vizio maledetto di inviare comunque variabili interne all' swf al PHP anche se non glielo abbiamo richiesto.
    Nel keyframe delle action di FlashMX scriveremo
    Codice PHP:
    // mi creo una variabile utile per effettuare debug in fase di sviluppo
    var percorso = new String("http://localhost/provainterazione/");
    // dichiaro le variabili utili
    var nome = new String();
    var 
    cognome = new String();
    var 
    anni = new String();
    // ora preparo il caricamento del file php
    var carica = new LoadVars();
    carica.onLoad = function(success) {
        if(
    success) {
            
    _root.nome this["nome"];
            
    _root.cognome this["cognome"];
            
    _root.anni this["anni"];
            
    trace(nome+" - "+cognome+" - "+anni);
        }
        else {
            
    trace("Errore nel caricamento file!");
        }
    }
    carica.load(percorso+"prova.php"); 
    Avremmo anche potuto utilizzare il metodo GET per caricare e inviare allo stesso tempo qualcosa al PHP
    Esempio:
    carica.load(percorso+"prova.php?cerca="+_root.vari abile);
    Il file php avrebbe ricevuto la variabile $_GET["cerca"] contenente il valore desiderato.

    N.B.
    Per evitare problemi di cache sul file php, trattato da MX come se fosse un file di testo, ricordatevi di mettere un header tipo questo
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    ad ogni file che andrete a caricare.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Come faccio a inviare variabili ad un file PHP da FlashMX
    Abbiamo 3 metodi:
    1 - sendAndLoad
    2 - send
    3 - loadVariablesNum/LoadVariables
    il 3 lo riescludo per i motivi gia' spiegati, mentre il metodo 2 e' buggato.
    Il send infatti invia solo in GET e per forza aprendo la pagina, quindi non lo usate a meno che il richiamo all' altra pagina non sia necessario.

    Il sendAndLoad invece, a differenza del loadVariablesNum ci permette con la stesa sintassi del load, di inviare le variabili che vogliamo in GET o POST al file PHP e di riceverne contestualmente 0 o piu' dallo stesso.
    Esempio:
    Codice PHP:
    // mi creo una variabile utile per effettuare debug in fase di sviluppo
    var percorso = new String("http://localhost/provainterazione/");
    // dichiaro le variabili utili
    var nome "Ugo";
    var 
    cognome "Logo";
    var 
    anni "25";
    // ora preparo l' oggetto invia contenente le variabili da inviare al php
    var invia  = new LoadVars();
    // ... e lo popolo con quello che voglio inviare
    invia.nome _root.nome;
    invia.cognome _root.cognome;
    invia.eta _root.anni;
    // mi creo anche la variabile di ritorno eventuale di codice
    var ricevuto  = new LoadVars();
    // ora invio e ricevo le variabili
    invia.sendAndLoad(percorso+"prova.php",ricevuto);
    ricevuto.onLoad = function(success) {
        if(
    success) {
            
    trace("OK");
            
    trace(ricevuto.fatto);
        }
        else {
            
    trace("Errore");
        }

    Il file prova.php ricevera' le variabili $_POST["nome"]; $_POST["cognome"]; $_POST["eta"];
    contenenti rispettivamente Ugo, Logo, 25.
    La variabile fatto sara' una delle tante variabili di output che generera' o meno questo file, stampando ad esempio solo a operazioni effettuate echo "fatto=Tutto OK!";
    Potremmo utilizzarla anche per fare un'ulteriore controllo dell' avvenuta ricezione corretta del file, mandando unvece un echo "fatto=Errore nel Nome"; o altro a seconda dei controlli e delle nostre esigenze.

    Spero di aver detto piu' o meno tutto e di non aver fatto grossi errori.
    Mi scuso per la non leggerezza della pillola, ma purtroppo le casistiche e gli esempi sarebbero veramente tanti, comunque in parte leggibili nella sezione articoli del mio sito dove troverete piu' risposte , spero, alle vostre eventuali domande.

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Pat pat..
    Complimenti quando avrò un pò di tempo la leggerò :metallica
    E' Già nei preferiti..
    Soluzioni di Web marketing, CMS, Temi wordpress, grafica e molto altro

    -----
    Ogni topic aperto con un titolo errato fa perdere un capello al moderatore che lo dovrà sistemare.. se non vuoi contribuire alla calvizia dei moderatori apri 3D a norma di regolamento, e prima fai una ricerca! No pvt tecnici!

  5. #5
    :metallica :metallica

    Molto utile! Anche se non conosco bene flash, mi è capitato che alcuni amici grafici mi chiedessero info su l'integrazione con scritp Server Side.

    Ottimo lavoro

    GNU/Linux is the answer...now, what was your question?

  6. #6
    Sbaglio o nello script del terzo post ci sono alcuni errori ?

    Hai messo il sendAndLoad a carica...che non esiste (anche se esistesse..le variabili da inviare le hai messe in 'invia' )
    Hai messo l'onLoad ad invia..mentre doveva andare a ricevuto.


    A parte una cosa che io farei in modo diverso, ma a seconda dei casi può andare benissimo come hai messo tu, cioè tu dichiari prima le vars sulla _root e poi le 'metti' nell'oggetto loadVars...io le metterei direttamente nell'oggetto loadVars, ma più che altro è questione di scelte/metodi, il risultato finale nun cambia


    Ah, una piccola precisazione: non pensiate che l'interazione tra flash e php si limiti al 'solo' loadVars

    Comunque pillola utile, visto che spesso molti vanno in crisi quando c'è da integrare flash e php

  7. #7
    chiedo ai moderatori di cambiare carica con invia nel sendAndLoad e invia.onLoad con ricevuto.onLoad, la fagianta in copy & past dal mio sito e' stata palese ...

    per il resto broly, io dissi a gm ke la cosa richiedeva un articolo perfino piu' dettagliato di quello sul mio sito e lui m'ha detto che m'aveva kiesto solo una pillola...

    piu' di cosi', come pillola, ke vuoi ke scriva ???


    poi l'interazione per come la vedo io e' lo scambio variabili tra i 2, non e' menzionata la gestione/creazione dinamica di swf dal php con librerie di terzi, ne altro, altro che vorrei specificassi .... :master:


    P.S. con Negative era venuto fuori che e' sempre meglio dichiararle prima le variabili in AS che crearle in modo automatico ... non oso mettere in dubbio l'opinione del Negative [ank'io prima non dichiaravo niente e creavo tutto "on-the-fly"]
    ... per di piu' non e' la guida assoluta e indiscutibile su come si scrive in FlashMX, e' una pillola di interazione tra i 2 linguaggi, sono i concetti che vorrei far capire ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Originariamente inviato da andr3a
    per il resto broly, io dissi a gm ke la cosa richiedeva un articolo perfino piu' dettagliato di quello sul mio sito e lui m'ha detto che m'aveva kiesto solo una pillola...

    piu' di cosi', come pillola, ke vuoi ke scriva ???


    Infatti ho detto che come pillola è ottima, hai scritto molte cose che torneranno sicuramente utili a molti


    poi l'interazione per come la vedo io e' lo scambio variabili tra i 2, non e' menzionata la gestione/creazione dinamica di swf dal php con librerie di terzi, ne altro, altro che vorrei specificassi .... :master:

    No no, mi riferivo sempre allo scambio di variabili e non a cose tipo la creazione di swf con php & c...manco ci avevo pensato, hai ragione, nun me so' spiegato bene: intendevo che per scambiare variabili tra php e flash non esiste solo il loadVars, anche se probabilmente è attualmente il metodo più conosciuto e usato

    P.S. con Negative era venuto fuori che e' sempre meglio dichiararle prima le variabili in AS che crearle in modo automatico ... non oso mettere in dubbio l'opinione del Negative

    Veramente mi pareva che ne avessi parlato con Sephiroth prima che se ne andasse dal forum e non con Negatyve

    Cmq nel caso non si fosse capito io intendevo che invece di metterle prima sulla root e poi nell'oggetto, potevi metterle direttamente nell'oggetto. Ad ogni modo questo è un altro discorso che 'esula' dalla pillola
    Cmq la mia non era mica una critica e infatti non mi pare d'aver detto "se fai così sbagli..."

    per di piu' non e' la guida assoluta e indiscutibile su come si scrive in FlashMX, e' una pillola di interazione tra i 2 linguaggi, sono i concetti che vorrei far capire

    Infatti, ripeto, la mia era solo una breve osservazione, mica una critica al tuo modo di scrivere le actions

  9. #9
    lol... complimenti peccato che non sappia usare flash...

  10. #10
    Originariamente inviato da Broly
    Veramente mi pareva che ne avessi parlato con Sephiroth prima che se ne andasse dal forum e non con Negatyve
    ... azz .. hai ragione era sephiroth . . . a maggior ragione non discuto :gren:


    x il resto ok, tutto chiaro


    moderatoooriiiiiiiiiiiiiiiiiiiii!!!!
    nel mio 3 post queste 2 linee
    carica.sendAndLoad(percorso+"prova.php",ricevuto);
    invia.onLoad = function(success) {


    vanno sostituite con
    invia.sendAndLoad(percorso+"prova.php",ricevuto);
    ricevuto.onLoad = function(success) {

    ... grazie ..
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.