Visualizzazione risultati 1 fino 3 di 3

Discussione: mio form 'contatti' NON invia più email ad account con @gmail.com e yahoo.com

  1. #1
    Guest

    Thumbs down mio form 'contatti' NON invia più email ad account con @gmail.com e yahoo.com

    Ciao,

    Mi sono accorto che all'improvviso il mio form "Contatti" dal mio sito qui su altervista.org non invia email ad utenti che vorrebbero comunicare con me.

    Infatti un mio collega mi ha fatto presente a voce la cosa, dopo che inutilmente aveva tentato di contattarmi per un progetto tramite il mio modulo sul mio sito, con un suo account su @gmail.com ed un altro che ha su @yahoo.com

    Dico subito che nello spam accedendo via browser ai suoi due account NON c'era nulla!

    Allora ho provato io a fingermi un utente del mio sito e ho inserito i dati provando prima anch'io con un account che ho su @gmail.com e poi con un altro che ho su @yahoo@com ma nulla: nello spam accedendo via browser nei due account NON c'era assolutamente nulla.



    Siccome su una tabella del mio db registro appunto i dati di chi vuole contattarmi, vedo infatti qui sia i tentativi con il nome e email e il contenuto dei suoi messaggi (i campi che ho reso obbligatori) fatti dal mio collega, che i miei.

    In passato invece tutti gli utenti e pure io stesso mi contattavano benissimo sia da @gmail.com che da @yahoo.com

    Non ho cambiato nulla nello script PHP che qui sotto indico ed è in semplice text/plain.

    Infatti per il servizio di newsletter mi affido invece alla API di Mailchimp che ho integrato perfettamente con il mio sito, ed invia email in HTML in modo perfetto.


    Ecco una parte del codice:
    Codice PHP:
    <?php

    // includo il file con le impostazioni per i contatti
    require_once 'settings_contatti.php';

    // inzio i controlli sui dati immessi dall'utente
    if ( isset($_POST['submit']) )
    {
    foreach (
    $_POST as $key => $value)
    {


    // elimino eventuali spazi aggiuntivi con trim()
    $temp = trim($value);

    // se è richiesta ma vuota aggiungila all'array missing
    if ( !strlen($temp) && in_array($key, $required) )
    {
    array_push($missing, $key);
    }

    // se il campo è aspettato, setta la variabile associata
    else if ( in_array($key, $expected) )
    {

    ${
    $key} = strip_tags($temp);
    /* in questo caso creo:
    $nome, $email, $provincia, $messaggio, $validate_token ed elimino con la funzione strip_tags() tutti i tag HTML e PHP immessi erroneamente dall'utente nei vari campi del form. */
    }
    }


    /**** ESEGUO QUI LA VALIDAZIONE PER IL CAPTCHA ****/

    try
    {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Eseguo la validazione
    $stmt = $pdo->prepare("SELECT * FROM validation WHERE url_key = ? AND expire_date > NOW()");

    $stmt->execute(array($_POST['token']));

    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    }
    catch (
    PDOException $e)
    {
    echo
    "Error!: " . $e->getMessage() . "<br />";
    die();
    }

    /*** FINE VALIDAZIONE PER IL CAPTCHA ***/


    /* CONTROLLI: VERIFICO 3 CONDIZIONI
    PRIMA DI PROCEDERE CON INVIO EMAIl E DATI NEL DB */

    /*
    1) Se l'array $missing è vuoto, vuol dire che sono stati inseriti i valori
    obbligatori, qui $name, $email, $messaggio, $validate_token
    2) Se l'indirizzo email inserito è corretto, cosa che controllo tramite
    la funzione filter_var(), con il filtro FILTER_VALIDATE_EMAIL
    3) Se la stringa del captcha corrisponde a quella sul db,
    SOLO se tutte queste si verificano, procedo con l'inserimento dello username nel db
    */


    if ( empty($missing) && filter_var($email, FILTER_VALIDATE_EMAIL) && $row && ($row['captcha'] == $_POST['validate_token']) )
    {

    /* Costruisco le email da inviare, riportando tutti i vari campi;
    Invio 2 email: una la devo ricevere io per rispondere all'utente, ed un'altra all'utente stesso per fargli sapere che tutto è andato ok, ed ha compilato correttamente il form. */


    //variabili create nel passag. precedente
    $message = "Ciao, $nome\n\n";
    $message .= "Ecco il testo del messaggio che mi hai inviato:\n\n";
    $message .= "Messaggio:\n $messaggio\n\n";
    $message .= "Appena posso ti contatterò al tuo email qui sotto indicato:\n\n";
    $message .= "$email\n\n";

    try
    {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->prepare("SELECT nome_provincia FROM province WHERE id_pro = ?");

    $stmt->execute(array($_POST['provincia']));

    $row_provincia = $stmt->fetch(PDO::FETCH_ASSOC);
    }
    catch (
    PDOException $e)
    {
    echo
    "Error!: " . $e->getMessage() . "<br />";
    die();
    }

    $message .= "La tua provincia è: " . ( !isset($_POST['provincia']) || !is_numeric($_POST['provincia']) ? 'nessuna provincia indicata' : $row_provincia['nome_provincia'] ) . "\n\n";
    $message .= "Grazie e a presto. Ciao.";

    //limita la lunghezza a 70 caratteri per la compatibilità
    $message = wordwrap($message, 70);

    //invio un'email all'utente per avvisarlo che mi ha inviato il messaggio
    $to = $email;

    //oggetto dell'email inviata
    $subject = 'Invio messaggio per info/assistenza/preventivi ecc.';

    // gli headers
    /* ATT: per ottenere nella email che si invia all'utente le lettere accentate tipiche dell'italiano come città, iguazzù, cioè ecc. e NON delle storpiature bisogna indicare, nel modo che segue, SIA il charset=utf-8 SIA il Content-Transfer-Encoding: 7bit */
    $headers = 'Content-Type: text/plain; charset=utf-8' . "\r\n";
    $headers .= 'Content-Transfer-Encoding: 7bit' . "\r\n";
    $headers .= 'From: admin@yahoo.com' . "\r\n";
    $headers .= 'Reply-To: noreply' . "\r\n";
    $headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";

    // qui mando una copia carbone nascosta (per nascondere all'utente il // mio email) anche a me stesso, perché devo rispondergli ovviamente
    $headers .= 'Bcc: mio_nome@gmail.com' . "\r\n";

    //invia le 2 email
    $mail_sent = mail($to, $subject, $message, $headers);
    $info_message = '<p class="info">' . $info_mail_sent . '</p>';
    if (
    $mail_sent )
    {
    // Se tutto è ok l'array $missing - quello per i // campi obbligatori - non serve più quindi lo svuoto.

    // ed analogamente svuoto anche l'array $expected -
    // quello per i campi NON obbligatori -
    unset($missing);
    unset(
    $expected);
    ecc..
    Ultima modifica di newbielinux : 23-05-2014 alle ore 22.31.16

  2. #2
    Guest

    Predefinito

    Il problema si presenta anche con la pagina della registrazione.

    Qualche admin di altervista.org ha un'idea del perché succeda questo?
    Grazie.
    Ecco comunque il link per la mia pagina contatti:

    http://newbielinux.altervista.org/contatti.php

    Sinceramente non capisco.

  3. #3
    L'avatar di Gianluca
    Gianluca non è connesso Amministratore
    Data registrazione
    15-02-2001
    Messaggi
    18,035

    Predefinito

    Prova a usare questo script e vedi se capita la stessa cosa: http://forum.it.altervista.org/how/1...prio-sito.html
    Gianluca

Regole di scrittura

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