Visualizzazione risultati 1 fino 2 di 2

Discussione: [php] Codice di conferma registrazione non inviato

  1. #1
    Guest

    Predefinito [php] Codice di conferma registrazione non inviato

    Salve a tutti. Come mai, quando eseguo la registrazione, mi arriva l' email di conferma, ma non funziona? Dove sbaglio? ecco il codice:

    Codice PHP:
    <?php

    if(!isset($_GET['passkey'])){

    if(!isset(
    $_POST['invia'])){
    echo
    '<form method="post" action="#" id="formregistrazione">

    <ul>

    <li><lable for="username">Username:</lable>
    <input type="text" name="username" id="username">
    </li>

    <li><lable for="password1">Password:</lable>
    <input type="password" name="password1" id="password1">
    </li>

    <li><lable for="password2">Ripeti password:</lable>
    <input type="password" name="password2" id="password2">
    </li>


    <li><lable for="email">Email:</lable>
    <input type="text" name="email" id="email">
    </li>

    </ul>

    <input type="submit" name="invia" id="registrati" value="Registrati">

    </form>'
    ;
    ?>
    <?php



    } else {

    include
    "connect.php";

    $codiceconferma = md5(uniqid(rand()));


    $username = mysql_real_escape_string($_POST['username']);
    $password1 = mysql_real_escape_string($_POST['password1']);
    $password2 = mysql_real_escape_string($_POST['password2']);
    $email = mysql_real_escape_string($_POST['email']);


    if(
    $username == ""|| $email == ""){
    echo
    "Devi riempire tutti i campi";
    }elseif(
    $password1 == ""|| $password2 == ""){
    echo
    "Devi riempire tutti i campi";
    }elseif(
    $password1 != $password2){
    echo
    "Le password devono coincidere";
    } else{

    $recuperausermail = mysql_query("SELECT id FROM utenti WHERE username = '$username' AND email = '$email'");
    $contausermail = mysql_num_rows($recuperausermail);


    if(
    $contausermail > 0){

    echo
    "Nome utente o email già disponibili";

    } else {

    $inviautentitemp = mysql_query("INSERT INTO utenti_temp (codiceconferma, username, password, email) VALUES ('$codiceconferma','$username','$password2','$email')");

    if(
    $inviautentitemp){

    $to=$email;
    $subject="Conferma la registrazione";
    $header="From: die23@hotmail.it";
    $message="Ecco il tuo codice di attivazione \r\n";
    $message.="Clicca sul link per confermare la registrazione \r\n";
    $message.="http://italianwebhack.altervista.org/index.php?passkey=$codiceconferma";

    $sentmail=mail($to, $subject, $message, $header);



    }

    if(
    $sentmail){

    echo
    "Per completare la registrazione, clicca sul link che ti abbiamo inviato per email";
    } else{

    echo
    "Errore: Non ti è stato inviato nessun link di attivazione account";

    }
    }
    }
    }


    } else{

    $passkey = ($_GET['passkey']);

    $sqlrecuperauser = mysql_query("SELECT * FROM utenti_temp WHERE codiceconferma = '$codiceconferma' username = '$username' password = '$password2' email = '$email'");

    $risultatouser = mysql_query($sqlrecuperauser);

    if(
    $risultatouser){

    $contauser = mysql_num_rows($risultatouser);

    if(
    $contauser == 1){

    $rows = mysql_fetch_array($contauser);
    $username = $rows['username'];
    $password2 = $rows['password2'];
    $email = $rows['email'];

    $sqlconfermauser = mysql_query("INSERT INTO utenti (username, password, email) VALUES ('$username','$password2','$email')");

    if(
    $sqlconfermauser){

    echo
    "Il tuo account è attivato";

    } else {

    echo
    "Errore, dati non inviati";

    }
    }
    }
    }

    ?>
    Grazie in anticipo:)

  2. #2
    L'avatar di trylab
    trylab non è connesso Neofita
    Data registrazione
    02-09-2012
    Messaggi
    24

    Predefinito

    Ciao...credo di aver capito il tuo problema, se guardiamo il blocco di codice eseguito in caso di tentativo di conferma tramite email vengono eseguite solo queste istruzioni:

    Codice PHP:

    $passkey
    = ($_GET['passkey']);

    $sqlrecuperauser = mysql_query("SELECT * FROM utenti_temp WHERE codiceconferma = '$codiceconferma' username = '$username' password = '$password2' email = '$email'");

    $risultatouser = mysql_query($sqlrecuperauser);

    if(
    $risultatouser){

    $contauser = mysql_num_rows($risultatouser);

    if(
    $contauser == 1){

    $rows = mysql_fetch_array($contauser);
    $username = $rows['username'];
    $password2 = $rows['password2'];
    $email = $rows['email'];

    $sqlconfermauser = mysql_query("INSERT INTO utenti (username, password, email) VALUES ('$username','$password2','$email')");

    if(
    $sqlconfermauser){

    echo
    "Il tuo account è attivato";

    } else {

    echo
    "Errore, dati non inviati";

    }
    }
    }
    Nella prima interrogazione al db richiami delle variabili $username, $password2, $codiceconferma e $email...queste variabili a quanto vedo non sono state ancora inizializzate...o almeno nel codice che hai postato non lo fai!.
    Per sicurezza prova a guardare il risultato della prima query...se è giusto quello che ti ho detto dovrebbe esserci qualche sorpresa.

Regole di scrittura

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