• User

    Problema con l'invio di un form via e-mail

    Ciao a tutti, sono abbastanza nuovo di php, sinora mi sono dato solo all'editazione, mai alla creazione di una pagina in questo formato, ma ora sto cominciando a creare e mi sono imbattuto in questo problema:

    Ho creato un semplice form, in stile registrazione utente, con pulsante che mi invia una mail con i dati che sono stati inseriti, solo che la mail mi fa ricevere solo lo username.

    E la mail arriva doppia...

    Esempio: Mail al mio indirizzo, con oggetto "nuova registrazione" e corpo:
    user = Pincopallo

    ...e basta...

    il codice è questo (prendete come validi i nomi dentro i POST, sono esatti li ho controllati)

    [php]<?php

    $mail = "la mia mail";
    $oggetto ="nuova registrazione";
    $testo = "user = ".$_POST["username"];
    "psw = ".$_POST["password"];
    "nome = ".$_POST["nome"];
    "cap = ".$_POST["cap"];
    "citta = ".$_POST["city"];
    "email = ".$_POST["email"];
    "provincia = ".$_POST["provincia"];
    "nazione = ".$_POST["nazione"];
    "indirizzo = ".$_POST["indirizzo"];
    "telefono = ".$_POST["telefono"];

    mail($mail, $oggetto, $testo);
    if(@mail($mail, $oggetto, $testo)) {

    echo "La mail e' stata inoltrata con successo.";

    } else {

    echo "Si sono verificati dei problemi nell'invio della mail.";

    }

    ?>[/php]

    Qualcuno mi sa dire qual'è il problema?

    I punti ammetto che li ho messi piuttosto a caso, essendo, come ho scritto sopra, abbastanza un neofita, e non avendone ancora perfettamente compreso l'utilizzo.

    Ringrazio in anticipo chi abbia la pazienza di aiutarmi!


  • User Attivo

    Prova così:

    [PHP]<?php

    $mail = "la mia mail";
    $oggetto .="nuova registrazione";
    $testo .= "user = ".$_POST["username"]."\n";
    $testo .="psw = ".$_POST["password"]."\n";
    $testo .="nome = ".$_POST["nome"]."\n";
    $testo .="cap = ".$_POST["cap"]."\n";
    $testo .="citta = ".$_POST["city"]."\n";
    $testo .="email = ".$_POST["email"]."\n";
    $testo .="provincia = ".$_POST["provincia"]."\n";
    $testo .="nazione = ".$_POST["nazione"]."\n";
    $testo .="indirizzo = ".$_POST["indirizzo"]."\n";
    $testo .="telefono = ".$_POST["telefono"]."\n";

    mail($mail, $oggetto, $testo);
    if(@mail($mail, $oggetto, $testo)) {

    echo "La mail e' stata inoltrata con successo.";

    } else {

    echo "Si sono verificati dei problemi nell'invio della mail.";

    }

    ?> [/PHP]


  • User

    [...]

    Mi dà questo errore:

    Parse error: syntax error, unexpected T_CONCAT_EQUAL in livereg.php on line 5 (livereg.php è la pagina interessata)


  • User Attivo

    Scusa, errore mio..

    [PHP]$mail = "la mia mail";
    $oggetto ="nuova registrazione";
    $testo = "user = ".$_POST['username']."\n";
    $testo .="psw = ".$_POST['password']."\n";
    $testo .="nome = ".$_POST['nome']."\n";
    $testo .="cap = ".$_POST['cap']."\n";
    $testo .="citta = ".$_POST['city']."\n";
    $testo .="email = ".$_POST['email']."\n";
    $testo .="provincia = ".$_POST['provincia']."\n";
    $testo .="nazione = ".$_POST['nazione']."\n";
    $testo .="indirizzo = ".$_POST['indirizzo']."\n";
    $testo .="telefono = ".$_POST['telefono']."\n";[/PHP]

    E poi, ecco perchè ti arriva due volte:

    Sostituisci questo

    [PHP]mail($mail, $oggetto, $testo);
    if(@mail($mail, $oggetto, $testo)) {

    echo "La mail e' stata inoltrata con successo.";

    } else {

    echo "Si sono verificati dei problemi nell'invio della mail.";

    }[/PHP]

    Con questo:

    [PHP]if(@mail($mail, $oggetto, $testo)) {

    echo "La mail e' stata inoltrata con successo.";

    } else {

    echo "Si sono verificati dei problemi nell'invio della mail.";

    }
    [/PHP]

    Eccoti il codice finale:

    [PHP]<?php

    $mail = "la mia mail";
    $oggetto ="nuova registrazione";
    $testo = "user = ".$_POST['username']."\n";
    $testo .="psw = ".$_POST['password']."\n";
    $testo .="nome = ".$_POST['nome']."\n";
    $testo .="cap = ".$_POST['cap']."\n";
    $testo .="citta = ".$_POST['city']."\n";
    $testo .="email = ".$_POST['email']."\n";
    $testo .="provincia = ".$_POST['provincia']."\n";
    $testo .="nazione = ".$_POST['nazione']."\n";
    $testo .="indirizzo = ".$_POST['indirizzo']."\n";
    $testo .="telefono = ".$_POST['telefono']."\n";

    if(@mail($mail, $oggetto, $testo)) {

    echo "La mail e' stata inoltrata con successo.";

    } else {

    echo "Si sono verificati dei problemi nell'invio della mail.";

    }
    ?>[/PHP]


  • User

    Argh, ora non dà più errore, ma nell'iterazione mi ritorna "ci sono stati problemi nell'invio della mail" e forzandolo la mail non viene comunque inviata...


  • User Attivo

    Prova a sostituire [php]@mail[/php] con [php]mail[/php]