Joomla.it Forum

Non solo Joomla... => Sviluppo => : ilovephp 04 Apr 2007, 16:21:22

: passaggio di variabili tra componenti
: ilovephp 04 Apr 2007, 16:21:22
 ;)

Salve sono sempre iooooooooooo.

Qualcuno sa indicarmi come far passare una variabile da un componente ad un altro?

In particolare avendo la mia lista utenti con i record di seguito elencati

nome cognome username email tel

(il componente che mi gestisce il tutto è com_userlist_xtd) e cliccando sul mio username vorrei passare la variabile al componente com_pms, in maniera da 
far comparire il campo A: (destinatario) già con l'account scritto.

Ringrazio tutti. a presto
: Re: passaggio di variabili tra componenti
: napo 04 Apr 2007, 16:39:06
Devi modificare il componente com_userlist_xtd facendo in modo che il nome di ogni utente sia un link diretto al componente com_pms, con tutti i parametri che servono via GET.
: Re: passaggio di variabili tra componenti
: ilovephp 04 Apr 2007, 23:29:34
 ;)

Grazie Napo anche io penso sia piu' o meno cosi.

ancora mi manca qualche pezzo per avere un po' di "luce".

mi confermi che non posso utilizzare mosgetparam?

ti faccio sapare appena risolvo altrimenti "ti disturbo" ancora.

A prestoooooooooo    :)
: Re: passaggio di variabili tra componenti
: gallus 05 Apr 2007, 09:24:55
Giusto una curiosità... è assurdo pensare di utilizzare il db come elemento di passaggio?

Diciamo pensare di creare una struttura generale fissa attraverso cui far passare gli elementi... ho una mezza idea e mi domandavo se fosse proprio molto assurda :)
: Re: passaggio di variabili tra componenti
: gallus 05 Apr 2007, 10:02:05
Nel mio viaggio mentale pensavo ad una struttura dati per simulare uno Stack in modo tale che possa essere condiviso tra i vari componenti semplicemente con un accesso via query... diciamo un jos_stack

L'idea mi suona carina... dite che è pensabile la possibilità di creare una struttura generica di questo tipo?

Magari provo ad approfondire.
: Re: passaggio di variabili tra componenti
: napo 05 Apr 2007, 10:13:17
mi confermi che non posso utilizzare mosgetparam?

Lo dovrai usare, ma nel modo corretto.
Altrimenti come recuperi i parametri?
: Re: passaggio di variabili tra componenti
: napo 05 Apr 2007, 10:14:02
Giusto una curiosità... è assurdo pensare di utilizzare il db come elemento di passaggio?

Ma il DB lo devi usare, ma ti servono alcuni parametri.
: Re: passaggio di variabili tra componenti
: napo 05 Apr 2007, 10:14:36
Nel mio viaggio mentale pensavo ad una struttura dati per simulare uno Stack in modo tale che possa essere condiviso tra i vari componenti semplicemente con un accesso via query... diciamo un jos_stack

Eh? ???
: Re: passaggio di variabili tra componenti
: gallus 05 Apr 2007, 10:17:19
Intendo dire una cosa di questo tipo

Primo processo ---> Tabella stack ----> Secondo Processo
Secondo processo ---> Tabella stack ----> Primo Processo

Come uno stack, una sorta di clipboard di passaggio
: Re: passaggio di variabili tra componenti
: ilovephp 05 Apr 2007, 13:42:58
Sono molto onorato che un mio POST abbia sollevato delle osservazioni!!!  :)

Alla domanda di gallus è assurdo pensare di utilizzare il db come elemento di passaggio/transito , risponderei che:

forse!?!... non è consigliabile usare i DB semplicamente per i dati in transito, primo  perchè non è necessario a lungo e quindi non è necessario un DB, poi perchè i dati in transito sono già salvati in un array, terzo perchè con la soluzione a "stack" l'ultima var ad entrare sarebbe la prima ad uscire, quindi sarebbe "vincolante".   (almeno io oso pensare cosi magari sbaglio)

Di seguito inserisco la soluzione che il Buon Napo mi ha suggerito:

/var/www/33rgtew/components/com_userlist_xtd


  if ($settings->username) {
   #echo "\t\t<td>$row->username</td>\n";
   




echo "\t\t<td><a href 'http://x.x.x.x/xxx/index.php?option=com_pms&task=new&to=".$row->username."'> ".$row->username." </ a>\t\t</td>";

       }




/var/www/xxxxx/components/com_mps


$to=$_GET["to"];


Ed il tutto funziona in maniera corretta.


: Re: passaggio di variabili tra componenti
: gallus 05 Apr 2007, 14:08:02
Grande :)

...
forse!?!... non è consigliabile usare i DB semplicamente per i dati in transito, primo  perchè non è necessario a lungo e quindi non è necessario un DB, poi perchè i dati in transito sono già salvati in un array, terzo perchè con la soluzione a "stack" l'ultima var ad entrare sarebbe la prima ad uscire, quindi sarebbe "vincolante".   (almeno io oso pensare cosi magari sbaglio)
...

Ottime osservazioni, il mio era solo uno spunto di riflessione nato da una idea su 2 piedi.

Il nome stack non voleva essere la rappresentazione dell'esatta struttura che volevo creare tipicamente l'uso di un DB mi permette di accedervi in modo non ordinato.

I dati in un DB non devono rimanerci sempre :) potrebbero essere dati temporanei :) anche solo di transito.

Non devi dire "oso" qui siamo tutti uguali e poi io molto probabilmente ho decisamente meno competenze di quante non ne abbia tu... quindi sono ben contento delle osservazioni che hai fatto e soprattutto che tu abbia aggiunto anche la soluzione al post :)
: Re: passaggio di variabili tra componenti
: napo 05 Apr 2007, 14:59:24
echo "\t\t<td><a href 'http://x.x.x.x/xxx/index.php?option=com_pms&task=new&to=".$row->username."'> ".$row->username." </ a>\t\t</td>";

Evita di scrivere l'indirizzo completo perchè hai dei problemi in caso di spostamento del sito.
E' sufficiente che il link punti a index.php e non a tutto http://...

Inoltre farei un controllo anche sul nome, prima di inserirlo nel link; immagina che contenga caratteri non ammessi, tipo ' o "...

$to=$_GET["to"];

Questa sarebbe l'istruzione per recuperare il valore? NO!

:
<?php
    $to 
mosGetParam($_GET"to""");

    
// seguono ulteriori eventuali controlli di correttezza
?>
: Re: passaggio di variabili tra componenti
: ilovephp 05 Apr 2007, 15:17:37
 ;D ;D ;D ;D ;D

Stavo postando un messaggio mentre mi scrivevi per "criticare" da mia soluzione .volevo appunto sentire la tua risposta.

you are very good.

ti faccio sapere se riesco. grazie un miliardo     :D
: Re: passaggio di variabili tra componenti
: ilovephp 05 Apr 2007, 16:53:12
primo problema risolto

$indirizzo=  sefRelToAbs("index.php?option=com_pms");

echo "\t\t<td><A HREF='".$indirizzo."&task=new&to=".$row->username."'> ".$row->username." </ A>\t\t</td>";
: Re: passaggio di variabili tra componenti
: napo 05 Apr 2007, 17:05:43
Puoi mettere tutto dentro la funzione:

:
<?php
$indirizzo 
sefRelToAbs("index.php?option=com_pms&task=new&to=" $row->username);

echo 
"<td><a href='".$indirizzo."'>".$row->username."</a></td>";
?>
: Re: passaggio di variabili tra componenti
: ilovephp 05 Apr 2007, 18:25:44
Grazie Napo funziona tutto correttamente.

Anche il     $to = mosGetParam($_GET, "to", "");
funziona correttamente nel file ricevente.

Il dubbio che ho, è nella tua osservazione:

Inoltre farei un controllo anche sul nome, prima di inserirlo nel link; immagina che contenga caratteri non ammessi, tipo ' o "...

Se non ho capito male Bisogna fare ESCAPING!
Cioè significa impedire che i particolari caratteri di controllo riconosciuti da un sistema vengano ignorati e trattati come semplici stringhe (ad esempio le  virgolette o i caratteri di stampa \n e \r).

Mi sto sforzando di capire come mai cliccando su un link si possa modificare l'output (forse agendo direttamente dall'URL).....
e quindi il controllo andrebbe fatto sul file che riceve i parametri?!..o sul file che passa i parametri?

potrebbe servire la funzione  htmlentities(); Io l'ho provata nel file che passa i parametri echo htmlentities("<td><a href='".$indirizzo."'>".$row->username."[/url]</td>");

ma non accade nulla anzi al posto dello username mi compaiono i link



Mi sembra di capire che L'Escaping è importante per una sicurezza, quindi per
la realizzazione sicura di un sito.



: Re: passaggio di variabili tra componenti
: napo 05 Apr 2007, 18:32:09
L'escaping è fondamentale, dai un'occhio all'appendice sulla classe InputFilter nel devbook.
Inoltre aggiungerei anche un controllo sulla reale esistenza dell'utente nel db.
: Re: passaggio di variabili tra componenti
: ilovephp 05 Apr 2007, 18:38:50
Ho capito perchè sei moderatore  :-[

Diciamo che per oggi i miei neuroni non riescono piuù a portare informazioni in giro  :'( :'( :'(

Cmq. domani darò un occhiata alla classe InputFilter.

Cosa vuoi dire con controllo sulla reale esistenza dell'utente nel db?

Inoltre ti auguro una buona serata e a domaniiiiiiiiii.........

 ;D ;D ;D
: Re: passaggio di variabili tra componenti
: napo 05 Apr 2007, 18:57:25
Cosa vuoi dire con controllo sulla reale esistenza dell'utente nel db?

Verifica che l'utente esista davvero, prima di preparare il link a PMS.
: Re:passaggio di variabili tra componenti
: montagne.rocciose 14 Sep 2009, 20:44:16
Salve a tutti,
scusate se mi metto in mezzo. In quale file del secondo componente deve essere inserito quanto segue?

<?php
    $to = mosGetParam($_GET, "to", "");

    // seguono ulteriori eventuali controlli di correttezza
?>

Grazie,
: Re:passaggio di variabili tra componenti
: montagne.rocciose 15 Sep 2009, 18:20:50
Salve a tutti,
forse sarebbe meglio fare una piccola premessa che mi aiuti a spiegare meglio ciò di cui ho bisogno: il passaggio variabili tra componenti ed il mantenimento delle stesse.

immaginiamo che debba creare 2 componenti, uno per la gestione clienti (com_clienti) ed uno per la gestione dei loro ordini (com_ordini).
dalla lista di com_clienti posso cliccare sul nome del cliente e modificarne la anagrafica, oppure cliccare sul numero degli ordini per vedere la sua lista ordini ed eventualmente modificarli, aggiungerne o cancellarne.

per passare dalla lista clienti alla lista ordini debbo cambiare il componente, da com_clienti a com_ordini e poichè i dati li prendo dal db mi serve l'id del cliente.

tale id deve poi essere sempre presente in com_ordini, visto che devo avere la possibilità di metterne nuovi.

sono arrivato al punto in cui riesco a passare l'id del cliente da com_clienti a com_ordini ma qui dura fino alla lista degli ordini (tmp/default.php).

qualcheduno ha un'idea di come e dove implementare il passaggio dell'id?


Grazie a tutti.
: Risolto
: montagne.rocciose 15 Sep 2009, 19:04:31
Grazie comunque :)

ho risolto con l'uso di variabili di sessione.

Ciao, :)