• User Newbie

    Funzione mail()

    Di seguito il semplicissimo script di cui necessito per fare l'attivazione di un account dopo la registrazione ad un sito.
    Macchina con Php5 (Hosting Aruba), premetto che secondo me l'errore sta nella variabile $headers, perchè cambiando soprattutto la parte 'from' e 'reply to' (con testo più corto) funziona tutto, ma non mi da un senso di sicurezza.
    In ogni caso il controllo che faccio con la variabile $outmail da sempre esito positivo, ma in moltissimi casi ancora aspetto la mail... ogni tanto invece si degna di fare quello che ho chiesto e con mia somma grazia invia la mail...
    Ora, sarete daccordo con me che non posso SPERARE che invii la mail :smile5:
    Spero che qualcuno sappia aiutarmi... :arrabbiato:


    $cfiscale = "Ciao";

    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "From: Postmaster - Briocomania [email protected]\r\n";
    $headers .= "Reply-To: Postmaster - Briocomania [email protected]";

    $testo = "Per l'attivazione dell'accunt utilizzare il seguente link:<br />
    <a href=auth.php?aut=".crypt($cfiscale)."'>auth.php?aut=".crypt($cfiscale)."</a>";
    $mailto = "info@posta";
    $outmail = mail($mailto, "Prova", $testo, $headers);

    if ($outmail == 1) {
    echo "tutto ok";
    }
    else
    {
    echo "errore";
    }

    P.S. Il link inserito nel testo della mail è in forma assoluta e nei casi in cui la mail viene spedita funziona perfettamente (non ho potuto metterlo perchè non sono un utente plus) :bho:


  • User Attivo

    invece del codice fiscale cryptato ti converrebbe mettere qualcosa come
    $crypt = md5(uniqid(rand(), true));


  • User Newbie

    Sono in sintonia con te... ma il problema resta... e le mail vengono inviate o non inviate senza una logica precisa.

    In pratica il problema non è quello...
    Ma vorrei scoprire come mai il webserver non processa l'istruzione anche se non genera errore, e cosa ancora più strana, ogni tanto si ricorda di mandarla!
    MISTERO


  • User Attivo

    Dunque
    Ripartiamo dal principio.
    In questo sistema di registrazione, ti appoggi ad un DataBase
    In questo database sono necessari questi campi
    Username
    Password
    mail
    codicefiscale
    token
    attivo(impostato a false)

    Una volta registrato, prima di inviare la E-Mail, scrivi questa righe di codice
    [php]

    $token = md5(uniqid(rand(), true));
    $richiesta="INSERT INTO miatabella(username,password,mail,codicefiscale,token,attivo) VALUES ('$user','$pass','$mail','$codfiscale','$token',FALSE)";
    $risultato = mysql_query($richiesta);
    if($risultato)
    {
    $header .="Da:<blabla>";
    $header .="Mail:[email protected]";
    $header .= "MIME-Version: 1.0\n";
    $header.="Content-Type:text/html;charset="iso-8859-1"\n";
    $header .= "Content-Transfer-Encoding: 7bit\n\n";
    $mess="<a href="sito.it/attiva_user.php?token=$token">clicca qui per attivarti</a>";
    mail($mail, "nome", $mess, $header);
    echo "Controlla la tua E-Mail per attivarti!";
    }
    else
    {
    echo"errore";
    }
    [/php]attiva_user.php

    <?php
    $token_get=trim($_GET['token']);
    /qui ti connetti al database e confronti se token_get esiste nel db con mysql_num_rows, dopodichè, con mysql_fetch_array imposti il campo attivo a true/
    ?>

    Non ho controllato il codice, potrebbero esserci errori