• User

    Script invio e-mail

    Ciao ragazzi,
    ho provato ad usare uno sript per inviare il contenuto in un form nella mia casella e-mail che ho preso proprio su questo sito, le e-mail me le invia ma nn mi fa il redirect!!mi dice questo errore:
    Warning: Cannot modify header information - headers already sent by (output started at /home/mhd-01/xxx.XXXXXX.it/htdocs/invia.php:10) in /home/mhd-01/xxx.XXXXXXXX.it/htdocs/invia.php on line 29

    Non riesco a capire cosa nn va..lo script che ho preso è il seguente:

    <?php
    // Inizio Configurazione***
    //Indirizzo emai a cui inviare i msg
    $mailto = "[email protected]";
    //Oggetto della mail
    $subject = "Nuovo ordine";
    //Pagina da mostrare dopo l'invio
    $redirect = "xxx://xxx.xxxxxxx.it/ordina.htm";
    // Fine Configurazione****

    foreach($HTTP_POST_VARS as $key => $value) {
    $message .= $key . ': ' . $value;
    $message .= "\n";
    }
    if (@mail($mailto, $subject, $message)) {
    header("Location: $redirect");
    } else {
    // Messaggio in caso di errore
    echo('
    Impossibile inviare. Torna nella pagina precedente e prova ancora, grazie.</p>');
    }
    ?>

    LA LINEA 29 DELLO SCRIPT E' QUELLA MESSA IN GRASSETTO E IN CORSIVO

    Che cosa è sbagliato????
    Vi ringrazio in anticipo!
    Davide


  • Bannato User Attivo

    controlla l'indirizzo in qusta variabile se è corretto

    $redirect = "xxx://xxx.xxxxxxx.it/ordina.htm";


  • Bannato User Attivo

    Scusa ma se lo script ti funziona allora mettici un silent in questo modo

    @$redirect = "xxx://xxx.xxxxxxx.it/ordina.htm";
    notare la chiocciola
    ciao


  • Consiglio Direttivo

    Ciao daviz87
    quell'errore indica che prima di quell'header esistono già degi output di codice, verifica tutto lo script, vedrai che qualcosa trovi 😉


  • User

    ho provato a rivedere tutto lo script ma siccome nn sono tanto esperto nn noto granchè..ora provo quello che ha detto tifo-milan


  • User Attivo

    perchè per il redirect non usi javascript ?

    if (@mail($mailto, $subject, $message)) {
    echo "<script type=\"text/javascript\">
    <!--
    function doRedirect() { //funzione con il link alla pagina che si desidera raggiungere
    location.href = \"xxx://xxx.xxxxxxx.it/ordina.htm\";
    }
    window.setTimeout(\"doRedirect()\", 3500); //Fa partire il redirect dopo tot. secondi
    //-->
    </script>
    <h1>L' invio del messaggio &egrave; andato a buon fine</h1><br />";}
    

  • User

    @supercapocc said:

    perchè per il redirect non usi javascript ?

    >if (@mail($mailto, $subject, $message)) {
    echo "<script type=\"text/javascript\">
    <!--
    function doRedirect() { //funzione con il link alla pagina che si desidera raggiungere
    location.href = \"xxx://xxx.xxxxxxx.it/ordina.htm\";
    }
    window.setTimeout(\"doRedirect()\", 3500); //Fa partire il redirect dopo tot. secondi
    //-->
    </script>
    <h1>L' invio del messaggio &egrave; andato a buon fine</h1><br />";}
    >```
     
    Ma questo codice lo devo inserire nella pagina php??(scusa l'ignoranza)

  • User Attivo

    si,
    elimina

    //Pagina da mostrare dopo l'invio
    $redirect = "xxx://xxx.xxxxxxx.it/ordina.htm";
    

    sostituisci

    {
    ***header("Location: $redirect");***
    }
    

    con

    {
    echo "<script type=\"text/javascript\">
    <!--
    function doRedirect() { //funzione con il link alla pagina che si desidera raggiungere
    location.href = \"xxx://xxx.xxxxxxx.it/ordina.htm\";
    }
    window.setTimeout(\"doRedirect()\", 3500); //Fa partire il redirect dopo tot. secondi
    //-->
    </script>
    <h1>L' invio del messaggio &egrave; andato a buon fine</h1><br />";}
    

    edita la pagina da raggiungere e il tempo se vuoi

    puoi vedere lo script in azione su un form mail che utilizzo su un mio sito a questo indirizzo sierra.altervista.org/iscrizione/

    ne uso due, uno per reindirizzare al form in caso di errori nella compilazione, e l'altro alla pagina dei banner in caso di inviomail :ciauz:


  • User

    Scusa ma sto redirect nn lo vuole fare:x. Questa volta i messaggi di errore nn ci sono più, la pagina è bianca. Ho fatto tutto quello che hai detto tu. Questa volta sembra che tutto va bene perchè nn mi da errori solo che nn va il redirect. Ti incollo il nuovo codice per intero:

    <?php
    // Inizio Configurazione***
    //Indirizzo emai a cui inviare i msg
    $mailto = "[email protected]";
    //Oggetto della mail
    $subject = "Nuovo ordine";
    // Fine Configurazione****

    foreach($HTTP_POST_VARS as $key => $value) {
    $message .= $key . ': ' . $value;
    $message .= "\n";
    }
    if (@mail($mailto, $subject, $message)) {
    echo "<script type="text/javascript">
    <!--
    function doRedirect() { //funzione con il link alla pagina che si desidera raggiungere
    location.href = "xxxx://xxx.xxxxxxxxxx.it";
    }
    window.setTimeout("doRedirect()", 3500); //Fa partire il redirect dopo tot. secondi
    //-->
    </script>
    <h1>L' invio del messaggio è andato a buon fine</h1><br />"}
    ?>


  • User

    Scusa un altra cosa..non visualizza neanche il messaggio che è andato a buon fine..nn so perchè..mi sto impazzendo..cmq se nn ti dispiace mi puoi passare la pagina php che usi sul tuo sito per il form??Così vedo com'è..
    Ti ringrazio in anticipo!


  • User Attivo

    prima prova a dare un'occhiata a questo topic giorgiotave.it/forum/php-mysql/36154-elabora-form.html


  • User

    Guarda sicuramente sono io che sbaglio qualcosa ma nn so cosa..nn ci riesco proprio..ho fatto tantissimi tentativi..nel caso mi posti un nuovo codice, scritto da capo, che invia le informazioni del form e poi mi fa un redirect.
    Ciao e grazie!


  • User Attivo

    Guarda per il fatto che l'header("Location è perchè ci sono già degli output come ha detto Samyron 😄 Comunque sempre l'header dipende anche dal tipo di hosting che usi, per esempio altervista che offre spazio web gratis, supporta anche gli header sparsi, mentre aruba no...


  • User

    quindi dipende anche dall'hosting, scwd mi sapresti dare un codice con un solo header per farlo funzionare anche con il mio hosting??? Il mio hosting è TopHost. ciao e grazie!


  • User Attivo

    Guarda purtroppo parecchi non supportano la funzione dopo una stampa a video, quindi o provi a fare l'header prima di stampare a video qualcosa oppure bisogna provare ad avvicinarsi allo script in javascript postato da supercapocc :D:D:D