Jump to content

[RISOLTO] UserRegistration con conferma MAIL


MisterB

Recommended Posts

Ciao a tutti,
non ho capito molto di come si sviluppano moduli per prestashop però avevo bisogno di quanto scritto nel titolo!

PROPOSITI:
Fare in modo che quando un utente si registra esso non sia attivo e solo dopo che conferma la mail venga riconosciuto del sistema!

SOLUZIONE:
per la soluzione io ho modificato authentication.php che si trova nella root di prestashop, in particolare ho modificato la riga 111 inserendo una nuova destinazione. Non sono sicuro della corrispondenza della riga, cmq bisogna cercare dove viene creato l'account utente

Module::hookExec('createAccount', array(
               '_POST' => $_POST,
               'newCustomer' => $customer
               ));



dopo di che normalmente il sistema fa un redirect su una variabile che si chiama $back, ed è qua che c'è la mia piccola modifica:

Tools::redirect("wait_customer.php");



In questo modo andiamo in una pagina creata ad HOC per fare quello che ci serve, e nel particolare creeremo una pagina in root che si chiama wait_customer.php

<?php
   $db_name = "nomedeldatabase"; // i dati si possono trovare in settings.inc.php
   $db_password = "password"; // i dati si possono trovare in settings.inc.php
   $db_host = "host"; // i dati si possono trovare in settings.inc.php
   $db_user = "user"; // i dati si possono trovare in settings.inc.php
   $db = mysql_connect($db_host,$db_user,$db_password);
   if (!$db)
       die ("ERRORE CONNESSIONE AL SERVER
");
   $select = mysql_select_db($db_name);
   if (!$select)
       die ("ERRORE SELEZIONE DB
");    

   $dom = mysql_query("SELECT max(id_customer) FROM sdc_customer WHERE 1");// prendiamo l'ultimo id inserito (non è sicurissima come query), sdc va modificato con il prefisso della vostra tabella
   $ris = mysql_fetch_array($dom);
   $id_max = $ris[0];
   mysql_query("UPDATE sdc_customer SET active = 0 WHERE id_customer = $risultato");//sdc va modificato con il prefisso delle vostre tabelle


   $dom = mysql_query("SELECT email, secure_key, lastname, firstname, date_add FROM sdc_customer WHERE id_customer = $id_max"); // questa query restituisce i dati per mandare la mail

   $ris = mysql_fetch_array($dom);
   $email = $ris[0];
   $secure_key = $ris[1];
   $lastname = $ris[2];
   $firstname = $ris[3];
   $data = $ris[4];

   $soggetto = "Conferma registrazione per tuodominio.it [eCommerce]"; // prepariamo la mail

   $corpo_messaggio = "
Benvenuto nell'eCommerce di TuoDominio,
per confermare la tua registrazione è necessario che confermi il tuo indirizzo mail cliccando qui
o copiando nella barra degli indirizzi il seguente collegamento:
tuodominio/ecommerce/activation_user.php?cod=$secure_key
Se non ti sei iscritto al nostro eCommerce ci scusiamo per il disturbo e vi chiediamo di ingnorare questa mail!";
   $destinatario = $email;

   $tuoemail = "no_reply@tuodominio";

   mail ("$destinatario", "$soggetto", "$corpo_mesaggio", "From: $tuoemail"); //inviamo la mail
?>



A questo punto abbiamo l'utente non attivo a cui abbiamo mandato una mail per confermare, ora non ci resta che fare l'ultimo passo: attivare l'utente. per fare questo creiamo la pagina activation_user.php

<?php
   $cod = $_GET['cod'];
   if ($cod == ""){
       header("location:tuodominio");
       die();
   }else{
       $db_name = "nomedeldatabase"; // i dati si possono trovare in settings.inc.php
           $db_password = "password"; // i dati si possono trovare in settings.inc.php
           $db_host = "host"; // i dati si possono trovare in settings.inc.php
           $db_user = "user"; // i dati si possono trovare in settings.inc.php
           $db = mysql_connect($db_host,$db_user,$db_password);
           if (!$db)
                die ("ERRORE CONNESSIONE AL SERVER
");
           $select = mysql_select_db($db_name);
           if (!$select)
               die ("ERRORE SELEZIONE DB
");    

       mysql_query("UPDATE sdc_customer SET active = 1 WHERE secure_key = \"$cod\""); //sdc va modificato con il nome della vostra tabella
               header("location:tuodominio");
?>
[removed]
    window.alert("Il tuo account e' stato attivato");
[removed]
<?php
       die();
   }
?>



Non so se è chiaro quello che ho fatto... rimango a disposizione per approfondimenti, suggerimenti o correzioni. Sarebbe comodo passare in get a wait_customer.php l'id del cliente inserito ma non sono riuscito a trovarlo al volo e ho una consegna a breve. sarebbe altrettanto bello fare un modulo, ma anche per questo al momento non ci capisco molto di tpl etc, a breve mi documenterò bene bene... ad ogni modo spero appreziate

ENJOY

Simone

Link to comment
Share on other sites

Ottimo

Qui dobbiamo chiedere lumi a Vino, Disarci e Germano, ( loro sono i [spam-filter] dei moduli ) se vi è la possibilità di creare un modulo partendo dal tuo lavoro, il che sarebbe fantastico.

Attendiamo motizie

Ciao e Grazie

Link to comment
Share on other sites

non so nemmeno che vuol dire creare un blocco... cmq ho modificato una pagina e ho creato 2 pagine nuove... in realtà ora che ho un attimo di tempo sto mettendo a posto 2 cosine come ad esempio prendere i dati dal config invece di ripeterli...

Link to comment
Share on other sites

A suo tempo ci guardai e mi ero fatto un'idea. Credo che il flusso più semplice, scrivendo meno codice possibile, sia il seguente:

* l'utente compila la maschera di registrazione dalla quale viene eliminato il campo password
* in fase di salvataggio dei dati il sistema genera una password in automatico e la salva nel db

A questo punto l'utente riceve la normale mail di conferma con utente e password e può accedere.

Non dovrebbe essere troppo difficoltoso, in quanto il flusso rimane praticamente uguale, tranne la generazione della password che sarebbe da scrivere ma è una riga di codice.

Una volta entrato l'utente si cambia la sua password e vive tranquillo. Utenti che immettono mail errate non riusciranno mai ad entrare e l'obbiettivo è ragiunto.

Link to comment
Share on other sites

  • 1 month later...
Ottimo mr_rem

Grazie




Ciao, purtroppo a me continua a darmi errori.
questa è la mia procedura:
ho sostituito il la cartella con la mia , ho reinstallato di nuovo tutto, ho provato a fare una registrazione e mi da questo errore.

che devo fare.

grazie a tutti.

8335_L4oy7LnugyNnGlXcfRnV_t

Link to comment
Share on other sites

Ottimo mr_rem

Grazie




Ciao, purtroppo a me continua a darmi errori.
questa è la mia procedura:
ho sostituito il la cartella con la mia , ho reinstallato di nuovo tutto, ho provato a fare una registrazione e mi da questo errore.

che devo fare.

grazie a tutti.


Ciao
in che senso ho sostituito la cartella con la mia ?

Perchè basta copiare la cartella nei moduli e tutto dovrebbe funzionare tranquillamente

Ciao
Link to comment
Share on other sites

Ho installato questo modulo e, in fase di testing, ho riscontrato che, nelle mail in italiano, alcuni campi non venivano riportati correttamente. Il problema era dovuto ad alcune variabili che non erano compilate correttamente.
Ho pertanto modificato i file e riallego lo zip del modulo.


Per mr_rem

c'è solo una piccola cosa ancora da modificare per rendere il modulo perfetto, ed è il testo della prima mail che arriva al cliente quella [PRESTASHOP]Welcome - sarebbe opportuno modificarla in questo modo ( visto che l' account in quel momento non è ancora attivo), e per non generare confusione al cliente.

Sotto Ciao xxxxxxx

inserire : Il suo account e in fase di attivazione riceverà una seconda mail non appena il suo account sarà attivato.

Che ne dici ?

Provvedi tu a fare la modifica ?

In modo che non appena fatta sostituisco il file con quello da te modificato, a quello che avevo tradotto io nel post:

http://www.prestashop.com/forums/viewthread/15003/programmazione_moduli_design_e_temi/modulo_customerregistration_tradotto_in_italiano_da_testare_

in modo che teniamo la stesse modifichè.

Ciao
Link to comment
Share on other sites

Ottimo mr_rem

Grazie




Ciao, purtroppo a me continua a darmi errori.
questa è la mia procedura:
ho sostituito il la cartella con la mia , ho reinstallato di nuovo tutto, ho provato a fare una registrazione e mi da questo errore.

che devo fare.

grazie a tutti.


Ciao
in che senso ho sostituito la cartella con la mia ?

Perchè basta copiare la cartella nei moduli e tutto dovrebbe funzionare tranquillamente

Ciao


Nel senso che comunque dentro ci sono tutti i file che sono nella mia cartella, allora ho eliminato la mia cartella e al suo posto ho messo quella nella descrizione più in alto.

ma mi fa quell'errore

e comunque il mio mile già funzionava così da molto tempo, io pensavo che con questo nuovo l'utente ricevesse tramite mail un link per confermare registrazione.

ciao

it.zip

Link to comment
Share on other sites

In effetti, guardando un attimo il codice, noto che va ad agire sul DB nella tabella - xx_customer ( xx e relativo al prefisso utilizzato per le tabelle) e va a variari lo stato del campo ACTIVE da 0 = non attivo a 1 = attivo.

Hai dato uno sguardo al DB per vedere se lo stato cel campo active risulta 1 ?

Ciao

Link to comment
Share on other sites

In effetti, guardando un attimo il codice, noto che va ad agire sul DB nella tabella - xx_customer ( xx e relativo al prefisso utilizzato per le tabelle) e va a variari lo stato del campo ACTIVE da 0 = non attivo a 1 = attivo.

Hai dato uno sguardo al DB per vedere se lo stato cel campo active risulta 1 ?

Ciao


si in effetti mi rimane a 0


come faccio ?

grazie
Link to comment
Share on other sites

Ho installato questo modulo e, in fase di testing, ho riscontrato che, nelle mail in italiano, alcuni campi non venivano riportati correttamente. Il problema era dovuto ad alcune variabili che non erano compilate correttamente.
Ho pertanto modificato i file e riallego lo zip del modulo.


Per mr_rem

c'è solo una piccola cosa ancora da modificare per rendere il modulo perfetto, ed è il testo della prima mail che arriva al cliente quella [PRESTASHOP]Welcome - sarebbe opportuno modificarla in questo modo ( visto che l' account in quel momento non è ancora attivo), e per non generare confusione al cliente.



Per questo bisogna andare nalla cartella mails\it e modificare il file lang.php

Allego il mio

lang.php

Link to comment
Share on other sites

Ho installato questo modulo e, in fase di testing, ho riscontrato che, nelle mail in italiano, alcuni campi non venivano riportati correttamente. Il problema era dovuto ad alcune variabili che non erano compilate correttamente.
Ho pertanto modificato i file e riallego lo zip del modulo.


Per mr_rem

c'è solo una piccola cosa ancora da modificare per rendere il modulo perfetto, ed è il testo della prima mail che arriva al cliente quella [PRESTASHOP]Welcome - sarebbe opportuno modificarla in questo modo ( visto che l' account in quel momento non è ancora attivo), e per non generare confusione al cliente.

Sotto Ciao xxxxxxx

inserire : Il suo account e in fase di attivazione riceverà una seconda mail non appena il suo account sarà attivato.

Che ne dici ?

Provvedi tu a fare la modifica ?

In modo che non appena fatta sostituisco il file con quello da te modificato, a quello che avevo tradotto io nel post:

http://www.prestashop.com/forums/viewthread/15003/programmazione_moduli_design_e_temi/modulo_customerregistration_tradotto_in_italiano_da_testare_

in modo che teniamo la stesse modifichè.

Ciao


Ecco il file modificato.
Ovviamente questo file va inserito nella cartella ../mails/it
perche' se no non parte la mail.
Ciao

account.html

Link to comment
Share on other sites

  • 4 months later...

Ciao ragazzi, mi spiegate come mai quando trasferisco la cartella customerRegistration dentro la cartella modules, poi in BO mi spariscono i moduli?...

Grazie,,,

,in poche parole non riesco a fare funzionare sta benedetta funzione di registrazione cliente....

Link to comment
Share on other sites

  • 4 weeks later...
  • 5 months later...

IO ringrazio davvero tutti per la collaborazione, però vorrei fare una richiesta, visto che vi siete sbattuti un sacco, rendete la souluzione un po più fruibile !!

Mi spiego, per fare la modifica bisogna rincorrere file e modifiche da fare in vari post e pagine, mettete un bel riepilogo dove scaricare i file che vengono citati nel primo post, e le modifiche da fare per favore? grazie

Link to comment
Share on other sites

  • 9 months later...

Ciao a tutti, ho provato ad installarlo in locale ma quando vado sul tab moduli, della pagina non vedo piu tutti i moduli installati!!!! sto usando l'ultima versione italianizata di prestashop Version 1.3.6.0 dal sito di prestamodules. Qualcuno sa aiutarmi??? ciao grazie

Link to comment
Share on other sites

  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...