[risolto]$_SESSION in joomla esiste già vero?
-
Buongiorno,
se su un piccolo form che sto testando in ambiente esterno a Joomla, uso la variabile super globale in oggetto per tenere disponibile il dato che l'utente inserisce (ad es una data), ovviamente poi quando sposto lo script dentro Joomla attraverso un articolo usando sempre il plugin Sourcerer,
non devo inizializzare la sessione consession_start()
come ho dovuto fare nei test.
O lo devo fare ugualmente?In teoria in joomla la sessione è già aperta in index.php e $_SESSION dovrebbe già contenere i dati delle login e quant'altro.
quindi
aggiungo solo una chiave con
$data=$_POST['data'];//acquisisco la data in arrivo dal form
$_SESSION['data']=$data; //"iscrivo" il valore nella variabile di sessione.Se ciò che ho scritto è corretto vorrebbe dire che avrei capito qualcosa
.
Questo lo farei allo scopo di togliere il campo data dal form principale, o meglio lo metto come tyle= 'hidden' e value='<?echo $_SESSION['data'] ?>'
in modo che se il form va compilato varie volte per uno stesso giorno la cui data va cmq registrata nel database, dopo l'invio dei dati torno ad un nuovo form vuoto ma ho già la data impostata.
Nel test tutto funziona infatti.
Mi trovo ora nella fase di spostare gli script in joomla e mi chiedevo appunto come adattare lo script per farlo funzionare dentro gli articoli Joomla.buona giornata
Filippo P.buona giornata
Filippo -
Filippo, io non ho capito bene, ma se devi comunicare dall'esterno con Joomla, ti consiglio comunque di passare attraverso le API.
Utilizzare codice PHP embeddato nell'articolo, senza utilizzare il pattern architetturale di Joomla è una cosa che non si fa, perché mandi a farsi friggere tutto il layer di sicurezza e le ottimizzazioni del framework del CMS.Poi magari ho capito male io eh... magari spiega meglio il progetto, così possiamo darti una mano più concreta.
-
Capisco le tue obiezioni ma le API di Joomla non mi permettono di fare quel che mi serve a meno di ricorrere continuamente ad estensioni.
Probabilmente alla fine farò del tutto a meno del CMS... ma al momento mi pareva che il "compromesso" di usare il core di Joomla per poi fare le aggiunte del caso tramite codice esterno, fosse ancora accettabile.
il progetto:
Gestire dei compiti da assegnare a delle persone e allo stesso tempo avere un archivio di chi ha fatto cosa in tal giorno.
Quindi ho un form con input data che invia la data a un file dove un altro form ha diversi campi che con JS restano nascosti e compaiono sulla base di un radio-button. Cmq alla fine il form invia i dati ad un file che popola una tabella master e una slive .
La tabella mi fa da archivio.
Poi ho due file che mostrano compiti assegnati. uno generale e mostra i compiti dell'ultimo mese per tutti.
e uno che visualizza i compiti per il giorno dopo ad ognuno in base a chi è loggato.
Uso Joomla per non dover fare a mano tutto il sistema gerarchico di permessi e accesso agli articoli che trovo ottimo e già pronto.
Ora venendo al post precedente,
Ho pensato di usare la var globale $session di PHP e di avere subito la data di riferimento per usarla nel form di assegnazione in diversi modi e per evitare di doverla impostare tante volte ogni giorno.
Avendo fatto i test su file PHP al di fuori di Joomla mi chiedevo quanto ho descritto nel post precedente.
tutto qua.
PS. Il progetto è creato su una situazione verosimile ma inventata, allo scopo di imparare in po' della programmazione web (PHP SQL e JS).
In ogni caso chiedo, ho capito bene la questione circa le sessioni di PHP? -
No, la sessione non è condivisa tra più applicazioni.
Se la sessione fosse condivisa ci sarebbe un'enorme problema di sicurezza. -
Ok, quindi per intenderci, ci saranno come due sessioni aperte?
Cmq una per mantenere un utente connesso al sito mentre naviga tra le view attraverso i menù è già esistente ma resta separata da quella che andrei ad avviare io per mantenere in vita il valore di $_SESSION['data'].
Giusto?
In ogni caso ancora grazie .
Filippo -
Se il tuo form non fa parte dell'infrastruttura di Joomla, hai due gestioni diverse.
Ma questo campo data, che roba è?
Perché se è la data odierna, puoi inserirla sul DB direttamente in SQL con l'istruzione MySQLCURDATE()Se ti serve solo un form che poi invii i dati al DB, non sarebbe meglio usare un'estensione tipo Convert Forms?
-
Non voglio usare estensioni. Son rimasto già fregato da estensioni mal tenute. Uso solo sourcerer.
il form che mi dà la data serve perché non posso sapere per quale giorno viene assegnato un compito.
normalmente per il g dopo al corrente ma potrebbe non essere così.
Alla fine lo faccio impostare e se resta sempre quello nella sessione ok se va cambiata ho un rimando al form per cambiare data:
così $data sarà sovrascritta dalla nuova e di conseguenza anche $_Session .
in ogni caso va registrata nel db per avere uno storico sempre consultabile . -
Da sviluppatore ti posso consigliare, poi ognuno fa come vuole.
Stai attento quando fai le operazioni CRUD sul database, perché se non passi per un sistema sicuro, tipo il “query chaining” offerto dal framework di Joomla, sei soggetto ad attacchi di SQL injection.
-
certamente mi è stato indicato di usare prepare stmt e bind_param per separare query e parametri in una insert into.
grazie di tutto.