Newsgroup: it.comp.www.php
Titolo: Flash e variabili di sessione

Ciao a tutti, vi chiedo un'info: faccio il grafico e sto creando un layout 
per un sito sviluppato con Php Nuke, nella testata c'è un filmato Flash con 
una lunga animazione che vorrei venisse visualizzata per intera (cioé per 
tutta la sua durata) solo la prima volta (nell'arco di una sessione) che ci 
si collega al sito... mentre per le restanti volte (cioé ad esempio quando 
un utente passa dalla home ad una pagina interna) vorrei che il filmatino 
partisse non dall'inizio, ma da una scena finale che ho predisposto.
Leggendo qui e là ho capito trattarsi di una questione di variabili di 
sessione, da far leggere al filmatino tramite l'attributo 'FlashVars'... e 
la mia domanda da ignorante è: ho modo di risalire a questa variabile di 
sessione (perché magari già predefinita in tutti i siti realizzati con Php 
Nuke) o devo richiedere al programmatore di predisporre una variabile del 
genere?
Grazie a tutti 

 Grazie a tutti 
Recuperi la sessione che ti interessa e se questa esiste passi una
variabile (per es. "start=true" o "false") all'interno dei tag <embed>
del file swf.
Nel sorgente del file swf usi questa verifica per la riproduzione del
filmato.
Max
-- 
http://www.maxori.it
L'Arte è la capacità di fare cose di nessun valore
e di riuscire a venderle
F. Zappa

 Max
Grazie mille... ma da ignorantone vorrei anche chiederti: come recupero la 
sessione? E' una procedura standard (tipo uno script che posso utilizzare 
per qualsiasi sito), o è relativa e specifica al sito da cui la sto 
recuperando? Grazie ancora 

 wrote:

Dipende da quanto sai di PHPNuke, inserire del codice nel CMS può non
essere semplice se sei alle prime armi.
in tutti i casi a te basta recuperare una qualsiasi sessione, anche
quella della lingua, e se esiste la passi all'swf.
Per ricavare le sessioni puoi provare ad inserire questo codice:
<?php foreach($_SESSION as $k=>$v) {
  print($k . ": " . $v . "<br>");
?> 
altrimenti puoi crearne una tu:
session_start()
if(!isset($_SESSION['play'])) {
 $flashVars = "play";
} else {
 $flashVars = "stop";
}
e poi embeddi la variabile $flashVars nel codice <embed> del file swf.


 Max
Troppo gentile, grazie tante ancora! 

 Dunque mi pare di evincere che di base un'installazione di PhP-Nuke non
En passant... se riesci a cestinare phpnuke e ad usare qualcosa di piu` 
moderno (come joomla, wordpress, drupal, ecc.) ti fai solo del bene, vista 
la storia di buchi non corretti di tutto quanto abbia "nuke" nel nome... :)
Bye.

 Bye.
Non č una scelta mia, ma dei colleghi programmatori... in base a cosa poi 
non so... tant'č vero che dopo alcuni anni di PhpNuke ora stanno passando a 
Joomla! 

 quella della lingua, e se esiste la passi all'swf.
Scusa se ne approfitto... dunque, ho visto c'è la variabile $lingua che di 
default è assegnata all'italiano. Infatti usandola nel FlashVars mi 
restituisce il value='italiano'.
Solo che credo tu ti riferissi ad una situazione dove non c'è una lingua 
predefinita, dove il valore iniziale è nullo e solo dopo una scelta 
dell'utente (che mi segnala essere in corso una sessione) acquista un valore 
di qualsiasi genere. Così che io tramite actionscript avrei potuto definire 
una condizione in cui a value="" faccio andare tutta l'animazione, e in 
tutti gli altri casi faccio partire l'animazione da altro punto della 
timeline predefinito.
E' giusto? O posso sfruttare questa variabile così com'è?
Grazie per la pazienza :-P 

 wrote:

Si, mi riferivo ad una procedura del genere.
A te basta sapere che l'utente sta visitando una seconda pagina, quindi
che esiste una qualsiasi variabile di sessione creata nel primo
contatto.


 Max
Max chiedo venia, spero di non dover abusare della tua disponibilitą oltre 
dopo questo: potresti dirmi dove dovrei implementare il codice da te postato 
sopra?
Nell'installazione di Php-Nuke c'č una cartella 'includes' con un file 
'sessions.php' al suo interno... forse lģ?
Rischio di fare qualche danno se incollo il codice tale e quale (o forse 
dovrei aggiungere la parola function, dunque 'function session_start() 
etc.'?) all'inizio dell'elenco di funzioni che ho trovato in questo file? 

 etc.'?) all'inizio dell'elenco di funzioni che ho trovato in questo file?
Non conosco Nuke ma, come ti dicevo qualche post fa, dipende anche dalla
tua conoscenza del CMS in oggetto.
Studiando il codice puoi implementare una funzione oltre a quelle già
esistenti o utilizzare le stesse, oppure inserire il codice che ti ho
scritto all'interno della pagina che funge da contenitore principale, o
del template se Nuke li usa.
 
Di più non saprei dirti, io i CMS li faccio, non li uso.


 del template se Nuke li usa.
Grazie innanzitutto... allora, ho provato a inserire il codice nel file 
'sessions.php' e niente, il FlashVars mi restitutisce sempre ""... ho 
provato a modificare leggermente la sintassi della funzione, seguendo quelle 
già nel file, questo il risultato:
function session_start()
 if ( isset($_SESSION['play']) )
  {
  $flashVars = 'play';
  } else {
  $flashVars = 'stop';
  }
Ma ancora niente, no errori, no valori captati da FlashVars... allora ho 
provato a spostare il codice nel file 'theme.php', che sarebbe il template 
in uso da Php-Nuke... lì succede qualcosa, infatti mi da questo errore:
Parse error: syntax error, unexpected T_IF, expecting '{' in theme.php on 
line 159 (che sarebbe la riga dove c'è l'if)
solo che se poi aggiungo una { prima di if e una } alla fine di tutta la 
funzione (e dunque a seguito della } già presente) mi da errore alla 
chiusura...
Max, se hai tempo/voglia, se non rispondi buona lo stesso, direi che mi hai 
già dato tanti elementi!

 già dato tanti elementi!
Vedi sopra... ;)



Max ti ringrazio tantissimo, ora gli errori son spariti... son riuscito
anche a recuperare le variabili col codice da te suggeritomi
foreach($_SESSION as $key=>$value) {
  print($key . ": " . $value . "<br>"); }
e questo ha confermato che le uniche chiavi assegnate sono 
$_SESSION['cliente'] = "xxx"; (questo spiegabile col fatto che abbiamo 
diverse installazioni di Php-Nuke per diversi clienti) e 
$_SESSION['cambialingua']="italiano" (dato che è pur essendo un sito 
monolingua, la struttura è predisposta per il multilingua).
Dunque questi valori non cambiano durante la navigazione e non mi servono... 
inserisco il codice
function startSession()
 {
  if (!isset($_SESSION['play']) )
  {
  $flashVars = "play";
  } else {
  $flashVars = "stop";
  }
 }
nel file theme.php, ora come dicevo va tutto liscio, nessun errore... ma 
neanche nessun valore di risposta, embeddando il filmato flash con 
flashvars="$flashVars" non succede niente, il valore di risposta è sempre 
nullo ("").
Per caso hai un sito da segnalarmi con un filmato flash che si comporta così 
come vorrei far comportare il mio?

 nullo ("").
Attento, hai solo i valori $_SESSION['cliente'] e $_SESSION
['cambialingua']
come hai visto con il ciclo foreach(), non esiste il valore $_SESSION
['play']
per cui la chiamata a $_SESSION['play'] ti ritorna nullo (NULL)
comunque
e l'if() ritorna sempre vera la prima condizione... Esegue tutto il
filmato
sempre.
if (!isset($_SESSION['play']) )
{
   $flashVars = "play";
   $_SESSION['play']=1; // così play è settata e i giri successivi
salta all'else
                                      // facendo girare tutto il
filmato solo la prima volta
} else {
   $flashVars = "stop";
}

 come vorrei far comportare il mio?
No, io uso le flashVars in modo diverso anche se simile.
In pratica recupero un array di immagini e le passo in slideshow
all'swf.
Però il sistema di "scrittura" di questa variabile è simile al tuo, solo
che pesco il nome della directory dalla sessione, in modo da usare lo
slideshow nelle directories apposite.



Oddio, mi fai venire il dubbio di averti fatto perdere tempo con tanti 
dettagli quando l'errore stava a monte...
infatti io non scrivo codice PHP nel tag embed... io (a parte le modifiche 
fatte al file theme.php) poi creo degli html per il layout... Php-Nuke 
funziona cosě, pesca dalla cartella tanti pezzetti di pagina (testata, corpo 
pagina, footer) in formato html... nell'html della testata ho questo codice:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0
" 
width="750" height="150" title="Testata">
                    <param name="movie" value="img/testata.swf">
                    <param name="quality" value="high">
                    <param name="wmode" value="transparent">
                    <param name="FlashVars" value="$flashVars">
                    <embed src="img/testata.swf" width="750" height="150" 
quality="high" pluginspage="
http://www.macromedia.com/go/getflashplayer
" 
type="application/x-shockwave-flash" wmode="transparent" 
flashvars="$flashVars"></embed>
Pensavo ti riferissi a questo quando dicevi "e poi embeddi la variabile 
$flashVars nel codice <embed> del file swf"
:-(
Mi sa che per quanto ci sbatta la testa nu ce la fo.... Ad ogni modo farň 
tesoro delle tue indicazioni per approfondimenti futuri!
Gracias de todos!

}
Molto interessante... dunque, posto che lato actionscript ancora devo 
intervenire... ho implementato comunque la tua riga di codice, ma quando 
vado a controllare l'html del filmato flash pubblicato, mi da sempre 
flashvars=""...
Continuo a sbagliare? C'č speranza, o sono troppo pasticcione? :-(

 flashvars="$flashVars"></embed>
<param name="FlashVars" value="<?php echo $flashVars; ?>">
E poi mi sa che dovrai inserire dell'altro codice nei tag dell'swf
Se usi Dreamweaver ti insegno un barba trucco per sapere cosa devi
rendere dinamico.


 rendere dinamico.
Eh si che uso Dreamweaver!! Qui le grazie non bastano più! 

 Eh si che uso Dreamweaver!! Qui le grazie non bastano più! 
Apri una nuova pagina e ci piazzi l'swf, lo selezioni e poi nella
pallette delle proprietà trovi parametri.
Scrivi start come nome e true come valore.
Guardi nel codice sorgentedove DW ha scritto questi due valori e
sotrituisci true con <?php echo $flashVars; ?>
Copi e incolli tutto il codice nella pagina dove ti serve.
Dovrebbe funzionare.


 Max
Insomma sostituire il paramentro "FlashVars" con "start"?
Ho comunque provato passo passo quel che mi suggerisci, ma nel campo 'value' 
quando vado a controllare l'html della pagina incriminata, mi torna indietro 
sempre solo <?php echo ; ?>
Sicuramente mi sfugge qualche cosa di grossolano e - ahi ahi - quando 
salterą fuori ho paura potresti a ragione mandarmi a quel paese :-P 

 salterà fuori ho paura potresti a ragione mandarmi a quel paese :-P 
Ma la pagina è php?
Dove lo vedi questo codice?   <?php echo ; ?>


 Max
Tramite browser, nella pubblicazione del sito, index.php... vado nella home 
del mio sito e poi sempre dal browser ne visualizzo l'html... lě dove c'č la 
testata.swf controllo il campo 'value' e lě sta il codice <?php echo ; ?>
Max, mi ritiro a meditare, leggermi qualche tutorial o simili... sei stato 
gentilissimo e preferirei conservarmi qualche chance di poterti chiedere con 
cognizione in futuro, piuttosto che esasperarti subito, eheh!