Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente bannato
    Registrato dal
    Jan 2017
    residenza
    bergamo
    Messaggi
    94

    inviare un'email di conferma dopo la registrazione

    ciao raga, ho bisogno di verificare l'email degli utente e mi serve sapere come fare a inviare un link di conferma nella posta dell'utente, al momento so che devo utilizzare la funzione mail, mah non ho capito come devo fare tenere temporalmente i dati di registro e poi se l'utente va sul link, inserirli nel database, vi lascio il codice sorgente del file che si occupa di registrare i nuovi utenti

    codice HTML:
    <?php$conessione = mysql_connect('localhost', 'moltointeressante', '') or die(mysql_error());
    mysql_select_db('my_moltointeressante', $conessione) or die(mysql_error());
    
    $utente = $_POST['username'];
    $chiave = $_POST['codice'];
    $email = $_POST['email'];
    
    $sql = "INSERT INTO usuarios (idUsuario, usuario, password, email) VALUES (null, '$utente', '$chiave', '$email')";
    mysql_query($sql) or die (mysql_error());
    
    echo "complimenti ora fai parte dei miei allievi";
     ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Nella tabella dove salvi i dati degli utenti aggiungi i due campi:
    - attivo, campo di tipo tinyint
    - regcode, campo di tipo varchar

    nel momento in cui un utente si registra salvi nella tabella i suoi dati, inoltre metti uno 0 nel campo "attivo" ed un codice univoco nel campo regcode.
    Ora nell'email inserisci un link del tipo
    www.tuosito.it/activate.php?regcode=qui_il_codice_univoco_generat o

    Sul tuo sito devi aggiungere lo script activate.php nel quale leggi $_GET['regcode'] lo cerchi nella tabella degli utenti e se lo trovi fai un update del campo "attivo" mettendolo a 1, così l'utente risulterà attivo.

    Ogni volta che un utente tenta il login, oltre a username e password dovrai verificare che il campo "attivo" sia 1, se lo è procedi col login, altrimenti dici all'utente che il suo account non è attivo.

  3. #3
    Utente bannato
    Registrato dal
    Jan 2017
    residenza
    bergamo
    Messaggi
    94
    grazie mille, ho aggiundo i due campi, comunque non ho capito come devo fare con lo script activate e con l'id univoco, come faccio a farlo

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Per l'id potresti usare la funzione uniqid().
    Attento che non garantisce che il codice generato sia davvero univoco, ma ci sono ottime probabilità che lo sia.
    Quando generi il codice, prima di assegnarlo all'utente, esegui una select sulla tabella in cerca di tale codice, se non lo trova lo assegni all'utente, se invece lo trova, vuol dire che lo aveva già generato in passato, quindi ne generi un altro e riprovi finché non ne hai uno ancora non usato.

    Lo script activate.php riceve tramite get la variabile regcode, quindi la recupera con $_GET['regcode'] ed usa questo valore in una select.
    Se trova una corrispondenza, esegui una nuova query, stavolta update per cambiare il valore di "attivo" da 0 a 1, se non la trova non fai niente, probabilmente qualcuno sta cercando di inserire codici a caso.

  5. #5
    Utente bannato
    Registrato dal
    Jan 2017
    residenza
    bergamo
    Messaggi
    94
    ho letto sul sito di php che la funziona genera un numero relativo al tempo, e simili a microtime, comunque credo che sia sufficiente mettere dentro una variabile tale funzione vero? esempio idutente = uniqid()
    non ho capito bene come devo fare con lo script activate, potresti spiegarmi un po meglio grazie

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Controlla comunque che l'id sia veramente univoco, non è sicuro al 100% che lo sia.

    Per lo script di attivazione:
    L'utente clicca sul link
    www.tuosito.it/activate.php?regcode=qui_il_codice_univoco_generat o
    che ha ricevuto sull'email, quindi accede allo script activate.php passandogli come parametro regcode

    lo script recupera tale parametro con $_GET['regcode']
    ora, facciamo con una sola query, magari è più facile, deve eseguire una query UPDATE sulla tabella utenti in cui setta da 0 a 1 il campo "attivo" relativo al regcode ricevuto (quindi WHERE regcode="$_GET['regcode']").
    Verifichi ora se mysqli_affected_rows() o equivalente, secondo cosa usi per eseguire le query (PDO o altro, ma NON mysql_ senza i finale), se vale 1 l'utente non era attivo e il codice era corretto, quindi lo hai attivato, se invece è 0 le cose sono due, o il codice è sbagliato oppure l'utente era già attivo.

    Io nella query ho messo direttamente il valore di $_GET per brevità, cosa che non dovrai fare, dovrai assicurarti che effettivamente ci sia un codice di attivazione, magari controllando che la stringa contenga solo numeri e lettere e non altri tipi di carattere.

  7. #7
    Utente bannato
    Registrato dal
    Jan 2017
    residenza
    bergamo
    Messaggi
    94
    scusa non ho capito bene, se nella mail devo inviare il link del sito piu il codice generato, devo fare un altra query per prendere l'email e poi spedire il messaggio, poi non so mah devo anche concatenare il mio sito e il codice?? per me e molto difficile, potresti farmi un esempio chiaro, grazie

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Se per te questo è molto difficile vuol dire che devi studiare ancora le basi.
    Non voglio offenderti, è proprio che se le cose stanno così ti stai avventurando in qualcosa oltre le tue possibilità e stiamo parlando comunque di una cosa semplice, quindi dovresti fermarti e studiare, altrimenti sarà un continuo chiedere "come si fa...?" e poi "non ho capito, mi fai un esempio?".
    Così non si impara niente e si perde un casino di tempo.

    Prenditi un libro o trova un buon sito dove insegnano ad usare PHP (meglio il libro), comincia dall'inizio, non saltare niente e non avere fretta, vedrai che il tempo che investi (non perdi, investi) nello studio lo recupererai con gli interessi quando ti metterai a sviluppare una tua applicazione, perché molte cose le saprai fare di tuo e non dovrai stare a scrivere su un forum, attendere una risposta, dire "non ho capito", aspettare un'altra spiegazione, ribadire "mi fai un esempio", aspetta ancora... e ancora... e ancora...

    Sul forum ci potrai venire comunque a chiedere aiuto, ma avendo basi solide capirai al volo il consiglio che ti si da per risolvere il problema.

    Provo a farti capire quanto sono basilari le domande che mi fai.
    Mi chiedi "se nella mail devo inviare il link del sito piu il codice generato, devo fare un altra query per prendere l'email e poi spedire il messaggio"
    Chiaramente no, l'utente si sta registrando, quindi la sua email l'ha inserita nel form di registrazione, ce l'hai nell'array $_POST, quello che viene ricevuto dallo script che esegue la registrazione, non c'è da andare sul DB.

    Per la concatenazione tra indirizzo e codice, si tratta semplicemente di concatenare 2 stringhe, si fa con l'operatore . (punto).
    Ultima modifica di Alhazred; 16-05-2017 a 18:58

  9. #9
    Utente bannato
    Registrato dal
    Jan 2017
    residenza
    bergamo
    Messaggi
    94
    grazie per il consiglio, avevo preso il libro php e mysql guida completa, mah ho imparato poco, prendeva le basi della programmazione, e poi passava subito alla programazzione orientata agli oggetti, molte delle funzioni non sono state presi in considerazione, quindi non ho imparato molto dal libro, e stato solo un ripasso.
    riguardo al codice, ho 2 script, il primo che registra l'utenti nel database, e l'altro che mi hai suggerito di creare ACTIVATE.PHP
    l'email recuperata con post si trova nel primo, nel secondo non ho niente, e questo il problema!!, dallo script activate non posso accedere alla variabile post email, perche questa si trova nel primo, quello che mi viene in mente e avere un solo script che faccia tutto il lavooro di registrare, salvare nel db, spedire messaggio di conferma e attivare l'utente.
    se e questo quello che devo fare con 1 solo script, allora credo che questo sarebbe il nuovo codice
    [HTML5]
    <?php$conessione = mysql_connect('localhost','moltointeressante','')ordie(mysql_error());
    mysql_select_db
    ('my_moltointeressante', $conessione)ordie(mysql_error());

    $utente
    = $_POST['username'];
    $chiave
    = $_POST['codice'];
    $email
    = $_POST['email'];

    $sql
    ="INSERT INTO usuarios (idUsuario, usuario, password, email) VALUES (null, '$utente', '$chiave', '$email')";
    mysql_query
    ($sql)ordie(mysql_error());

    echo
    "per completare la registrazione devi confermare la tua iscrizione, accedi al link che ti stato mandato";

    codice = uniqid();

    confermazione = $_GET['REGCODE'];


    ?>
    [/HTML5]

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.