• User

    form mail in php con errore

    Salve a tutti avri bisogno di aiuto.
    sto costruendo un sito ma non sono molto ferrato in php, ho un modulo e mail che ho sempre usato ed ha sempre funzionato, adesso è la prima volta che lo uso su l'hosting di go daddy e non funziona...
    o meglio la mail mi arriva precisa sul mio client di posta ma la lettura della pagina invio.php si blocca restituendo all'utente la seguente dicitura:

    Warning: array_diff() [function.array-diff]: Argument #2 is not an array in /home/content/c/e/c/cecco81liguria/html/tattooartstudio/mail/inviapreventivo.php on line 73

    Warning: Cannot modify header information - headers already sent by (output started at /home/content/c/e/c/cecco81liguria/html/tattooartstudio/mail/inviapreventivo.php:73) in /home/content/c/e/c/cecco81liguria/html/tattooartstudio/mail/inviapreventivo.php on line 207

    Ripeto la mail mi arriva regolarmente ma a regola l'utente dovrebbe essere indirizzato sulla pagina grazie.html ed invece compare questa paginata di errore...
    per chi volesse provare con le proprie dita ecco il link
    tattooartstudio.net/contatti.html

    se avete bisogno del codice della pagina php eccolo:

    <?php
    $email=$_POST['email'];
    #######################################

    IMPOSTAZIONI DA CONFIGURARE

    #######################################
    //(1) indirizzo email del destinatario del modulo
    $destinatario = "[email protected]";
    //(2) indirizzo email del mittente, campo FROM
    // non toccare se desiderate che l'indirizzo email inserito nel modulo sia
    // riportato nel campo DA del messaggio che sarà ricevuto.
    // Se invece desiderate un campo fisso annullare la prima riga e abilitare
    // la seconda inserendo la dicitura desiderata (per annullare mettere //
    // all'inizio della prima riga e per abilitare togliere // dalla seconda riga)
    $nome_mittente = "$email";
    // $nome_mittente = "Dal Modulo";
    //(3) oggetto del messaggio
    $oggetto_email = "tattoo art studio";
    //(4) se si vogliono rendere tutti i campi NON OBBLIGATORI impostare su "y".
    // (valori possibili: "y" e "n")
    $all_free = "n";
    //(5) se avete messo "n" al punto (4) inserire tra virgolette, separati
    // da virgola, i nomi dei campi da rendere OBBLIGATORI
    // Esempio: $campi_req = array("nome","telefono","via");
    $campi_req = array("nome","email","dimensioni","quantita","colori");
    //(6) controllo validità del campo email. (valori possibili: "y" e "n")
    $obbligo_email = "y";
    //(7) obbligare l'utente ad accettare le condizioni.
    // (valori possibili: "y" e "n")
    $accetta_condizioni = "n";
    //(8) URL della pagina di ringraziamento
    $pagina_grazie = "grazie.html";
    //(9) URL della pagina errore campi vuoti
    $pagina_error_empty = "errore.html";
    //(10) URL della pagina errore email
    $pagina_error_email = "errore.html";
    //(11) URL della pagina errore condizioni non accettate
    $pagina_error_condizioni = "errore.html";
    //(12) URL della pagina errore invio non autorizzato (mancanza di referer)
    $pagina_error_referer = "errore.html";
    #######################################

    FINE IMPOSTAZIONI DA CONFIGURARE

    #######################################
    //ora e data
    $ora = date ("H:i:s");
    $data = date ("d/m/Y");
    //intestazione email che arriva al destinatario
    $corpo = "
    Modulo inviato il $data alle ore $ora
    Riepilogo dati:\n\n";
    //============== NON TOCCARE NULLA OLTRE QUESTA RIGA ==================\

    ########### CODICI ###########
    //variabili per rendere lo script compatibile anche con la versione PHP 4.2 e maggiori
    if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER, $HTTP_SERVER_VARS))){
    $_POST = &$HTTP_POST_VARS;
    }
    //prende IP ADDRESS
    if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){

    if ($_SERVER["HTTP_X_FORWARDED_FOR"] == "") {
    $ipnumb = getenv("REMOTE_ADDR");
    }else {
    $ipnumb = getenv("HTTP_X_FORWARDED_FOR");
    }
    } else {
    $ipnumb = getenv("REMOTE_ADDR");
    }
    ###################################
    //controllo referer
    if(empty($_SERVER["HTTP_REFERER"])){
    header ("Location: $pagina_error_referer");
    exit();

    }
    ########### CONTROLLO DEI CAMPI ###########
    $control_campi = 0;
    if($all_free != "y"){
    foreach($_POST as $key => $valore){
    if(in_array($key,$campi_req)){
    if(trim($valore) == ""){
    $control_campi++;

    }
    }
    }
    } else {
    $control_campi = 0;
    }
    ########### CONTROLLO EMAIL ###########
    $control_email = 0;
    if($obbligo_email == "y"){
    if(isset($POST['email'])){
    if(!eregi("^([a-zA-Z0-9
    .-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){
    $control_email++;
    }
    } else {
    $control_email = 0;
    }
    }
    ########### CONTROLLO CONDIZIONI ###########
    $control_condizioni = 0;
    if($accetta_condizioni == "y"){
    if(isset($_POST['trattamento_dati']) && $_POST['trattamento_dati'] == "accetto"){
    $control_condizioni = 0;
    } else {
    $control_condizioni ++;
    }
    }
    ########### INVIO EMAIL ###########
    if($control_campi == 0){
    if($control_email == 0){
    if($control_condizioni == 0){
    foreach($POST as $key => $valore){
    $key = ucfirst(stripslashes(trim($key)));
    $valore = stripslashes(trim($valore));
    $key = str_replace("
    "," ",$key);
    if(trim($valore) == "") $valore = "Non compilato";

    $corpo .= $key .": ". $valore ."\n\n";
    }

    $corpo .= "Numero IP: $ipnumb"."\n";
    $corpo .= "____________________________________________________________ \n\n
    ";

    // invio e-mail
    // Header Mail
    $headmail.="From: $nome_mittente <$nome_mittente>\n";
    $headmail.="Return-Path: $nome_mittente\n";
    $headmail.="User-Agent: Php Mail Function\n";
    $headmail.="X-Accept-Language: en-us, en\n";
    $headmail.="MIME-Version: 1.0\n";
    $headmail.="X-Priority: 1 (Highest)\n";
    $headmail.="Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n";
    $headmail.="Content-Transfer-Encoding: 7bit\n";
    ini_set('sendmail_from', "$destinatario");
    mail("$destinatario", "$oggetto_email", "$corpo", "$headmail");
    header ("Location: $pagina_grazie");
    } else {
    header ("Location: $pagina_error_condizioni");
    }
    } else {
    header ("Location: $pagina_error_email");
    }
    } else {

    header ("Location: $pagina_error_empty");
    }
    ?>

    :bho: grazie mille a chi mi aiuterà


  • User Attivo

    Prova a sostituire l'invio dell'e-mail da così:
    [PHP]
    mail("$destinatario", "$oggetto_email", "$corpo", "$headmail");
    [/PHP]
    a così:
    [PHP]
    @mail("$destinatario", "$oggetto_email", "$corpo", "$headmail");
    [/PHP]
    Ciao ^^


  • Bannato User Attivo

    sostituisci :

    OR count(array_diff($_SERVER, $HTTP_SERVER_VARS))con:
    [PHP]OR (isset($HTTP_SERVER_VARS) AND is_array($HTTP_SERVER_VARS) AND count(array_diff($_SERVER, $HTTP_SERVER_VARS)))[/PHP]


  • User

    :gthi:
    mitici, ho fatto entrambe le modifiche e funziona, credo che la decisiva sia stata la seconda.
    Grazie veramente, vi devo un caffè :yuppi:
    o al limite un consiglio se sarò ferrato in qualcosa d'altro...
    grazie


  • User Attivo

    Prego ^^