• User Attivo

    Errore di reindirizzamento (?) in script formmail

    Ciao ragazzi! 🙂

    Ho trovato nel web uno script gratuito per creare un formmail, costituito da 2 file: send.php e contatti.fdt, più il codice html del form, editato da me per l'aggiunta di nuovi campi. Il problema è che, all'invio dei dati, invece di funzionare, l'utente viene indirizzato alla pagina send.php e chiaramente io non ricevo nulla per email.

    Vi riporto i codici dei tre file:

    send.php

    <?php
    
    /***  Settaggio variabili globali PHP/4.1.2  ***/
    if (!isset($_SERVER)) {$_SERVER = $HTTP_SERVER_VARS;}
    if (!isset($_GET)) {$_GET = $HTTP_GET_VARS;}
    if (!isset($_POST)) {$_POST = $HTTP_POST_VARS;}
    if (!isset($_COOKIE)) {$_COOKIE = $HTTP_COOKIE_VARS;}
    if (!isset($_FILES)) {$_FILES = $HTTP_POST_FILES;}
    if (!isset($_ENV)) {$_ENV = $HTTP_ENV_VARS;}
    if (!isset($_SESSION)) {$_SESSION = $HTTP_SERVER_VARS;}
    
    /***  Impostazione dei messaggi di errore (solo per testing)  ***/
    error_reporting(0);
    
    /***  Lettura del template  ***/
    $template_code = implode("",file($_POST['template_file']));
    
    /***  Sostituzione dei valori  ***/
    $parsed = preg_replace('/(<!-- )(\w+)( -->)/e', '$_POST[\'$2\']', $template_code);
    
    /***  Lettura dei valori  ***/
    $splitted = explode("#-#-#-#",$parsed);
    $vars = array(
    "from_name" => trim($splitted[0]),
    "from_mail" => trim($splitted[1]),
    "to_name" => trim($splitted[2]),
    "to_mail" => trim($splitted[3]),
    "reply_name" => trim($splitted[4]),
    "reply_mail" => trim($splitted[5]),
    "subject" => trim($splitted[6]),
    "body" => $splitted[7],
    "sent" => $splitted[8]
    );
    
    /***  Controllo dei campi  ***/
    if (($vars['from_name'] == "") || ($vars['from_mail'] == "") || ($vars['to_name'] == "") || ($vars['to_mail'] == "") || ($vars['reply_name'] == "") || ($vars['reply_mail'] == "") || ($vars['subject'] == "") || ($vars['body'] == "")) {exit();}
    
    /***  Scrittura degli headers SMTP  ***/
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= "From: \"".$vars['from_name']."\" <".$vars['from_mail'].">\r\n";
    $headers .= "To: \"".$vars['to_name']."\" <".$vars['to_mail'].">\r\n";
    $headers .= "Reply-To: \"".$vars['reply_name']."\" <".$vars['reply_mail'].">\r\n";
    $headers .= "X-Mailer: Scitrek PHP Mailer";
    
    /***  Invio della mail e operazioni successive  ***/
    if (mail($vars['to_mail'],$vars['subject'],$vars['body'],$headers)) {
        if (stristr($vars['sent'],"goto=")) {
    
            $goto = str_replace("goto=","",trim($vars['sent']));
    
            header("Location: ".$goto);
    
        }
    
        else {echo $vars['sent'];}
    }
    
    ?>
    ```**contatti.fdt
    
    **```
    <!-- nome -->
    #-#-#-#
    <!-- mail -->
    #-#-#-#
    Qui ho scritto il nome del mio sito
    #-#-#-#
    Qui ho scritto la mia email
    #-#-#-#
    Recensioni
    #-#-#-#
    qui ho riscritto la mia email
    #-#-#-#
    Al caro <!-- nome -->
    #-#-#-#
    Ciao <!-- nome -->, benvenuto! Questo messaggio e' stato inviato a <!-- mail -->.
    #-#-#-#
    Correttamente inviato a qui ho scritto il mio nome
    ```**codice form
    
    **```
    <form name="recensioni" action="send.php" method="post">
    <input type="hidden" name="template_file" value="contatti.fdt"></input>
    Richiedi recensione<input type="radio" name="richiedi/invia" value="richiedi"></input>
    Invia recensione<input type="radio" name="richiedi/invia" value="invia"></input>
    <br><br>
    La tua richiesta/recensione riguarda <select name="tipologia">
    <option value="categoria1" selected="selected">categoria1</option>
    <option value="categoria2">categoria2</option>
    <option value="categoria3">categoria3</option>
    <option value="categoria4">categoria4</option>
    <option value="altro">Altro</option>
    </select>
    <br><br>
    La tua mail <input name="mail" type="text" value="scrivi una mail reale" maxlength="200"></input>
    <br><br>
    Il tuo nome <input name="nome" type="text" value="nome e cognome" maxlength="200"></input>
    <br><br>
    Oggetto <input name="oggetto" type="text" value="scrivi un titolo" maxlength="200"></input>
    <br><br>
    SCRIVI RECENSIONE:
    <br>
    <textarea rows="12" name="recensione" cols="61"></textarea>
    <br><br>
    Accetti  di assumerti tutta la responsabilità dei contenuti da te inviati
    <br>
    SI <input type="radio" name="accetto/declino" value="si"></input>
    NO<input type="radio" name="accetto/declino" value="no"></input>
    <br>
    <input type="submit" value="Invia" name="invia"></input>
    <input type="reset" value="Reimposta" name="reimposta"></input>
    </form>
    ```Se può essere utile posto il codice del form originale che ho trovato nella cartella scaricata.  
    Non ho idea di quale possa essere il problema; i file stanno tutti nella stessa directory e i codici che ho postato sono identici a quelli che ho uppato (tranne le scritte in blu ovviamente).
    
    Grazie per gli eventuali consigli!
    A presto ;)

  • User Attivo

    Quando all'invio del form ti porta alla pagina send.php, viene visualizzata una pagina bianca oppure il codice php? Nel primo caso è probabile che si sia verificato un errore, ma la clausola error_reporting(0) dice a PHP di non visualizzare nulla. Per far visualizzare sempre tutti gli errori devi mettere error_reporting(E_ALL) Se invece al send vendi il codice php significa che il server non supporta PHP.


  • User Attivo

    Ciao Inu 🙂

    Grazie della risposta. La pagina alla quale mi indirizzava (send.php) era bianca. Comunque mentre aspettavo una risposta, ho girato un po sul forum ed ho scoperto due cose sensazionali:

    1. Qui sono presenti guide per creare funzioni in php davvero utili e facili da installare, talmente comode che ho buttato via quello script per usarne uno trovato qui. 🙂

    2. Ho compreso il valore della funzione "cerca" all'interno del forum adesso! 😄

    Inoltre, mentre editavo il codice (la guida alla quale mi riferisco è questa giorgiotave.it/forum/php-mysql/58047-esempio-gestione-di-un-form-mail-semplice.html) ho imparato nuove cose su questo linguaggio.

    Comunque mi piacerebbe capire ugualmente dov'era l'errore, perchè rileggendo i codici postati non riesco a capire dove sbagliavo. :mmm: