Visualizzazione risultati 1 fino 2 di 2

Discussione: Passkey non funzionante nella ragistrazione

  1. #1
    Guest

    Predefinito Passkey non funzionante nella ragistrazione

    Salve a tutti! Ho creato una pagina di registrazione, ma ho un problema: Ogni qual volta che mi registro, l'email viene inviata con il codice di conferma per finire la registrazione, ma il codice non funziona. Ecco la pagina:

    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="username">Username:</lable>
    <input type="text" name="username" id="username">
    </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>'
    ;

    } else {


    include
    'config.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_tmp (Codiceconferma, Username, Password, Email) VALUES ('$codiceconferma','$username','$password1','$email')");

    if(
    $inviautentitemp){

    $to=$email;
    $subject="Conferma la registrazione.";
    $header="From: [email]ysual@ymail.com[/email]";
    $message="Ecco il tuo codice di attivazione \r\n";
    $message.="Clicca sul link per confermare la registrazione \r\n";
    $message.="http://www.italianwebhack.altervista.org/register.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 = "SELECT * FROM Utenti_tmp WHERE (Codiceconferma = '{$codiceconferma}' Username = '{$username}' Password = '{$password}' AND Email = '{$email}')";
    $risultatouser = mysql_query($sqlrecuperauser);

    if(
    $risultatouser){

    $contauser = mysql_num_rows($risultatouser);

    if(
    $contauser == 1){


    $rows = mysql_fetch_array($risultatouser);
    $username = $rows['username'];
    $password = $rows['password'];
    $email = $rows['email'];





    $sqlconfermauser = "INSERT INTO Utenti (Username, Password, Email) VALUES ('{$username}','{$password}','{$email}')";

    if(
    $sqlconfermauser){

    echo
    "Il tuo account è attivato.";

    $sqleliminadati = "DELETE FROM Utenti_tmp WHERE Codiceconferma = '$codiceconferma' Username = '$username' Password = '$password' AND Email = '$email'";

    } else {

    echo
    "Il tuo account non è ancora attivo.";

    }
    }
    }
    }

    ?>
    Dovrebbe inviare i dati alla tabella Utenti e dirmi "Il tuo account è attivo", ma visto che non li invia, non posso eseguire il login e il messaggio di registrazione avvenuta non lo da. Dove ho sbagliato? Potete aggiustarmi lo script? Grazie in anticipo:)
    Ultima modifica di dreadnaut : 19-11-2012 alle ore 23.38.01 Motivo: + tag [php] per il codice, indentazione

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,259

    Predefinito

    Codice PHP:
    $passkey = $_GET['passkey'];

    $sqlrecuperauser = "SELECT * FROM Utenti_tmp WHERE (Codiceconferma = '{$codiceconferma}' Username = '{$username}' Password = '{$password}' AND Email = '{$email}')";
    Il valore è in $passkey, ma nella query inserisci $codiceconferma. Ricordarti di passarlo per mysql_real_escape_string().

    Inoltre, tutti i tag <label> sono malscritti come <lable>.

Regole di scrittura

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