Autore Topic: [RISOLTO]Form in anonimato compilato una sola volta - Chronoforms 5  (Letto 441 volte)

Offline vitofan2joomla

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
ciao sono Fanciullo,
ho bisogno di una piccola dritta solo per sapere se esiste possibilità.

gli studenti di una scuola devono fare un form per l'autovalutazione dei docenti. Ovviamente deve essere anonimo.

Però gli studenti che si loggano con proprie credenziali a Joomla dovrebbero compilare una sola vota il form (per evitare azioni di inquinamento dati).

E' possibile impedire un secondo accesso al form per un dato utente pur rimandendo questi in anonimato?

Grazie per l'eventuale indicazione
« Ultima modifica: 30 Nov 2016, 16:47:24 da vitofan2joomla »

Offline giusebos

  • Instancabile
  • ******
  • Post: 17803
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
Re:Form in anonimato compilato una sola vota
« Risposta #1 il: 19 Nov 2016, 00:44:47 »
Stai parlandi di chronoforms? Sarebbe meglio inserirlo nel titolo per avere più aiuti.
Si può fare, e ci possono essere più strade. Personalmente non ricordo come, ma in alcune vecchie discussioni se ne parla.
« Ultima modifica: 19 Nov 2016, 10:31:41 da giusebos »
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline vitofan2joomla

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Re:Form in anonimato compilato una sola vota - Chronoforms 5
« Risposta #2 il: 19 Nov 2016, 00:58:24 »
ho fatto

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 7735
  • Sesso: Maschio
    • Mostra profilo
    • Test di Albo Pretorio On LIne e Moduli Scuola On Line per Joomla 3
Re:Form in anonimato compilato una sola vota - Chronoforms 5
« Risposta #3 il: 20 Nov 2016, 08:53:19 »
Non ci hai detto come e sarebbe stato bello saperlo.

Comunque penso che la cosa si può fare registrando su due tabelle:

su una i campi del questionario anonimo ed  in questa tabella non ci deve essere nessun riferimento all'user id di chi ha riempito il form.

sull'altra basta registrare l'user id di chi ha compilato il form.

Facendo un controllo preventivo sulla seconda tabella al momento dell'ingresso nel form si esclude con uno script chi ha già compilato.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org/joomla3/

Offline vitofan2joomla

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Re:Form in anonimato compilato una sola vota - Chronoforms 5
« Risposta #4 il: 21 Nov 2016, 09:00:49 »
Grazie Vales,
per le mie conoscenze di programmazione credo che non ce la farò mai!

Intanto per curiosità,  quale sarebbe la tecnica per registrare l'user id di chi ha compilato il form sulla seconda tabella?

E qua smanettando ci potrei arrivare.....

Ovviamente non so proprio come scrivere lo script  che mi faccia il controllo "user id" sulla seconda tabella quando si tenta di rifare il questionario.

Mi consola che almeno logicamente si può fare
Grazie

Offline Ago_

  • Appassionato
  • ***
  • Post: 777
  • Sesso: Maschio
    • Mostra profilo
Re:Form in anonimato compilato una sola vota - Chronoforms 5
« Risposta #5 il: 21 Nov 2016, 18:34:34 »
la butto la, magari sfruttando il sistema per evitare le duplicazioni di giusebos ??

Offline vitofan2joomla

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Re:Form in anonimato compilato una sola vota - Chronoforms 5
« Risposta #6 il: 21 Nov 2016, 18:55:24 »
Grazie Ago_
mi diresti dove si trova il sistema di cui parli?

Offline Ago_

  • Appassionato
  • ***
  • Post: 777
  • Sesso: Maschio
    • Mostra profilo
Re:Form in anonimato compilato una sola vota - Chronoforms 5
« Risposta #7 il: 21 Nov 2016, 18:57:19 »
Grazie Ago_
mi diresti dove si trova il sistema di cui parli?

www.icagenda.it/chronoforms-impedire-valori-duplicati-in-un-campo.html

magari giocando un po si può sfruttare questo sistema

Offline vitofan2joomla

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Ho trovato una valida soluzione

a monte : ho creato  due tabelle, tutte e due con la funzione create table di Chronoforms.
 La prima salva le domande del form (il campo user_id è stato escluso). (tbSalvaForm)
La seconda salva user_id dello studente loggato (in questa tabella ci sono solo due campi ID e USER_ID). (tbSalvaUser)

  • apro il setup del form
  • in on load aggiungo l'evento authenticator (quindi se lo studente fa parte del gruppo autorizzato vado avanti...)
  • in on success dell'evento authenticator ho un DB read
  • il DB read legge la tabella tbSalvaUser. nella conditions del DB read ho aggiunto questo codice:
    <?php
    $user = JFactory::getUser();
    return array('user_id' => $user->id);
     ?>
     (tradotto vuol dire che controllo se esiste nella tbSalvaUser un valore user_id uguale allo user_id del loggato)
    se esiste:
  • in on found del DB read aggiungo un Custom Code:
    in content aggiungo questo codice:
    <?php $form->errors[] = 'Non è possibile compilare due volte lo stesso questionario'; ?>
    la procedura termina con il messaggio e non succede più nulla.....
  • in on not_found del DB read carico
    HTML (render form)
    questo vuol dire: se non hai trovato nella tbSalvaUser uno user_id uguale all'utente loggato vai avanti
    e carica il form normalmente e vuol dire anche che questo utente è la prima volta che accede al form.
  • In on fail di authenticator aggiungo un display messagge:
    "non sei un alunno autorizzato" per tutti coloro che non fanno parte del gruppo alunni creato in Joomla.
  • IN ON SUBMIT aggiungo un DB save che salva le domande in tbSalvaForm,
    quindi basta solo indicare il database dove salvare il form
  • sempre in on sumit aggiungo un custom code:
    <?php
    $user = JFactory::getUser();
    $form->data['registra']['user_id']= $user->id;
    ?>
    che fa questo codice? mi prende lo user_id dell'utente loggato e me lo egualizza al model "registra". qua è un po complicato capire, in altre parole trasferisco user_id nel model del database che memorizza i codici user
  • aggiungo un altro DB save per salvare il valore user_id nella tabella tbSalvaUser con queste impostazioni:
    table name --> tbSalvaUser
    Save under Model ID --> YES
    Model id --> registra

    Questo è tutto. Spero di essere stato chiaro .... per quello che sono riuscito a capire intanto

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 7735
  • Sesso: Maschio
    • Mostra profilo
    • Test di Albo Pretorio On LIne e Moduli Scuola On Line per Joomla 3
Ottimo
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org/joomla3/

Offline vitofan2joomla

  • Nuovo arrivato
  • *
  • Post: 21
    • Mostra profilo
Re:[RISOLTO]Form in anonimato compilato una sola volta - Chronoforms 5
« Risposta #10 il: 30 Nov 2016, 22:13:17 »
Però se non mi davi l'input tu iniziale......chi ci arrivava a capire di salvare in due tabelle? una per il questionario e l'altra per pescare lo user_id
grazie

 

Torna su