Modulo PHP con campi Select

exposure

Nuovo Utente
29 Gen 2017
4
0
1
Ciao, ho un problema con un modulo contatti che contiene sia campi di testo che campi select..
Uso già un modulo contatti sul sito in questione e funziona.. fino a che si tratta di aggiungere campi o modificarli nessun problema.. ma se devo fare di più.. beh sono totalmente incapace!

Copio qui il codice php del modulo.. magari qualcuno mi aiuterà a capire come fare, anche per il futuro.
Online ho trovato qualche info e ci ho provato.. ma già so che sarà stracolmo di errori.. quindi non massacratemi!!
Non cerco qualcuno che mi sviluppi il codice ma che mi aiuti a svilupparlo insegnandomi almeno le basi..
Grazie!

PHP:
<?php

// Define some constants
define( "RECIPIENT_NAME", "" );
define( "RECIPIENT_EMAIL", "" );


// Read the form values
$success = false;
$firstName = isset( $_POST['firstname'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['firstname'] ) : "";

if(isset($_POST[['submit'])) {
    $domiciliazione = $_POST['domiciliazione'];
    
if(isset($_POST[['submit'])) {
    $ufficio = $_POST['ufficio'];

if(isset($_POST[['submit'])) {
    $materia = $_POST['materia'];

$indirizzo = isset( $_POST['indirizzo'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['indirizzo'] ) : "";

$città = isset( $_POST['città'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['città'] ) : "";

$cap = isset( $_POST['cap'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['cap'] ) : "";

$provincia = isset( $_POST['provincia'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['provincia'] ) : "";

$phone = isset( $_POST['phone'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['phone'] ) : "";

$mail = isset( $_POST['mail'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['mail'] ) : "";

$subject = isset( $_POST['subject'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['subject'] ) : "";

$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";

// If all values exist, send the email
if ( $firstName && $domiciliazione && $ufficio && $materia && $indirizzo && $città && $cap && $provincia && $phone && $mail && $subject && $message) {
  $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
  $headers = "From: " . $firstName . "" . $mail . " <" . $senderPhone . ">";
  $success = mail( $recipient, $message, $subject, $headers, $domiciliazione, $ufficio, $materia, $indirizzo, $città, $cap, $provincia);

  //Set Location After Successfull Submission
  header('Location: area-domiciliazioni-true.html');
}

else{
    //Set Location After Error
      header('Location: area-domiciliazioni-false.html');   
}

?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa, ma il codice che hai postato è un po' (per essere gentili) un caos, basterebbe sottoliniare che la funzione mail supporta solo 4 parametri e tu ne metti 11.
è tutto completamente da rifare
 

exposure

Nuovo Utente
29 Gen 2017
4
0
1
Si infatti io ho preso iil codice di un modulo contatti che ho funzionante e l'ho modificato.. non capendoci nulla ho inserito tutti i campi del modulo... come posso risolvere? potresti darmi una mano a capire come si fa? così almeno per la base di un modulo contatti posso vedermela da sola..
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti schematizzo
PHP:
<?php
if(isset($_POST['submit'])){//ti serve se form e php nella stessa pagina, se diverse non servirebbe
    define( "RECIPIENT_NAME", "pinco" );//qui dovrai mettere il nome
    define( "RECIPIENT_EMAIL", "<[email protected]>" );//e l'indirizzo del destinatario
    //poi devi decidere quali campi del form sono obbligatori o meno
    //io ti metto solo in nome e l'email del mittente, poi per gli altri ci pensi tu
    //per fare questo io uso una variabile che metto a vuoto inizialmente
    $errori="";
    if(empty(trim( $_POST['firstname']))){$errori.="il nome è obbligatorio<br />";}else{$nome=$_POST['firstname'];}
    $mail=filter_var($_POST['mail'], FILTER_SANITIZE_EMAIL);//ripulisco
    if(!filter_var($mail, FILTER_VELIDATE_EMAIL)){
        //l'indirizzo email non è valido
        $errori.="indirizzo email non valido<br />";
    }
    //e eventuali altri controlli che ti servono
    //e la lettura degli altri $_POST......
    //se $errori è rimasta vuota vuol dire che non ci sono sin qui errori
    if($errori==""){
        //quindi comincio a preparare l'email
        $subject=trim($_POST['subject']);
        $messaggio ="";//lo metto a vuoto per sicurezza
        //e comincio a riempirlo, nota che uso il concatenamento tra stinghe
        $messaggio .="nome: $nome\r\n";
        $messaggio .="domiciliazione $domiciliazione \r\n";
        //e continui a riempire $messaggio con tutto quello che ti serve...
        //il \r\n ti serve in quanto inviando in formato testo per andare a capo
        $messaggio .=$message;
        //prepari il destinatario
        $email_to=RECIPIENT_NAME.RECIPIENT_EMAIL;
        $header="replay to $mail\r\n";
        //e finalmente invii
        if(mail($email_to,$subject,$messaggio,$header)){
            //messaggio inviato
            //ringrazi e riinvii dove vuoi
            header( "refresh:5;url=../dove_vuoi.php" );
            echo "grazie di avermi contattato....";
        }else{
            //errore nell'invio, avvisi e rimandi sempre dove vuoi
            header( "refresh:5;url=../dove_vuoi.php" );
            echo "c'è stato un errore di trasmissione, riprova più tardi";
        }
    }else{
        //l'utente ha fatto degli errori, quindi lo avvisi e rimandi dove vuoi
        header( "refresh:5;url=../dove_vuoi.php" );
        echo $errori;
    }
    //nota il refresh:5 il messaggio rimane visibile per 5 secondi prima di essere rinviati a dove vuoi
}
?>
comunque questo è uno schema, butta giù qualcosa ed eventualmete posta se non funziona
ho notato comunque una cosa nello scripit che hai postato: attento all'apertura/chiusura delle parentesi graffe
 

exposure

Nuovo Utente
29 Gen 2017
4
0
1
ciao
ti schematizzo
PHP:
<?php
if(isset($_POST['submit'])){//ti serve se form e php nella stessa pagina, se diverse non servirebbe
    define( "RECIPIENT_NAME", "pinco" );//qui dovrai mettere il nome
    define( "RECIPIENT_EMAIL", "<[email protected]>" );//e l'indirizzo del destinatario
    //poi devi decidere quali campi del form sono obbligatori o meno
    //io ti metto solo in nome e l'email del mittente, poi per gli altri ci pensi tu
    //per fare questo io uso una variabile che metto a vuoto inizialmente
    $errori="";
    if(empty(trim( $_POST['firstname']))){$errori.="il nome è obbligatorio<br />";}else{$nome=$_POST['firstname'];}
    $mail=filter_var($_POST['mail'], FILTER_SANITIZE_EMAIL);//ripulisco
    if(!filter_var($mail, FILTER_VELIDATE_EMAIL)){
        //l'indirizzo email non è valido
        $errori.="indirizzo email non valido<br />";
    }
    //e eventuali altri controlli che ti servono
    //e la lettura degli altri $_POST......
    //se $errori è rimasta vuota vuol dire che non ci sono sin qui errori
    if($errori==""){
        //quindi comincio a preparare l'email
        $subject=trim($_POST['subject']);
        $messaggio ="";//lo metto a vuoto per sicurezza
        //e comincio a riempirlo, nota che uso il concatenamento tra stinghe
        $messaggio .="nome: $nome\r\n";
        $messaggio .="domiciliazione $domiciliazione \r\n";
        //e continui a riempire $messaggio con tutto quello che ti serve...
        //il \r\n ti serve in quanto inviando in formato testo per andare a capo
        $messaggio .=$message;
        //prepari il destinatario
        $email_to=RECIPIENT_NAME.RECIPIENT_EMAIL;
        $header="replay to $mail\r\n";
        //e finalmente invii
        if(mail($email_to,$subject,$messaggio,$header)){
            //messaggio inviato
            //ringrazi e riinvii dove vuoi
            header( "refresh:5;url=../dove_vuoi.php" );
            echo "grazie di avermi contattato....";
        }else{
            //errore nell'invio, avvisi e rimandi sempre dove vuoi
            header( "refresh:5;url=../dove_vuoi.php" );
            echo "c'è stato un errore di trasmissione, riprova più tardi";
        }
    }else{
        //l'utente ha fatto degli errori, quindi lo avvisi e rimandi dove vuoi
        header( "refresh:5;url=../dove_vuoi.php" );
        echo $errori;
    }
    //nota il refresh:5 il messaggio rimane visibile per 5 secondi prima di essere rinviati a dove vuoi
}
?>
comunque questo è uno schema, butta giù qualcosa ed eventualmete posta se non funziona
ho notato comunque una cosa nello scripit che hai postato: attento all'apertura/chiusura delle parentesi graffe


Nulla.. non riesco.. ho provato a modificare secondo i commenti che mi hai inserito nel codice.. almeno non mi da più errore php come mi diceva prima (riga 9 e poi riga 10).. ti copio il codice che ho modificato... un'altra domanda.. ma i campi select vengono trasmessi bene in email? Con il codice scritto così vengono inviate le scelte del menu a tendina?

PHP:
<?php
{
    define( "RECIPIENT_NAME", "nome" );//qui dovrai mettere il nome
    define( "RECIPIENT_EMAIL", "mail" );//e l'indirizzo del destinatario
    //poi devi decidere quali campi del form sono obbligatori o meno
    //io ti metto solo in nome e l'email del mittente, poi per gli altri ci pensi tu
    //per fare questo io uso una variabile che metto a vuoto inizialmente
   
    $mail=filter_var($_POST['mail'], FILTER_SANITIZE_EMAIL);//ripulisco
    if(!filter_var($mail, FILTER_VELIDATE_EMAIL)){
        //l'indirizzo email non è valido
        $errori.="indirizzo email non valido<br />";
    }
    //e eventuali altri controlli che ti servono
    //e la lettura degli altri $_POST......
    //se $errori è rimasta vuota vuol dire che non ci sono sin qui errori
    if($errori==""){
        //quindi comincio a preparare l'email
        $subject=trim($_POST['subject']);
        $messaggio ="";//lo metto a vuoto per sicurezza
        //e comincio a riempirlo, nota che uso il concatenamento tra stinghe
        $messaggio .="nome: $nome\r\n"; "domiciliazione $domiciliazione \r\n"; "ufficio $ufficio \r\n"; "materia $materia \r\n"; "indirizzo $indirizzo \r\n"; "città $città \r\n"; "cap $cap \r\n"; "provincia $provincia \r\n"; "phone $phone \r\n"; "mail $mail \r\n"; "subject $subject \r\n"; "privacy $privacy \r\n";

        //e continui a riempire $messaggio con tutto quello che ti serve...
        //il \r\n ti serve in quanto inviando in formato testo per andare a capo
        $messaggio .=$message;
        //prepari il destinatario
        $email_to=RECIPIENT_NAME.RECIPIENT_EMAIL;
        $header="replay to $mail\r\n";
        //e finalmente invii
        if(mail($email_to,$subject,$messaggio,$header)){
            //messaggio inviato
            //ringrazi e riinvii dove vuoi
            header('Location: contatti-true.html');
        }else{
            //errore nell'invio, avvisi e rimandi sempre dove vuoi
            header('Location: contatti-false.html');
        }
    }else{
        //l'utente ha fatto degli errori, quindi lo avvisi e rimandi dove vuoi
        header( 'Location: contatti-false.html' );
        echo $errori;
    }
    //nota il refresh:5 il messaggio rimane visibile per 5 secondi prima di essere rinviati a dove vuoi
}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
cosa intendi per "i campi select vengono trasmessi bene in email"?
comunque si il value della otpion viene trasmesso come qualsiasi testo
 

exposure

Nuovo Utente
29 Gen 2017
4
0
1
Nel senso.. con la stringa che ti copio qui viene mandata per email la voce scelta nella casella a discesa?

PHP:
$messaggio .="nome: $nome\r\n"; "domiciliazione $domiciliazione \r\n"; "ufficio $ufficio \r\n"; "materia $materia \r\n"; "indirizzo $indirizzo \r\n"; "città $città \r\n"; "cap $cap \r\n"; "provincia $provincia \r\n"; "phone $phone \r\n"; "mail $mail \r\n"; "subject $subject \r\n"; "privacy $privacy \r\n";

..Cmq non invia la mail.. volendo aggiungere solo un campo select al modulo che già ho funzionante, come dovrei scrivere? come il codice che ho copiato sopra oppure c'è un altro metodo? aggiungendo poi alla fine nel messaggio di invio che voglio visualizzare in mail la scelta.. così come mi hai scritto su?
Non ci capisco nulla... ;/
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ma cosa hai fatto? se vuoi che tutti quei dati siano compresi nella variabile $messaggio
PHP:
$messaggio .="nome: $nome\r\n domiciliazione $domiciliazione \r\nufficio $ufficio \r\n materia $materia \r\n
 indirizzo $indirizzo \r\n città $città \r\n cap $cap \r\n provincia $provincia \r\n phone $phone \r\n mail $mail \r\n subject $subject \r\n privacy $privacy \r\n";
non capisco poi perche tu metta es. la variabile $subject dentro il messaggio
ricorda che per php quello che hai fatto ...";"... corrisponde alla fine di una istruzione
se intendevi fare un concatenamente al posto di ; dovevi mettere ..."."..., ma è un lavoro in più
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Problemi con modulo upload video php (help!) PHP 0
G Inserimento array proveniente da un modulo di registrazione con PHP e MySQL PHP 6
M Problemi con la configurazione di Php 4.2.3 come modulo Apache 1.3.27 PHP 0
L Ricezione dei dati su file php da modulo html PHP 6
ANDREA20 [PHP] Modulo email invio PHP 5
ANDREA20 [PHP] form modulo contattp PHP 5
A [PHP] Modulo mail PHP 3
P modulo option php PHP 1
T [PHP] modulo inserimento in DB e apostrofi... PHP 1
D [WordPress] [PHP] Pulsante per auto riempire i campi in un modulo WordPress 1
E [PHP] creazioni nuove variabili per modulo di stampa PHP 1
Tony Recchia [PHP] Modulo mail HTML PHP 4
L PHP e modulo PDF PHP 1
ecosito [HTML ][PHP] rendere attivo il modulo contatti di un template HTML e CSS 9
R [PHP] [HTML] Creare script invio modulo contatti PHP 2
L Problema Bootstrap Modulo Email + php PHP 1
MarcoGrazia [PDO][PHP[MySQL] Piccolo modulo di ricerca in un sito tramite l'operatore LIKE Snippet PHP 1
ecosito Collegare un modulo contatti PHP su un modulo contatti HTML HTML e CSS 1
Z creazione modulo e pagina invio php per invio dati al db PHP 2
N Aiuto php : Modulo Mail non funzionante - Dove sbaglio ? PHP 5
P PHP modulo ricerca e ordine alfabetico PHP 5
G Visualizzazion modulo di ricerca in PHP e MySql PHP 0
SolidSnake4 modulo supporto lingue php PHP 0
M Sto cercando questo modulo per Php nuke o compatibili.... PHP 0
I modulo contatti PHP 1
zorro modulo di registrazione: funziona ma non sempre PHP 2
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
R passaggio variabili tra modulo genitore a figlio jQuery 3
C prestashop paragamento contrassegno aiuto modulo E-Commerce 0
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
B Errore PDOException: SQLSTATE[42000] modulo aggiuntivo Drupal CMS (Content Management System) 0
Eugene [Joomla] Problemi con modulo per strutture alberghiere JHotelreservation starter Joomla 6
L [ASP.Net] Realizzare modulo contatti PopUp ! ASP.NET 1
K Joomla: Modulo contatti in SP simple portfolio Joomla 0
F [HTML] Modulo d'ordine che arriva tramite email editabile ed inviabile. HTML e CSS 6
giuseppe_123 [Magento] Creazione modulo statico sotto header Magento 0
zorro modulo di iscrizione PHP 5
deleran [HTML] Modulo di ricerca adobe muse Windows e Software 7
G Modulo PostePay E-Commerce 1
zorro Modulo login PHP 13
Benix89 Modulo per pagamento con la risposta ad alcune domande Magento 1
Benix89 Modulo per pagamento con la risposta ad alcune domande PHP 2
C modulo tipo banner CMS (Content Management System) 0
asevenx Realizzare modulo per selezionare elementi da una lista PHP 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
C Problemi con l'invio di un modulo web PHP 5
M Form dinamico in modulo nella pagina HTML HTML e CSS 2
N Input html, modulo salvato HTML e CSS 6
A Modulo custom Drupal e applicazione java CMS (Content Management System) 0
A Compilazione modulo pdf o word con dati estratti da db PHP 2

Discussioni simili