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

Discussione: Mail php

  1. #1
    Data registrazione
    07-04-2011
    Messaggi
    13

    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,054

    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:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  3. #3
    Data registrazione
    07-04-2011
    Messaggi
    13

    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,054

    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:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  5. #5
    Data registrazione
    07-04-2011
    Messaggi
    13

    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,054

    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:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  7. #7
    Data registrazione
    07-04-2011
    Messaggi
    13

    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,054

    Predefinito

    Cos come hai fatto va bene

    I suggerimenti che do pi spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


  9. #9
    Data registrazione
    07-04-2011
    Messaggi
    13

    Predefinito

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

  10. #10
    Data registrazione
    07-04-2011
    Messaggi
    13

    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
    Data registrazione
    07-04-2011
    Messaggi
    13

    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,054

    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:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


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

    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
    Data registrazione
    07-04-2011
    Messaggi
    13

    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
    10,798

    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
  •