Joomla.it Forum
Non solo Joomla... => Sviluppo => : 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
-
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.
-
;)
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 :)
-
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 :)
-
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.
-
mi confermi che non posso utilizzare mosgetparam?
Lo dovrai usare, ma nel modo corretto.
Altrimenti come recuperi i parametri?
-
Giusto una curiosità... è assurdo pensare di utilizzare il db come elemento di passaggio?
Ma il DB lo devi usare, ma ti servono alcuni parametri.
-
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? ???
-
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
-
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.
-
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 :)
-
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
?>
-
;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
-
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>";
-
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>";
?>
-
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.
-
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.
-
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
-
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.
-
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,
-
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.
-
Grazie comunque :)
ho risolto con l'uso di variabili di sessione.
Ciao, :)