Visualizzazione risultati 1 fino 4 di 4

Discussione: Completare iscrizione con link attivazione

  1. #1
    Guest

    Predefinito Completare iscrizione con link attivazione

    Salve ragazzi,
    devo fare un sito in cui devo consentire agli utenti di registrarsi compilando un primo form di registrazione. Successivamente il sistema invierà all’indirizzo mail indicato una mail di invito in cui è indicata la URL a cui accedere per poter completare la registrazione. Il completamento della registrazione avviene nella url indicata nella mail di invito, in cui l’utente fornisce un nome_utente e una password.
    Ho svolto in questa maniera qui

    registrazione.php


    Codice PHP:
    <?php

    ob_start
    ();
    // includo il file di connessione al database
    include ('configurazione.php');
    ?>
    <html>

    <div class="row">

    <div class="col-md-4 col-md-offset-4" background-color="green" >
    <!-- Titolo -->
    <h1 class="text-center" >Registrazione</h1><br>

    <h5 class="text-center" >File contrassegnati da asterisco sono obbligatori</h5><br>


    <form action='?inviodati=ok' method='POST'>


    <!--- form -->


    <div class="form-group">
    <label>Nome*</label>
    <input class="form-control" type='text' name='nome' class="inputbox select validate[required] " value="<?=(isset($_POST['nome']) ? $_POST['nome'] : '')?>"></input>
    </div>

    <div class="form-group">
    <label>Cognome*</label>
    <input class="form-control" type='text' name='cognome' class="inputbox select validate[required] " value="<?=(isset($_POST['cognome']) ? $_POST['cognome'] : '')?>"></input>
    </div>

    <div class="form-group">
    <label>Ruolo*</label>
    <select class="form-control" name="ruolo">
    <option selected>Docente</option>
    <option>Studente</option>
    </select>
    </div>

    <div class="form-group">
    <label>Email*</label>
    <input class="form-control" type='text' name='mail' value="<?=(isset($_POST['mail']) ? $_POST['mail'] : '')?>"></input>
    </div>

    <br>
    <br>
    <div>
    <button type="submit" class="btn btn-primary btn-lg btn-block" value='Registrati' >Submit</button>
    </form>

    </div>
    </div>

    </html>
    <?php
    //funzione per il classico check del formato mail
    function chkEmail($mail)
    {
    // elimino spazi, "a capo" e altro alle estremità della stringa
    $mail = trim($mail);

    // se la stringa è vuota sicuramente non è una mail
    if(!$mail) {
    return
    false;
    }

    // controllo che ci sia una sola @ nella stringa
    $num_at = count(explode( '@', $mail )) - 1;
    if(
    $num_at != 1) {
    return
    false;
    }

    // controllo la presenza di ulteriori caratteri "pericolosi":
    if(strpos($mail,';') || strpos($mail,',') || strpos($mail,' ')) {
    return
    false;
    }

    // la stringa rispetta il formato classico di una mail?
    if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $mail)) {
    return
    false;
    }
    return
    true;
    }

    //controllo il formato della mail se è studente
    function chkEmailStud($mail)
    {

    if (
    strstr($mail, "@studenti.uniba.it")=="@studenti.uniba.it")
    {

    return
    true;
    }
    echo
    "Utilizza il formato ''iniziale_nome.cognome@studenti.uniba.it'' per gli studenti. ";
    return
    false;
    }

    //controllo il formato della mail se è docente
    function chkEmailDoc($mail)
    {

    if (
    strstr($mail, "@uniba.it") == "@uniba.it")
    {
    return
    true;
    }
    echo
    " Utilizza il formato ''nome.cognome@uniba.it'' per i docenti. ";
    return
    false;
    }


    // controllo che il form sia stato inviato
    if ( isset($_GET['inviodati']) && $_GET['inviodati'] == "ok") {



    // recupero i dati inviati con il form
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $ruolo = $_POST['ruolo'];
    $mail = $_POST['mail'];


    // controllo che i campi siano stati tutti compilati
    if ($nome == TRUE && $cognome == TRUE && $ruolo == TRUE && $mail == TRUE ) {



    // controllo se il campo mail è stato scritto in maniera errata
    if(chkEmail($mail)) {
    $isstudente = strstr($ruolo,'Studente');
    $isdocente = strstr($ruolo,'Docente');

    if(
    $isstudente == TRUE){
    $check = chkEmailStud($mail);
    } else

    if(
    $isdocente == TRUE){
    $check = chkEmailDoc($mail);}

    if(
    $check){

    // controllo se l'email è presente già nel database
    $sql = mysql_query("SELECT * FROM utenti WHERE mail = '$mail'") or die (mysql_error());
    $num_rows = mysql_num_rows($sql);
    if (
    $num_rows == 0 ) {

    //inserisco i dati nel database
    mysql_query("INSERT INTO utenti
    (nome, cognome, ruolo, mail )
    VALUES
    ('
    $nome','$cognome','$ruolo', '$mail')") OR DIE(mysql_error());



    // e invio una mail con la riuscita registazione
    define("EOL", "\r\n");
    $header = "MIME-Version: 1.0" . EOL;
    $header .= "Content-Type: text/html" . EOL;
    $header .= "From: Consegna Elettronica <maurizio.diserio@yahoo.it>\n";
    $header .="X-Priority: 2\r\n";
    $destinatario = $mail;
    $object = "Registrazione conferma elettronica";
    $message = "

    Congratulazioni! La tua registrazione è andata a buon fine. <br>
    Per confemare vai alla pagina http://consegnaelettronica.altervista.org/Consegnaelettronica/paginacontinuaregistrazione.php?user=
    $mail;
    <br>Da questo indirizzo potrai completare la tua registrazione inserendo username e password che utilizzerai per il login.<br>
    Ecco un riepilogo dei tuoi dati: <br>

    <br>Questo il nome:
    $nome<br>
    <br>Questo il cognome:
    $cognome<br>
    <br>Questo il ruolo:
    $ruolo<br>
    <br>Questa la mail:
    $mail<br>

    "
    ;
    mail($destinatario, $object,$message, $header);

    header("location: paginaconfermaregistrazione.php");




    } else{

    echo
    'Email è già in uso!';

    }

    } else {

    echo
    "Mail non vailda!\n";

    }

    }else{

    echo
    "Questa mail non e' consentita.";

    }

    } else {

    echo
    "I campi contrassegnati sono obbligatori";

    }
    }

    ?>
    paginacontinuaregistrazione.php


    Codice PHP:
    <?php
    ob_start
    ();
    // includo il file di connessione al database
    include ('configurazione.php');

    ?>
    <html>
    <title>Continua registrazione</title>


    <span class="Stile147">Adesso scegli un username e una password</span>

    <form action='?inviodati=ok' method='POST'>

    <p><span class="Stile147">Account</span></p>
    <table width="700" border="1" cellpadding="10" cellspacing="10" bordercolor="#CCCCCC">
    <tr>
    <td width="50%" bordercolor="#CCCCCC" bgcolor="#EAF1F5"><span class="Stile145"><b>Username</b></span><br>
    <input type='text' name='username' value="<?=(isset($_POST['username']) ? $_POST['username'] : '')?>"></td>

    </tr>
    <tr>
    <td colspan="2" bordercolor="#CCCCCC"><span class="Stile145"><b>Password</b></span><br>
    <input type='password' name='password'></td>
    </tr>
    <tr>
    <td colspan="2" bgcolor="#EAF1F5"><span class="Stile145"><b>Confirm Password</b></span><br>
    <input type='password' name='confirm_password'></td>
    </tr>
    </table>
    <p>
    <input type='submit' value='Submit'>
    <br>
    </p>
    </form>
    <?php
    $mail
    = $_GET['user'];

    // controllo che il form sia stato inviato
    if ( isset($_GET['inviodati']) && $_GET['inviodati'] == "ok") {



    // recupero i dati inviati con il form
    $username = $_POST['username'];
    $password = $_POST['password'];
    $confirm_password = $_POST['confirm_password'];


    // controllo che i campi siano stati tutti compilati
    if ($username == TRUE && $password == TRUE && $confirm_password == TRUE ) {



    // controllo se l'username è presente già nel database
    $sql = mysql_query("SELECT * FROM utenti WHERE username = '$username'") or die (mysql_error());
    $num_rows = mysql_num_rows($sql);
    if (
    $num_rows == 0 ) {



    //controllo se la password abbia più di 6 caratteri
    if (strlen($password) >= 6)
    {


    //ora controllo se le passw inserite siano identiche
    if ( $password == $confirm_password ) {

    $pass_md5 = md5($password);


    //inserisco i dati nel database
    //mysql_query('UPDATE utenti SET username = '$username', password='$pass_md5' WHERE mail = '$mail'') OR DIE(mysql_error());
    mysql_query("UPDATE utenti SET username ='$username', password ='$pass_md5' WHERE mail = '$mail'")OR DIE(mysql_error());


    //header("location: paginacompletaregistrazione.php");


    } else {

    echo
    "Passwords do not match";

    }

    }else { echo
    "Password is too short. It must be at least 6 characters long.";

    }


    } else{

    echo
    'Username address already in use';

    }



    } else {

    echo
    "Marked fields are mandatory";

    }
    }

    ?>
    Va tutto bene, tranne l'update dei dati. Ovvero nella seconda parte della registrazione, quando inserisco username e password e vado a fare l'update nel database, la query va a buon fine ma non viene effettuato nessun aggiornamento dei campi username e password. (ho provato a stampare anche la $mail = $_GET['user']; e mi esce effettivamente la mail dal quale si arriva). Come è possibile? Vi prego aiutatemi, sto perdendo la testa.

  2. #2
    Guest

    Predefinito

    Dimenticavo...questo lo script database:

    create database sito

    use sito;


    CREATE TABLE IF NOT EXISTS `utenti` (
    `nome` varchar(45) NOT NULL,
    `cognome` varchar(60) NOT NULL,
    `ruolo` varchar(20) NOT NULL,
    `mail` varchar(60) NOT NULL,
    `username` varchar(45) NOT NULL,
    `password` varchar(45) NOT NULL,
    `isAmministratore` bit(11) DEFAULT b'0',
    PRIMARY KEY (`mail`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

  3. #3
    Guest

    Predefinito

    nessuna risposta?

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Prova a far stampare la query completa ad esempio con una echo. Poi vai su phpMyAdmin e prova ad eseguirla da lì incollandola. Vedi quindi se ti da errore. Quella UPDATE mi sembra sintatticamente corretta, ma potrei non averla analizzata bene!

    Ciao!

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •