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

    Form Mail in PHP non più funzionante dopo cambio server

    Buongiorno,
    mi rivolgo per la prima volta in questo forum con la speranza che possiate aiutarmi, premettendo che sono abbastanza "ignorante" in materia di PHP.

    Ho un portale che per essere contattato dai clienti utilizza un semplice Form Mail in php e html.
    Da quando abbiamo effettuato il cambio server (nuovo registrar, nuovo VPS), il Form Mail ha smesso di funzionare, o meglio, funziona solo in parte... mi spiego meglio:

    compilando il Form con i propri dati e cliccando il classico pulsante "invia", la mail arriva a destinazione ma non riporta nessuno dei dati inseriti, è semplicemente vuota.

    Faccio presente che fino a ieri tutto funzionava e l'unica modifica fatta nel frattempo è stato questo trasferimento di server. Detto questo ho pensato che il problema potesse essere collegato alla versione del PHP installato sulla nuova macchina, ossia il 5.4.


    Qui di seguito il codice HTML del Form:

    codice HTML:
     <form method="post" onsubmit="MM_validateForm('e-mail','','RisEmail');return document.MM_returnValue" action="gc_formmail.php">      <h1>Info</h1>      <table class="center">        <tr>           <td> <h3>               <input name="Hotel" type="hidden" id="Hotel" value="HOTEL" />            </h3></td>        </tr>        <tr>          <td >&nbsp;</td>          <td>            <p>Nome</p></td>          <td><input name="Nome" type="text" id="Nome" size="16" /></td>          <td>            <p>Cognome </p></td>          <td><p>              <input name="Cognome" type="text" id="cognome" size="16" />          </p></td>          <td><p>&nbsp; </p></td>        </tr>        <tr>          <td>&nbsp;</td>          <td><p>Città</p></td>          <td><input name="Citta" type="text" id="Citta" size="16" /></td>          <td>            <p>Telefono* </p></td>          <td><p>              <input name="Telefono" type="text" id="telefono" size="16" />          </p></td>          <td><p>&nbsp; </p></td>        </tr>        <tr>          <td>&nbsp;</td>          <td>            <p>E-mail* </p></td>          <td><input name="e-mail" type="text" id="e-mail" size="16" /></td>          <td>            <p>Fax </p></td>          <td><p>              <input name="Fax" type="text" id="Fax22" size="16" />          </p></td>          <td><p>&nbsp; </p></td>        </tr>        <tr>          <td colspan="2">&nbsp;</td>          <td colspan="2"><p>&nbsp; </p></td>          <td>&nbsp;</td>          <td>&nbsp;</td>        </tr>        <tr>          <td colspan="2">            <p>Camere</p></td>          <td><p>              <select name="Tipo camera" id="select">                <option>Singola</option>                <option>Doppia</option>                  </select>          </p></td>          <td>Q.tà <select name="Q.tà Camere" id="Q.tà-Camere">            <option>1</option>         </select></td>           </tr>        <tr>          <td colspan="2">            <p>Numero </p></td>          <td colspan="2"><p>adulti                  <select name="Numero adulti" id="numero-adulti">                    <option>1</option>            </select>          </p></td>        </tr>        <tr>          <td colspan="2">            <p>Numero notti</p></td>          <td colspan="2"><p>              <select name="numero notti" id="numero-notti">                <option>1</option>        <option>altro</option>              </select>          </p></td>        </tr>        <tr>          <td colspan="2"><p>Trattamento</p></td>
              <td colspan="2"><p>              <select name="Trattamento" id="Trattamento">                <option>Pernottamento e prima colazione</option>            </select>          </p></td>        </tr>        <tr>          <td colspan="2">            <p>Data di arrivo</p></td>          <td colspan="2"><p>giorno                  <select name="Giorno arrivo" id="giorno-arrivo">                    <option>1</option>           </select>          mese          <select name="Mese arrivo" id="mese-arrivo">            <option>Gen.</option>            <option>Feb.</option>           </select>          anno          <select name="Anno arrivo" id="anno-arrivo"><script>  var myDate = new Date();  var year = myDate.getFullYear();  for(var i = 15; i < 18+1; i++){      document.write('<option value="'+i+'">'+i+'</option>');  }  </script>          </select>          </p></td>        </tr>        <tr>          <td colspan="2">            <p>Data di Partenza</p></td>          <td colspan="2"><p>giorno                  <select name="Giorno partenza" id="giorno-partenza">                    <option>1</option>            </select>          mese          <select name="Mese partenza " id="mese-partenza">            <option>Gen.</option>          </select>          anno<select name="Anno partenza" id="anno-partenza"><script>  var myDate = new Date();  var year = myDate.getFullYear();  for(var i = 15; i < 18+1; i++){      document.write('<option value="'+i+'">'+i+'</option>');  }  </script>          </select></p></td>        </tr>        <tr>          <td colspan="4">&nbsp;</td>        </tr>        <tr>          <td colspan="6">            <p>&nbsp;</p>            <p>Informazioni / Richieste particolari</p>            <table width="539" cellspacing="0" cellpadding="0">              <tr>                <td><textarea name="Informazioni /richieste particolari" cols="75" rows="5" class="right" id="info"></textarea></td>                <td>&nbsp;</td>              </tr>            </table>            <p>Trattamento dei dati personali</p>            <p>               <textarea name="Informativa privacy" cols="46" rows="3" id="textarea">Informativa ex art. </textarea>            </p>            <br/> <p><br/>              <br/>              <input name="invia22" type="submit" id="invia23" onclick="MM_validateForm('Nome','','R','cognome','','R','telefono','','RisNum','e-mail','','RisEmail');return document.MM_returnValue" value="invia" />              <input name="cancella2" type="reset" id="cancella3" value="cancella" />            </p></td>        </tr>      </table>    </form>

    Qui di seguito il codice del file gc_formmail.php:

    Codice PHP:
    <?    include "config.php";
        
    $version "1.2";        if ($act == 1)    {        echo getCredits();
            return;    }
        
    $key = array ();    $val = array ();
        
    $output "";
        
    $senderNames = array ($senderNames);
        foreach(
    $_POST as $chiave=>$valore)    {        // <Input type=qualunque name=chiave value=valore>
            
    array_push ($key$chiave);        array_push ($valeregi_replace("\\\\'""'"$valore));                if (!empty($emailField))        {            if ($chiave == $emailField)            {                $emailMittente $valore;            }        }
            if (!empty(
    $subjectField))        {            if ($chiave == $subjectField)            {                $subject $valore;            }        }
            if (!empty(
    $senderNames))        {            for ($i 0$i count ($senderNames); $i++)            {                        if ($chiave == $senderNames[$i])                {                    $nome .= $valore." ";                }            }        }
        }
        if (!empty(
    $subject))    {        $oggetto .= " - ".$subject;    }
        if (
    $html)    {        $output getHtmlOutput ($key$val);
            
    $intestazioni "MIME-Version: 1.0\r\n";        $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";    }    else    {        for ($i 0$i count ($key); $i++)        {            $output .= $key[$i].": ".$val[$i]."\n";        }
            
    $intestazioni "";    }
        if ( (!empty(
    $emailMittente)) || (!empty($nome)) )    {        $intestazioni .= "From: ".$nome."<".$emailMittente."> \r\n";    }    else    {        $intestazioni .= "From: ".$mittente."\r\n";    }
        if (!
    mail($destinatari$oggetto$output$intestazioni))    {        echo "<br>".$messaggioErrore."<br><br><br>".getHtmlOutput($key$val)."<br><br><br>".getCredits();
            if (
    strlen($paginaErrore) < 5)        {            exit ();        }        else        {        echo "<META HTTP-EQUIV=Refresh CONTENT=\"10; URL=".$paginaErrore."\">";        }    }
        echo 
    "<br>".$messaggioConferma."<br><br><br>".getHtmlOutput($key$val)."<br><br><br>".getCredits();
        if (
    strlen($paginaConferma) < 5)    {        exit ();    }    else    {        echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=".$paginaConferma."\">";    }

        function 
    getHtmlOutput ($k$v)    {        global $stripsHtml;        global $tagAllowed;
            
    $return "<center><div style=\"width: 500; height: 147; text-align: center\">";
            
    $return .= "<fieldset style=\"font-family: Verdana; font-size: 10pt; color: #008080; font-weight: bold; border: 3px double #F3C65C; background-color: #F4F5FF\">";        $return .= "<legend align=center>Dati inseriti</legend>";

            
    $return .= "<table border=0 cellpadding=3 style=\"border-collapse: collapse; font-family:Verdana; font-size:10pt; color:#4062EA\" bordercolor=#111111 cellspacing=5 width=500>";        $return .= "<colgroup span=1 style=\"text-align:right; font-weight: bold; background-color: #DDE8FF\"></colgroup>";

            for (
    $i 0$i count ($k); $i++)        {            $v[$i] = eregi_replace ("\n""<br>"$v[$i]);
                if (
    $stripsHtml)            {                $v[$i] = strip_tags ($v[$i], $tagAllowed);            }
                
    $return .= "<tr><td width=\"30%\">".$k[$i].": </td><td>".$v[$i]."</td></tr>";        }
            
    $return .= "</table></fieldset></div></center>";
            return 
    $return;    }
        function 
    getCredits ()    {        global $version;
            
    $return "<br><br>        <center>&nbsp;<p><a href=\"http://www.giuseppecalbi.com/scripts/GC_Formmail\" style=\"text-decoration: none\">        <font face=Verdana size=1 color=#000000><b>GC_Formmail ".$version."</b></a><br>        Written by <a href=\"http://www.giuseppecalbi.com\">Giuseppe Calbi</a><br>        Check for script updates: <img alt=\"New updates available at GiuseppeCalbi.com if image is green. The current is the newest version if image is red\" src=http://peppiniel.100megs3.com/giuseppecalbi/scripts/gc_formmail/getUpdatesSemaph.php?current=".$version."></p>        </center></font>";
            return 
    $return;    }
    ?>
    Qui di seguito il codice del file config.php:

    Codice PHP:
    <?    /**    *    Nome e email del mittente che viene visualizzato nell'email ricevuta. Nella forma: "Nome <indirizzo@provider.com>"    **/
        
    $mittente "Richiesta <info@provider.it>";

        
    /**    *     Nomi e indirizzi email a cui verranno inviati i dati inseriti nel modulo    **/
        
    $destinatari "Richiesta <info@provider.it>";

        
    /**    *    Oggetto che verrà visualizzato nell'email ricevuta    **/
        
    $oggetto "----Informazioni / Preventivi----";

        
    /**    *    Eventuale pagina a cui si sarà reindirizzati automaticamente    **/
        
    $paginaConferma "grazie.htm";

        
    /**    *    Messaggio/frase (può contenere html) che verrà visualizzato in cima alla pagina di conferma    **/
        
    $messaggioConferma "<center><font color=navy size=3 face=verdana><b>Stiamo elaborando i vostri dati</b></font></center><br>";

        
    /**    *    Eventuale pagina a cui si sarà reindirizzati automaticamente     **/
        
    $paginaerrore "";

        
    /**    *    Messaggio/frase (può contenere html) che verrà visualizzato in cima alla pagina di conferma    **/
        
    $messaggioErrore "<center><font color=red size=3 face=verdana><b>Si è verificato un errore<br>Se il problema persiste contatta l'amministratore del sito!!</b></font><center><br>";

        
    /**    *    Specifica il nome di un campo del form da trattare come indirizzo email   **/
        
    $emailField "email";

        
    /**    *    Specifica il nome di un campo del form da trattare come oggetto del mittente.  **/        $subjectField "";

        
    /**    *    Specifica il nome di un campo o più campi del form da trattare come Nome del mittente.      **/
        
    $senderNames "nome, cognome";

        
    /**    *    Se settato a 1, nella pagina di conferma mostra i dati inseriti. Se settato a zero stampa solo il messaggio di conferma senza far vedere ciò che si è inserito    **/
        
    $mostraInputinConferma 1;

        
    /**    *    Se settato a 1, le email vengono inviate graficamente in formato html, se settato a 0 in modalità di testo semplice    **/
        
    $html 1;

        
    /**    * Se settato a 1, toglie tutti i tag html presenti negli input prima di visualizzarlo graficamente. E' possibile specificare quali tag permettere. Se a 0 permette tag html    **/
        
    $stripsHtml 1;

        
    /**    *    Specifica quali tag html sono permessi nel caso in cui il parametro di sopra sia settato a 1    **/
        
    $tagAllowed "<b><i><br><u>";

    ?>
    Ringrazio in anticipo chiunque può illuminarmi sulla questione!

  2. #2
    Comincia col sostituire gli short tag <? ... ?> con quelli classici <?php ... ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Ciao satifal, grazie per la risposta!

    avevo gia provato a cambiare i tag di apertura e chiusura php, ma l'esito rimane lo stesso.

    Come informazione aggiuntiva posso dire che dal file error log del server, risulta esserci un errore nel file gc_formmail alla seguente riga:

    if ($act == 1) { echo getCredits();
    return; }

    l'errore indicato è il seguente:

    mod_fcgid: stderr: PHP Notice: Undefined variable: act in /gc_formmail.php on line 26

    Purtroppo non ho idea di come poter rimediare a questo errore, essendo (come detto prima) digiuno di PHP

  4. #4
    aggiorno la situazione:

    A forza di tentativi e tentativi, il problema è stato individuato e corretto.
    Il problema non era dovuto al codice che sopra ho postato, o meglio solo ad una minuscola e pensavo insignificante parte:

    nel codice HTML alla voce "action" del form il percorso originario era http://www.miosito.it/gc_formmail.php mentre dopo il trasferimento al nuovo Server i DNS puntano direttamente a http://miosito.it ... quindi è bastato togliere il www e tutto è tornato a funzionare.

    Mi scuso quindi per aver "abusato" del forum e ringrazio comunque per l'attenzione dimostrata finora.

    P.S. Sono nuovo di questo Forum e non so se devo mettere io "RISOLTO" (e come farlo) oppure ci pensano gli amministratori.

  5. #5
    Utente di HTML.it L'avatar di bruno-
    Registrato dal
    Jan 2014
    residenza
    Nord Italia
    Messaggi
    233
    Quote Originariamente inviata da davideptrn Visualizza il messaggio
    [...]
    Guarda, io non vedo [RISOLTO] in nessuna delle altre discussioni, perciò va bene così, penso!
    Protesta niente immagini nella firma

  6. #6
    Grazie per l'informazione bruno-

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 © 2020 vBulletin Solutions, Inc. All rights reserved.