Visualizzazione risultati 1 fino 4 di 4

Discussione: Codice di conferma non inviato e problema dati in SQL

  1. #1
    Guest

    Predefinito Codice di conferma non inviato e problema dati in SQL

    Salve a tutti! Ho da poco creato questo script di registrazione che permette di registrarsi, inviare l'email di conferma, cliccare sul link e finire la registrazione!

    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>'
    ;
    ?>
    <?php



    } else {



    $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','$password','$email'");

    if(
    $inviautentitemp){

    $to=$email;
    $subject="Conferma la registrazione";
    $header="Da: Admin";
    $message="Ecco il tuo codice di attivazione \r\n";
    $message.="Clicca sul link per confermare la registrazione \r\n";
    $message.="$http://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'];



    $passwordcript = md5($password);

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

    if(
    $sqlconfermauser){
    echo
    "Il tuo account è attivato";
    $sqleliminadati = mysql_query("DELETE FROM Utenti_tmp WHERE codiceconferma = '{$codiceconferma}' username = '{$username}' password = '{$password}' AND email = '{$email}'");

    } else {

    echo
    "Errore, dati non inviati";

    }
    }
    }
    }

    ?>
    Il problema è che non mi invia l'email. Dove ho sbagliato? Sapreste correggermi? Vi ringrazio!!

    [DS] Usa il tag {php} e non il grassetto per inserire codice, si legge meglio... e non esce un post kilometrico
    Ultima modifica di dementialsite : 13-11-2012 alle ore 13.29.25

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Nel blocco di invio di e-mail ci sono diversi errori:

    - [il principale] hai dimenticato una parentesi chiusa nella query in cui esegui l'inserimento del codice di conferma
    - negli header devi usare la sintassi standard, quindi se vuoi specificare un indirizzo del mittente (anche fasullo) devi usare "From: ..." e non "Da: ..."
    - occhio anche al messaggio con il link, la terza riga inizia con $ e quindi PHP tenterà di inserire il valore di una variabile $http che non esiste

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Ho fatto come hai detto tu, ma l'email non arriva lo stesso! Il codice è ora così:

    $inviautentitemp = mysql_query("INSERT INTO Utenti_tmp (Codiceconferma, Username, Password, Email) VALUES ('$codiceconferma','$username','$password','$email ')");

    if($inviautentitemp){

    $to=$Email;
    $subject="Conferma la registrazione:";
    $header="From: http://italianwebhack.altervista.org/register.php";
    $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);

    Prima diceva che non mi inviava l'email, ora dice che me l'ha inviata.. Ma ancora non arriva.. è normale?

  4. #4
    Guest

    Predefinito

    $header="From: http://italianwebhack.altervista.org/register.php"; è sbagliato. Il "from" deve essere un indirizzo email, non un URL

Regole di scrittura

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