Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di angelo85ct
    Registrato dal
    Dec 2007
    Messaggi
    322

    registrazione ad un sito tramite ricezione email.....come fare??

    salve, sto creando un sito, dove è necessario registrarsi, solo che ho fatto una semplicissima registrazione, e ora volevo fare in modo che l'utente per registrarsi deve dare conferma cliccanto sull'email che arriva nella propria casella di posta.
    Solo che non so come fare, non è che qualcuno di voi mi puo spiegare come fare o magari indicarmi qualche guida in modo che mi possa studiare come fare?

    Grazie ...Aspetto qualche dritta.

  2. #2
    Allora, posso dirti come io lo farei:

    Crei tabella Utenti
    Utenti
    {
    id INT NOT NULL,
    nome VARCHAR(100) NOT NULL,
    cognome VARCHAR(100) NOT NULL,
    username VARCHAR(100) NOT NULL,
    password CHAR(64) NOT NULL,
    email VARCHAR(200) NOT NULL,
    abilitato BOOLEAN NOT NULL DEFAULT FALSE,
    altri dati ...
    }


    Crei poi una tabella Registrazione:

    Registrazione
    {
    id INT NOT NULL AUTO_INCREMENT,
    hash VARCHAR(255) NOT NULL,
    id_utente INT NOT NULL
    }

    Quando crei l'utente inserisci i dati in Utente, avendo cura di lasciare abilitato = false, poi inserisci una riga in Registrazione con id_utente = all'id dell'utente inserito, e hash = una cosa casuale, che so:

    $hash_generato = MD5(session_id()."##".mktime()).SHA1($username+$pa ssword)

    Una cosa che sei assolutamente sicuro (in termini di probabilità) che non verrà mai generata due volte uguale.

    Poi invii una mail all'email indicata dall'utente, con il link

    "http://tuo.sito.it/confirm.php?hash=."$hash_generato."&id_utente=".$i d;

    Il file confirm.php fara una query:

    "SELECT COUNT(*) FROM Registrazione AS r INNER JOIN Utenti AS u ON u.id = r.id_utente WHERE r.has like '".$_GET['hash']."' AND u.id = ".$_GET['id_utente']

    Se il risultato è 1 allora abiliti l'utente e cancelli la riga della tabella Registrazione, per essere sicuro che non vi saranno collimazioni di hash.

    Se vuoi fare una cosa ancor più particolare, aggiungi un campo a Registrazione {scadenza DATETIME NOT NULL} che indichi come datetime 24 ore dopo la richiesta. Modifichi poi la query in modo che la data di scadenza sia >= NOW().

    Infine, nella pagina principale soltanto, inserisci un controllo che cancella tutte le richieste scadute.

  3. #3
    Utente di HTML.it L'avatar di angelo85ct
    Registrato dal
    Dec 2007
    Messaggi
    322
    grazie di tutto, ora sto ultimanto un cosa, appena finisco mi cimeto in questa, se dovessi avere qualche dibbio ti chiedero, dinuovo grazie.

  4. #4
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Ciao,
    prima di tutto grazie!
    Ho provato a far quando dici te...ho creato la tabella manualmente, ma ho qualche difficoltà per la tabella utente...devo creare la voce "abilitato"...booleand non c'è, c'è solo Bool...e come predefinito non posso mettere False ma solo 0.
    Come mai?

  5. #5
    Un po' di elasticità ragazzi! Anche chi non conosce C può pensare che fare un campo tinyint, con valori 0 e 1, o fare un campo Boolean (che non c'è in MySQL ma in altri DB) con True e False, è la stessa cosa.
    Si può anche fare un campo Char con "T" o "F" oppure, a mio avviso, meglio di tutti per MySQL, fare un campo ENUM('SI','NO'), che è molto in linea, dato che hai una tabella con nomi in italiano (leggi campo "abilitato" "SI", o "abilitato" "NO", capisci subito cosa si intende)

  6. #6
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Capito...
    ma allora come mai l'inserimento mi da problema? Mi dici che la chiave primaria già esiste anche quando ne metto una nuova..
    Questo accade solo quando immetto il campo con valore predefinito... :S

    Codice PHP:
    $a mysql_query("INSERT INTO utentibase values (\"$_POST[user]\", md5(\"$_POST[pass]\"),\"$_POST[tipologia]\", \"$_POST[nome]\", \"$_POST[cognome]\", \"$_POST[cf]\", \"$_POST[eta]\", \"$_POST[indirizzo]\", \"$_POST[cap]\", \"$_POST[citta]\", \"$_POST[provincia]\", \"$_POST[telefono]\", \"$_POST[email]\")")or print ("<script> alert('User ID e/o E-mail presenti!') </script>"); 

  7. #7
    domanda, e come gli dici che il primo campo è l'username e non l'id? E poi, il campo username è settato come unique, sennò sai che bello quando ci si trova con due utenti con lo stesso username.

  8. #8
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Sicuramente, l'user e' settato come parola chiave, l'email come campo univoco.
    I campi sono in ordine per come li ho indicate, il campo "abilitato" e' l'ultimo della tabella, intanto se inserisco i dati come sopra detto..mi vien dato errore...

  9. #9
    ma user è un varchar?

  10. #10
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    si...varchar(15)...e' un problema?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.