Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema invio mail di conferma

    Ho questo script di registrazione che funziona benissimo, solo ora non riesco a capire il meccanismo di invio della conferma email, in altre parole, non invia la mail coi dati, non capisco l'errore, posto lo script che uso:
    <!DOCTYPE HTML>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <title>Documento senza titolo</title>

    </head>



    <body>



    <?php

    include ("Config.php");





    //This code runs if the form has been submitted

    if (isset($_POST['submit'])) {



    //This makes sure they did not leave any fields blank

    if (!$_POST['username'] | !$_POST['pass'] | !$_POST['pass2'] | !$_POST['mail'] ) {

    die('Completare TUTTI i campi, Grazie.');

    }



    // checks if the username is in use

    if (!get_magic_quotes_gpc()) {

    $_POST['username'] = addslashes($_POST['username']);

    }

    $usercheck = $_POST['username'];

    $check = mysql_query("SELECT username FROM log_user WHERE username = '$usercheck'")

    or die(mysql_error());

    $check2 = mysql_num_rows($check);



    //if the name exists it gives an error

    if ($check2 != 0) {

    die(" ATTENZIONE, L' username ".$_POST['username']." e' gia'* in uso ");

    }







    // checks if the mail is in use

    if (!get_magic_quotes_gpc()) {

    $_POST['mail'] = addslashes($_POST['mail']);

    }

    $mailcheck = $_POST['mail'];

    $check = mysql_query("SELECT email FROM log_user WHERE email = '$mailcheck'")

    or die(mysql_error());

    $mailcheck2 = mysql_num_rows($check);



    //if the name exists it gives an error

    if ($mailcheck2 != 0) {

    die("Attenzione, L' Email ".$_POST['mail']." e' gia' in uso.");

    }





    // checks if the mail correct.

    if(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$",$_POST['mail'] )){

    die("Attenzione, L' Email ".$_POST['mail']." e' incorretta.");}











    // this makes sure both passwords entered match

    if ($_POST['pass'] != $_POST['pass2']) {

    die('Le password non corrispondono. ');

    }



    // here we encrypt the password and add slashes if needed

    $pass = $_POST['pass'];

    $_POST['pass'] = md5($_POST['pass']);

    if (!get_magic_quotes_gpc()) {

    $_POST['pass'] = addslashes($_POST['pass']);

    $_POST['username'] = addslashes($_POST['username']);

    }









    // now we insert it into the database

    $token = "testo a caso";

    $mailcr = md5($_POST['email'].$token);



    $insert = "INSERT INTO log_user (username, password, email, account)

    VALUES ('".$_POST['username']."', '".$_POST['pass']."', '".$_POST['mail']."', '".$mailcr."')";

    $add_member = mysql_query($insert);

    ?>









    <h1>Registrato con Successo!</h1>



    Grazie, si e' correttamente registrato, Confermi la registrazione con l' email che le e' stata inviata.</a>.</p>

    <?php



    }

    else

    {

    ?>





    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

    <table border="0">

    <tr><td>Username:</td><td>

    <input type="text" name="username" maxlength="60">

    </td></tr>

    <tr><td>Password:</td><td>

    <input type="password" name="pass" maxlength="10">

    </td></tr>

    <tr><td>Conferma Password:</td><td>

    <input type="password" name="pass2" maxlength="10">

    </td></tr>

    <tr><td>Email:</td><td>

    <input type="text" name="mail" maxlength="60">

    </td></tr>



    <tr><th colspan=2><input type="submit" name="submit" value="Registrati"></th></tr> </table>

    </form>









    <?php

    }

    ?>



    <?php

    // email per la conferma

    // intestazioni

    $date = time('dmy');

    $headers = "From: stefy810@hotmail.it";

    $subject = "Conferma la tua iscrizione.";

    //corpo del messaggio

    $messaggio = "Ti ringraziamo per la tua iscrizione.\n";

    $messaggio .= "La tua user è: ".$_POST['username']."\n";

    $messaggio .= "La tua password è: ".$pass."\n";

    $messaggio .= 'Per confemare vai alla pagina http://www.novitech.ignorelist.com/l...tion.php?user='.$mailcr.'&date='.$date.'';

    // invio dell'email

    @mail($_POST['mail'], stripslashes($subject),stripslashes($messaggio),$h eaders);

    ?>

    </body>

    </html>

    credo sia corretto, aver separato l'invio della mail, dal riempimento dei dati, se pur nel medesimo file...mi date un aiuto nell'invio?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Lo script lo stai provando in locale? In tal caso è normale che l'email non parta, sul tuo pc non hai un mail server e anche se lo avessi, i filtri antispam ti bloccherebbero perché di certo non è tra l'elenco dei mailserver sicuri.
    Nel php.ini imposta i dati smtp di un provider affidabile, google ad esempio. Ovviamente devi anche inserire le credenziali come username e password, dunque devi avere un account valido su gmail.

    EDIT: i vari controlli che fai con gli if non li ho guardati, non essendo indentati ed essendo il codice lungo non si capisce dove finiscano. La prossima volta usa il tag [php] per racchiudere il codice.

  3. #3
    infatti, occorre un server ftp, con serviazio mail esatto, come immaginavo...senti come potrei risolvere dunque??

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Una cosa, il codice per l'invio messo lì così viene eseguito anche la prima volta che si accede alla pagina, quindi anche se la form non è stata compilata, il che è sbagliato.
    L'email deve essere inviata solo a seguito della pressione del tasto submit, quindi devi isolare la porzione di codice con l'invio dell'email.

    Ad esempio
    Codice PHP:
    if(isset($_POST['submit']))
    {
        
    //codice per l'invio dell'email.


  5. #5
    In questo modo?? ti ringrazio della correzione...per la mail, non in locale, forse potrei usare un routing di qualche servizio di redirect..dici funzionerebbe?




    if(isset($_POST['submit']))
    {

    // email per la conferma

    // intestazioni

    $date = time('dmy');

    $headers = "From: stefy810@hotmail.it";

    $subject = "Conferma la tua iscrizione.";

    //corpo del messaggio

    $messaggio = "Ti ringraziamo per la tua iscrizione.\n";

    $messaggio .= "La tua user è: ".$_POST['username']."\n";

    $messaggio .= "La tua password è: ".$pass."\n";

    $messaggio .= 'Per confemare vai alla pagina http://www.novitech.ignorelist.com/l...tion.php?user='.$mailcr.'&date='.$date.'';

    // invio dell'email

    @mail($_POST['mail'], stripslashes($subject),stripslashes($messaggio),$h eaders);
    }

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Se lo script lo metti su un server online, loro avranno già il php impostato in modo tale che invii le email con la funzione mail(), quindi non dovresti aver bisogno di fare niente.

    Per quanto riguarda il codice, si, il controllo va messo così

  7. #7
    farò qualche prova...altrimenti credo un vaneggiamento, costruire un dominio mail personalizzato sul server...non ho idea, di cosa i filtri,google,yahoo,ecc..possano usare, per ammettere certe mail...talvolta, quando si invia, da msn, verso altri, manco passano...o vanno in poste indesiderate, quindi...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.