- Home
- Categorie
- Coding e Sistemistica
- PHP
- Errore di reindirizzamento (?) in script formmail
-
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 ;)
-
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.
-
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:
-
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.
-
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.
-