Visualizzazione risultati 1 fino 15 di 15
Like Tree1Likes
  • 1 Post By alemoppo

Discussione: Mail php

  1. #1
    Guest

    Predefinito Mail php

    Ciao a tutti, vorrei aggiungere dei controlli al file php (che ho trovato in rete e modificato di conseguenza anche se a digiuno di php) di modo che i campi richiesti siano obbligatoriamente compilato e non vuoi altrimenti non viene inviata la mail. Come posso risolvere? Grazie mille. Di seguito allego il codice del form html e del fil invio.php.

    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=11" />
    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
    <meta name="description" content="xxxxxxxxxxxx">
    <meta name="robots" content="index, follow">
    <meta http-equiv="content-language" content="it">
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <meta name="viewport" content="width=device-width">
    <meta name="viewport" content="width=device-width, user-scalable=0, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" />
    
    
    <link href="../css/modulomail.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    body,td,th {
    	color: #FFFFFF;
    }
    </style>
    </head>
    
    <body>
    <form name="contact_form" method="post" action="invio.php">
    <table width="300" border="0" align="center" cellpadding="10" cellspacing="3" id="table_cliente">
      <tr>
        <td align="center">Informazioni del cliente</td>
      </tr>
    </table>
    <table width="360" height="205"border="0" align="center" cellpadding="0" cellspacing="0" id="table_cont">
      <tr>
        <td width="30" height="200" align="center"><table width="100%" border="0" cellpadding="8" cellspacing="1" id="table1">
          <tr>
            <td width="30" valign="middle">Nome</td>
            <td width="70" valign="middle"><input name="fname" type="text" placeholder="Inserisci il tuo nome"></td>
          </tr>
          <tr>
            <td valign="middle">Mail</td>
            <td valign="middle"><input name="text" type="mail" placeholder="Inserisci la tua mail"></td>
          </tr>
          <tr>
            <td valign="middle">Telefono</td>
            <td valign="middle"><input name="phone" type="text" size="10" maxlength="10"placeholder="Telefono"></td>
          </tr>
          <tr>
            <td valign="middle">Oggetto</td>
            <td valign="middle"><input name="subject" type="text" placeholder="Oggetto (es.Ordine)"></td>
          </tr>
        </table></td>
        <td width="65%" height="205"align="center"><table width="100%" border="0" cellpadding="8" cellspacing="3" id="table2">
          <tr>
            <td valign="middle">Richiesto</td>
          </tr>
          <tr>
            <td valign="middle">Richiesto</td>
          </tr>
          <tr>
            <td valign="middle">Richiesto</td>
          </tr>
          <tr>
            <td valign="middle">&nbsp;</td>
          </tr>
        </table></td>
      </tr>
    </table>
    <table width="300" border="0" align="center" cellpadding="10" cellspacing="3" id="table_mess">
      <tr>
        <td align="center">Il tuo messaggio</td>
      </tr>
    </table>
    <table width="400" border="0" align="center" cellpadding="10" cellspacing="3" id="table_messaggio">
      <tr>
        <td width="40" align="center"></td>
      </tr>
      <tr>
        <td align="center">Messaggio</td>
        <td align="center"><textarea name="message" cols="35" rows="5" placeholder="Scrivi qui il tuo messaggio"></textarea></td>
        <td align="center">Richiesto</td>
      </tr>
      <tr>
        <td align="right">&nbsp;</td>
        <td align="center"><input type="reset" name="reset" value="Reset"/> <input type="submit" name="Submit" value="Submit"></td>
        <td align="center"><img src="http://www.scriptgenerator.net/generator/html-php-contact-form-mailer-generator_files/validform.jpg" alt="HTML PHP contact form generator" width="20" height="20" /></td>
      </tr>
    </table>
    </form>
    </body>
    </html>


    Codice PHP:
    <?php session_start();
    if(isset(
    $_POST['Submit'])) {
    $youremail = 'miamail@alice.it';
    $fromsubject = 'Mail proveniente dal sito mio';
    $title = $_POST['title'];
    $fname = $_POST['fname'];
    $mail = $_POST['mail'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
    $to = $youremail;
    $mailsubject = 'Masage recived from'.$fromsubject.' Contact Page';
    $body = $fromsubject.'

    La persona che ti ha contattato è '
    .$fname.'
    Telefono: '
    .$phone.'
    E-mail: '
    .$mail.'
    Oggetto: '
    .$subject.'

    Messaggio:
    '
    .$message.'

    |---------END MESSAGE----------|'
    ;
    echo
    "<script>location='grazie.html'; </script>";
    mail($to, $subject, $body);
    unset(
    $_SESSION['chapcha_code']);
    } else {
    echo
    'Sorry, you have provided an invalid security code';
    }

    ?>

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Nel codice PHP, dove è presente il controllo
    Codice PHP:
    if(isset($_POST['Submit'])) {
    puoi aggiungere ulteriori controlli per verificare che i campi non siano vuoti, usando isset ed empty:
    Codice PHP:
    if (isset($_POST['Submit'], $_POST['altro_campo_1'], ..., $_POST['altro_campo_N']) && !empty($_POST['altro_campo_1']) && ... && !empty($_POST['altro_campo_N']))

    I suggerimenti che do più spesso:


  3. #3
    Guest

    Predefinito

    Ok grazie mille. E se io volessi fare in modo che se i campi non sono compilati, venga a video una scritta tipo "Errore, non hai compilato i campi richiesti"?

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Il modo è esattamente quello che hai descritto, solo "tradotto" nello "pseudo-inglese" di PHP:
    Codice PHP:
    if (empty($_POST['campo_1']) || empty($_POST['campo_2']) || ... || empty($_POST['campo_N'])) {
    echo
    "Errore, non hai compilato i campi richiesti";
    exit;
    }
    Equivalentemente, adattato al codice che hai già:
    Codice PHP:
    if (isset($_POST['Submit'], ...) && !empty($_POST['altro_campo_1']) ...) {
    // Codice attuale
    }
    else {
    echo
    "Errore, non hai compilato i campi richiesti";
    }

    I suggerimenti che do più spesso:


  5. #5
    Guest

    Predefinito

    Mzanella, intendevi una cosa del genere?
    <?php session_start();
    if (isset($_POST['Submit'], $_POST['fname'], $_POST['mail'], $_POST['phone'], $POST['message']) && !empty($_POST['Submit'], $_POST['fname'], $_POST['mail'], $_POST['phone'], $POST['message']))
    {
    $youremail = 'miamail@alice.it';
    $fromsubject = 'Mail proveniente dal sito mio';
    $title = $_POST['title'];
    $fname = $_POST['fname'];
    $mail = $_POST['mail'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
    $to = $youremail;
    $mailsubject = 'Masage recived from'.$fromsubject.' Contact Page';
    $body = $fromsubject.'

    La persona che ti ha contattato è '.$fname.'
    Telefono: '.$phone.'
    E-mail: '.$mail.'
    Oggetto: '.$subject.'

    Messaggio:
    '.$message.'

    |---------END MESSAGE----------|';
    echo "<script>location='grazie.html'; </script>";
    mail($to, $subject, $body);
    else if (empty($_POST['fname']) || (empty($_POST['mail']) || (empty($_POST['phone']) || (empty($_POST['message']))

    {
    echo "Errore non hai compilato i campi richiesti";
    }
    ?>

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Quasi, prova così:
    Codice PHP:
    <?php
    session_start
    ();

    if (isset(
    $_POST['Submit'], $_POST['fname'], $_POST['mail'], $_POST['phone'], $POST['message'])
    && !empty(
    $_POST['Submit'])
    && !empty(
    $_POST['fname'])
    && !empty(
    $_POST['mail'])
    && !empty(
    $_POST['phone'])
    && !empty(
    $POST['message'])
    ){
    $youremail = 'miamail@alice.it';
    $fromsubject = 'Mail proveniente dal sito mio';
    $title = $_POST['title'];
    $fname = $_POST['fname'];
    $mail = $_POST['mail'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];

    $to = $youremail;
    $mailsubject = 'Masage recived from'.$fromsubject.' Contact Page';
    $body = $fromsubject.'

    La persona che ti ha contattato è '
    .$fname.'
    Telefono: '
    .$phone.'
    E-mail: '
    .$mail.'
    Oggetto: '
    .$subject.'

    Messaggio:
    '
    .$message.'

    |---------END MESSAGE----------|'
    ;
    echo
    "<script>location='grazie.html'; </script>";
    mail($to, $subject, $body);
    }
    else {
    echo
    "Errore non hai compilato i campi richiesti";
    }
    ?>
    Nota che la funzione empty, a differenza di isset, accetta un solo parametro, quindi devi chiamarla su ogni campo che vuoi verificare.
    Ultima modifica di mzanella : 11-07-2018 alle ore 09.30.46 Motivo: Mancava una graffa

    I suggerimenti che do più spesso:


  7. #7
    Guest

    Predefinito

    Ok, grazie infinite. Un'ultima domanda e poi non ti scoccio più:
    se io volessi ad esempio linkare a un'altro file html come sopra (grazie.html) dovrei ripetere le stessa stringa all'ultimo comando echo, oppure mi darebbe errore?

    Faccio un esempio...

    echo "<script>location='grazie.html'; </script>";
    mail($to, $subject, $body);
    else {
    echo "<script>location='errore.html'; </script>";
    }
    ?>

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Così come hai fatto va bene

    I suggerimenti che do più spesso:


  9. #9
    Guest

    Predefinito

    Ok grazie infinite....da solo non ci sarei mai arrivato. Grazie ancora...oggi pomeriggio lo testo e poi ti faccio sapere

  10. #10
    Guest

    Predefinito

    Ciao mzanella, ho provato il codice che mi hai gentilmente compilato tu, ma quando provo a inviare una mail mi restutuisce questo errore.
    Di seguito incollo il codice come è adesso e l'errore che mi restituisce.

    <?php
    session_start();
    if (isset($_POST['Submit'], $_POST['fname'], $_POST['mail'], $_POST['phone'], $POST['message'])
    && !empty($_POST['Submit'])
    && !empty($_POST['fname'])
    && !empty($_POST['mail'])
    && !empty($_POST['phone'])
    && !empty($POST['message'])
    ){
    $youremail = 'miamail@alice.it';
    $fromsubject = 'Mail proveniente dal sito mio';
    $title = $_POST['title'];
    $fname = $_POST['fname'];
    $mail = $_POST['mail'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];

    $to = $youremail;
    $mailsubject = 'Masage recived from'.$fromsubject.' Contact Page';
    $body = $fromsubject.'

    La persona che ti ha contattato è '.$fname.'
    Telefono: '.$phone.'
    E-mail: '.$mail.'
    Oggetto: '.$subject.'

    Messaggio:
    '.$message.'

    |---------END MESSAGE----------|';
    echo "<script>location='grazie.html'; </script>";
    mail($to, $subject, $body);
    else {
    echo "Errore non hai compilato i campi richiesti";
    }
    ?>


    E l'errore che mi restituisce è questo:
    Parse error: syntax error, unexpected 'else' (T_ELSE)on line 33

  11. #11
    Guest

    Predefinito

    Ok ho risolto l'errore in questo modo...il fatto è che la mail inviata non la ricevo sul mio account di posta, sia alice che gmail...

    if (mail($to, $subject, $body))
    {
    echo "<script>location='grazie.html'; </script>";
    }
    else
    {
    echo "Errore non hai compilato i campi richiesti";
    }

    ?>

  12. #12
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Non così, altrimenti perdi il controllo sulla compilazione dei campi. Indenta correttamente il codice, in questo modo certi errori diventano evidenti: in questo caso ti manca la chiusura della parentesi graffa relativa all'if.

    Codice PHP:
    <?php
    session_start
    ();
    if (isset(
    $_POST['Submit'], $_POST['fname'], $_POST['mail'], $_POST['phone'], $POST['message'])
    && !empty(
    $_POST['Submit'])
    && !empty(
    $_POST['fname'])
    && !empty(
    $_POST['mail'])
    && !empty(
    $_POST['phone'])
    && !empty(
    $POST['message'])
    ){
    $youremail = 'miamail@alice.it';
    $fromsubject = 'Mail proveniente dal sito mio';
    $title = $_POST['title'];
    $fname = $_POST['fname'];
    $mail = $_POST['mail'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];

    $to = $youremail;
    $mailsubject = 'Masage recived from'.$fromsubject.' Contact Page';
    $body = $fromsubject.'

    La persona che ti ha contattato è '
    .$fname.'
    Telefono: '
    .$phone.'
    E-mail: '
    .$mail.'
    Oggetto: '
    .$subject.'

    Messaggio:
    '
    .$message.'

    |---------END MESSAGE----------|'
    ;
    mail($to, $subject, $body);
    echo
    "<script>location='grazie.html'; </script>";
    }
    else {
    echo
    "Errore non hai compilato i campi richiesti";
    }
    ?>
    il fatto è che la mail inviata non la ricevo sul mio account di posta, sia alice che gmail...
    Questo è un problema comune, i provider bloccano le email che considerano spam. Ma non sempre il loro criterio è corretto...
    Non ci si può fare molto, sebbene sembra che impostare alcuni parametri aggiuntivi per la funzione mail possa essere d'aiuto, ad esempio:
    Codice PHP:
    $to = $youremail;
    $headers = 'From: Fashionphotobook <' . $youremail . '>';
    ...
    mail($to, $subject, $body, $headers);

    I suggerimenti che do più spesso:


  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Aggiungo che su AlterVista aiuta a non essere considerato spam una email con l'email del mittente settata come "nomesito@altervista.org" (parametro From).

    Codice PHP:
    $to = $youremail;
    $headers = 'From: Fashionphotobook <' . $youremail . '>';
    ...
    mail($to, $subject, $body, $headers);
    Ma in questo modo invia l'email a se stesso. I valori $youremail e $to dovrebbero essere diversi tra loro (rispettivamente email mittente e destinatario).

    Ciao!
    Ultima modifica di alemoppo : 11-07-2018 alle ore 11.09.12

  14. #14
    Guest

    Predefinito

    Quindi se ho capito bene (almeno spero) dovrebbe essere una cosa del genere...
    Codice PHP:
    <?php
    session_start
    ();
    if (isset(
    $_POST['Submit'], $_POST['fname'], $_POST['mail'], $_POST['phone'], $POST['message'])
    && !empty(
    $_POST['Submit'])
    && !empty(
    $_POST['fname'])
    && !empty(
    $_POST['mail'])
    && !empty(
    $_POST['phone'])
    && !empty(
    $POST['message']))

    $to = $youremail;
    $headers = 'From: Fashionphotobook <' . $youremail . '>';
    $youremail = 'miamail@gmail.com';
    $fromsubject = 'Mail proveniente dal sito mio';
    $title = $_POST['title'];
    $fname = $_POST['fname'];
    $mail = $_POST['mail'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];

    $to = $youremail;
    $mailsubject = 'Masage recived from'.$fromsubject.' Contact Page';
    $body = $fromsubject.'

    La persona che ti ha contattato è '
    .$fname.'
    Telefono: '
    .$phone.'
    E-mail: '
    .$mail.'
    Oggetto: '
    .$subject.'

    Messaggio:
    '
    .$message.'

    |---------END MESSAGE----------|'
    ;

    if (
    mail($to, $subject, $body))
    {
    echo
    "<script>location='grazie.html'; </script>";
    }
    else
    {
    echo
    "Errore non hai compilato i campi richiesti";
    }

    ?>
    Ultima modifica di alemoppo : 11-07-2018 alle ore 11.40.41 Motivo: +tag [php]

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Nella riga:
    Codice PHP:
    $to = $youremail;
    $youremail non è ancora stata inizializzata. Prima dovresti inizializzarla con
    Codice PHP:
    $youremail = 'miamail@gmail.com';
    Come dicevo prima, su AlterVista per rendere un po' meno probabile il filtraggio dell'email per spam, la riga 11 sostituiscila così:
    Codice PHP:
    <?php
    $headers
    = 'From: Fashionphotobook <nicknameAlterVista@altervista.org>';
    (sostituendo ovviamente "nicknameAlterVista" con il tuo nickname).

    Infine, quando richiami la mail(), devi passare anche la variabile $header (visto che la stai utilizzando).

    EDIT:
    aggiungo: come mai utilizzi javascript per effettuare il redirect? Se quella pagina non ha ancora scritto dell'html, potresti usare un redirect PHP.

    Ciao!
    Ultima modifica di alemoppo : 11-07-2018 alle ore 11.46.51
    mzanella likes this.

Regole di scrittura

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