Back to top

Autore Topic: variabile in sessione  (Letto 8478 volte)

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
variabile in sessione
« il: 14 Nov 2013, 11:23:55 »
salve,
mi servirebbe inserire in sessione una variabile mediante link o button
La variabile dovrebbe essere presente in tutte le pagine del sito quando è settata.
in pratica al click mi dovrebbe settare la variabile
al nuovo click eliminare (unset)
una sorta di switch.

C'è qualcuno che può aiutarmi?

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:variabile in sessione
« Risposta #1 il: 14 Nov 2013, 12:44:44 »
meglio usare i cookie no?

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #2 il: 14 Nov 2013, 13:41:02 »
Come posso fare? Hai qualche esempio di codice da darmi?

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:variabile in sessione
« Risposta #3 il: 14 Nov 2013, 13:49:34 »
dipende dal modo in cui vuoi implementarlo e dai linguaggi che conosci. potrei darti una dritta su come farlo in php ma se lo devi mettere nel template o devi creare un modulo andrebbe bene ma se lo devi incollare dentro un articolo non avrebbe più senso...

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #4 il: 14 Nov 2013, 14:01:49 »
Ti spiego. Vorrei inserire il codice in default.php in mod_login come link o button. Poi il valore della variabile che metto in sessione o cookie deve essere leggibile dal PHP di virtuemart (la test, featured, browse_page e flypage)

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:variabile in sessione
« Risposta #5 il: 14 Nov 2013, 14:04:55 »
Tada:

Codice: [Seleziona]
// Get input cookie object
$inputCookie  = JFactory::getApplication()->input->cookie;

// Get cookie data
$value        = $inputCookie->get($name = 'myCookie', $defaultValue = null);

// Check that cookie exists
$cookieExists = ($value === null);

// Set cookie data
$inputCookie->set($name = 'myCookie', $value = '123', $expire = 0);

// Remove cookie
$inputCookie->set('myCookie', null, time() - 1);

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #6 il: 14 Nov 2013, 14:19:34 »
Grande!
Ancora un po' di pazienza......come faccio a collegarlo al link ogni funzione?

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:variabile in sessione
« Risposta #7 il: 14 Nov 2013, 14:24:58 »
in quali casi viene creato il cookie all'accesso?

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #8 il: 14 Nov 2013, 14:42:39 »
Allora, in mod_login volevo fare una cosa del genere:
Codice: [Seleziona]
If isset($var_cookie) {  Echo '<a href="rimuovi la variabile dai cookies" >nascondi</a> ';   }
Else {   Echo '<a href="inserisci la variabile nei cookies">mostra</a>'; }

O il contrario, ma comunque qualcosa del genere
Dopo l'evento credo che debba ricaricare la pagina

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:variabile in sessione
« Risposta #9 il: 14 Nov 2013, 15:11:14 »
se i cookie vengono creati dinamicamente e solo in un click allora ti conviene (forse) crearli in javascript :
http://www.w3schools.com/js/js_cookies.asp
e quando devi verificarli invece lo fai con php

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #10 il: 14 Nov 2013, 16:14:44 »
attenzione solo che ciò che è salvato in un cookie resta leggibile sul computer che ha creato/usato il cookie ed io non confiderei sull'expire date posto a zero perché il cookie sia cancellato.

visto che parli di e-commerce fermati un attimo a riflettere sulla sicurezza.

ciao,
marco


mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #11 il: 14 Nov 2013, 16:34:57 »
1. Ci sono riuscito ma ho usato un codice preso da un altro sito e non sono sicuro che il forum mi permetta di segnalare il sito. Tra l'altro lo script è scaricabile gratuitamente. Posso?

2. Grazie marco, ho capito.
diciamo che per quello che serve a me è uno stato 0 e 1 che farà vedere o no una porzione di codice.
Quindi è un cookie che non deve contenere nessuna informazione sensibile riguardante i dati dell'ecommerce.
Magari stavo pendando se si poteva distruggere il cookie al logout insieme alle info del logout.
Come si potrebbe distruggere al logout?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #12 il: 14 Nov 2013, 16:42:51 »
1. potresti ma anche no.  ;D
non certo perché parli della concorrenza, ma perché io non amo gli accrocchi con soluzioni fuori del framework con cui si sta lavorando. quando in futuro ci sarà da metterci le mani nessuno capirà più come e perché è stato fatto.
questo è il mio parere di sviluppatore senior, come moderatore non pongo alcun veto.

2. cancellazione cookie
da php? mi sembra dato che parli di logout. imposti una stringa vuota come valore e l'expire date nel passato.

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #13 il: 14 Nov 2013, 17:27:28 »
1. preferisco non metterlo allora. Ma vi dico che ho risolto attraverso funzioni javascript per la creazione e cancellazione del cookie(ne troverete diversi cercando con google). mentre per la lettura del valore del coockie ho usato il codice php così:
Codice: [Seleziona]
$valore = $_COOKIE['nome_cookie'];
if ($valore) { echo 'il cookie esiste';} else {echo 'il cookie non esiste';}

2. il cookie viene creato così:
Codice: [Seleziona]
<a href="#" onClick="funzioneCreaCookie('nome_cookie','valore','durata');">mostra prezzi</a>
la durata io la lascio vuota. Però al logout il cookie non viene cancellato.
come posso fare?

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:variabile in sessione
« Risposta #14 il: 14 Nov 2013, 17:34:16 »
Ma perché questo:
Codice: [Seleziona]
$valore = $_COOKIE['nome_cookie']; Joomla offre quella bellissima funzione per filtrare i cookie, perché non usarla?

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #15 il: 14 Nov 2013, 17:42:54 »
e come?
ho provato così
Codice: [Seleziona]
// Get input cookie object
$inputCookie  = JFactory::getApplication()->input->cookie;
// Get cookie data
$value = $inputCookie->get($name = 'prezzi', $defaultValue = null);
ma non mi funziona

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #16 il: 14 Nov 2013, 17:45:40 »
lasciare vuota la durata equivale ad impostarla a zero, pertanto il cookie viene cancellato alla chiusura del browser, come detto prima devi impostare la data ad un valore nel passato prova:

<a href="#" onClick="funzioneCreaCookie('nome_cookie','',new Date(new Date().getTime() - 10000));">mostra prezzi[/url]

ciao,
marco

ps: penso che comunque tu debba fare una request al server perché il browser cancelli il cookie.

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #17 il: 14 Nov 2013, 17:48:26 »
Codice: [Seleziona]
$value = $inputCookie->get($name = 'prezzi', $defaultValue = null);

ad intuito è più facile che sia così:
Codice: [Seleziona]
$value = $inputCookie->get('prezzi', '0');
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #18 il: 14 Nov 2013, 17:52:18 »
giusto  :)
e come posso distruggerlo al logout?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #19 il: 14 Nov 2013, 17:54:25 »
sempre ad intuito:

Codice: [Seleziona]
$value = $inputCookie->set('prezzi', '', time()-3600);

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #20 il: 14 Nov 2013, 18:04:11 »
e dove lo scrivo?
non riesco a capire quando si clicca sul tasto logout cosa succede e che codice viene eseguito.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #21 il: 14 Nov 2013, 18:18:43 »
viene eseguito il metodo logout del controller user in com_user.
se prima funzionava lascialo così, tanto stai scrivendo un uno o uno zero in un cookie che si chiama prezzi: anche se non lo cancelli non succede niente.

qui si va su interventi complicati e preferirei non spingerti a farli, se non sei più che esperto come programmatore.

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #22 il: 14 Nov 2013, 18:31:15 »
d'accordissimo con te e ti ringrazio per l'aiuto.
Il problema però è che se uno si slogga senza cancellare il cookie non vede i prezzi di default.
Quindi ho necessità che venga cancellato sia al logout che eventualmente alla chiusura del browser.
Quello che mi serve in sostanza è che il cookie non venga considerato quando l'utente non è loggato.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #23 il: 14 Nov 2013, 19:31:02 »
overload del template di modlogin con il codice (php, vedi prima) per cancellare il cookie.

fermati a pensare: mi sa che sta venendo fuori un piatto di spaghetti!  ;D

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

mau_develop

  • Visitatore
Re:variabile in sessione
« Risposta #24 il: 14 Nov 2013, 19:37:13 »
ma non puoi usare solo le sessioni invece del cookie?
« Ultima modifica: 14 Nov 2013, 19:39:34 da M_W_C »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #25 il: 14 Nov 2013, 20:27:01 »
a dire il vero lui era partito, correttamente, chiedendo delle sessioni  ;D ;D ;D
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #26 il: 14 Nov 2013, 20:54:55 »
Infatti, ma non so come fare  :'(

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #27 il: 14 Nov 2013, 21:15:35 »
allora prendi fiato e spiega con calma che cosa vuoi fare e perché.
nota che non ho chiesto il come, se ci riusciamo te lo suggeriamo noi. con calma perché tanto adesso vado a mangiare la pizza quindi non ti rispondo ora ;D

che prezzi è che vuoi o non vuoi far vedere? è a scelta dell'utente vederli? non devono essere più visti quando un fa il logout?

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #28 il: 14 Nov 2013, 21:49:10 »
Allora, per incominciare grazie della pazienza  :)
Ti spiego cosa mi serve:
Se l'utente non è loggato non succede niente, cioè vede i prezzi del gruppo defaul tranquillamente.
Quando l'utente si logga gli faccio uscire un link "no prezzi" che se cliccato ricarica la pagina nascondendo il prezzo dappertutto.
Nel frattempo quel link è cambiato ed è diventato "si prezzi". Cliccando sul link la pagina si ricarica facendo visualizzare di nuovoi prezzi.
Quando poi l'utente fa il llo out deve tornare a vedere semplicemente i prezzi di default.
Ecco tutto. Spero di essermi spiegato correttamente.

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:variabile in sessione
« Risposta #29 il: 14 Nov 2013, 22:05:09 »
ma allora (scusa tanto) la sessione non ti serve a niente: ti basta salvare da qualche parte la preferenza e considerarla solo se l'utente è loggato... se poi scade la sessione che ti importa, sempre meglio per lui se l'utente al prossimo login si ritrova le impostazioni che aveva lasciato precedentemente.

Chi lascia la casa in ordine per poi rientrare e trovarla a soqquadro?

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #30 il: 14 Nov 2013, 22:46:12 »
Infatti ho risolto con il cookie facendo controllare prima se l'utente è loggiato e poi il valore del cookie.
Il fatto è che mi sembra una cosa un po' arrangiata. Mentre con la variabile di sessione, quando scade la sessione dell' utente la variabile decade. O sbaglio?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:variabile in sessione
« Risposta #31 il: 15 Nov 2013, 08:46:08 »
Citazione
ti basta salvare da qualche parte la preferenza
è esattamente questo il concetto di sessione...

@guardiano
il numero di cookie e la loro dimensione è limitata, mentre nella sessione puoi inserire ciò che vuoi (entro certi limiti ovviamente) ma, soprattutto, le variabili di sessione restano sul server.

da quanto sopra si deduce che le informazioni, ove non sia richiesta una certa persistenza, vanno poste in sessione e non in cookie. questo a livello di informazione generale.

come hai ben detto, una volta chiusa la sessione, le variabili sono cancellate, subito o quasi (vedi tabella #__session), comunque restano sul server e non sono più accessibili da sessione.

per il resto direi che hai già fatto ciò che volevo suggerirti ovvero verificare il ricorrere delle due evenienze per non visualizzare i prezzi, in pseudo code:

Codice: [Seleziona]
if( !(utenteLoggato && nascondiPrezzi) ) mostraPrezzi();
direi che va bene così, se no dovresti modificare nuovamente tutto (ed è lunga farlo bene), la prossima volta lo imposterai in modo diverso.


ciao,
marco

ps:continua a sfuggirmi la ratio del non mostrare i prezzi agli utenti registrati... finora mi avevano sempre chiesto il contrario  :o



mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline guardiano

  • Esploratore
  • **
  • Post: 133
    • Mostra profilo
Re:variabile in sessione
« Risposta #32 il: 15 Nov 2013, 09:44:11 »
Grazie mille per l'aiuto Marco,
per quanto riguarda i motivi di questa, è semplicemente una richiesta che mi è stata fatta da un cliente.

ciao

 



Web Design Bolzano Kreatif