Autore Topic: mdulo contatti  (Letto 396 volte)

Offline Marco Zarpellon

  • Esploratore
  • **
  • Post: 55
  • Sesso: Maschio
    • Mostra profilo
mdulo contatti
« il: 11 Feb 2018, 17:20:24 »
ciao ho fatto un modulo contatti con dei campi in php questo modulo devo mandare una mail con elenco dei campi funziona tutto mai quando devo inserire il campo select nella mail nn è visibile
sapete il perchè?????
http://www.mylifemarco.it/formsia.html
ecco i tre file interessati mi potete dare una mano grazie
 
Codice: [Seleziona]
<!DOCTYPE html>
<html>
<head>
    <title>Modulo Contatti</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta charset="utf-8">
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/animate.css">
</head>
<body>
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
    <div class="well" style="margin-top: 10%;">
    <h3>Invia una richiesta</h3>
    <form role="form" id="contactSIA" data-toggle="validator" class="shake">
        <div class="row">
            <div class="form-group col-sm-3">
                <label for="name" class="h4">Name</label>
                <input type="text" class="form-control" id="name" placeholder="Inserisci Nome" required>
            </div>
       
            <div class="form-group col-sm-3">
                <label for="cognome" class="h4">Cognome</label>
                <input type="text" class="form-control" id="cognome" placeholder="Inserisci Cognome" required>             
            </div>
       
            <div class="form-group col-sm-6">
                <label for="email" class="h4">Email</label>
                <input type="email" class="form-control" id="email" placeholder="Inserisci Email" required>
            </div>
            <div class="form-group col-sm-3">
                <label for="telefono" class="h4">Telefono</label>
                <input type="text" class="form-control" id="telefono" placeholder="Inserisci numero di telefono" required>
            </div>
           
            <div class="form-group col-sm-9">
                <label for="prodotto" class="h4">Prodotto</label>
                <select type="text" class="form-control" id="select" required>
                <option value="volvo">Volvo</option>
                <option value="saab">Saab</option>
                <option value="opel">Opel</option>
                <option value="audi">Audi</option>
            </select>
            </div>
           
        </div>
        <div class="form-group">
            <label for="message" class="h4 ">Messaggio</label>
            <textarea id="message" class="form-control" rows="5" placeholder="Di cosa hai bisogno???" required></textarea>
        </div>
       
        <button type="submit" id="form-submit" class="btn btn-success btn-lg pull-right ">Invia Richiesta</button>
        <div id="msgSubmit" class="h3 text-center hidden"></div>
        <div class="clearfix"></div>
    </form>
    </div>
</div>
</div>
</body>
<script  type="text/javascript" src="js/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="js/validator.min.js"></script>
<script type="text/javascript" src="js/form-scripts.js"></script>
</html>


Codice: [Seleziona]
$("#contactSIA").validator().on("submit", function (event) {
    if (event.isDefaultPrevented()) {
        // handle the invalid form...
        formError();
        submitMSG(false, "I campi sono tutti obbligatori");
    } else {
        // everything looks good!
        event.preventDefault();
        submitForm();
    }
});


function submitForm(){
    // Initiate Variables With Form Content
    var name = $("#name").val();
    var cognome = $("#cognome").val();
    var email = $("#email").val();
    var telefono = $("#telefono").val();
    var prodotto = $("#prodotto").val();
    var message = $("#message").val();

    $.ajax({
        type: "POST",
        url: "php/form-contatti-sia.php",
        data: "name=" + name + "&cognome="+ cognome + "&email=" + email + "&telefono=" + telefono + "&prodotto=" + prodotto + "&message=" + message,
        success : function(text){
            if (text == "success"){
                formSuccess();
            } else {
                formError();
                submitMSG(false,text);
            }
        }
    });
}

function formSuccess(){
    $("#contactSIA")[0].reset();
    submitMSG(true, "Messaggio inviato")
}

function formError(){
    $("#contactSIA").removeClass().addClass('shake animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
        $(this).removeClass();
    });
}

function submitMSG(valid, msg){
    if(valid){
        var msgClasses = "h3 text-center tada animated text-success";
    } else {
        var msgClasses = "h3 text-center text-danger";
    }
    $("#msgSubmit").removeClass().addClass(msgClasses).text(msg);
}



Codice: [Seleziona]
<?php

$errorMSG 
"";

// NAME
if (empty($_POST["name"])) {
    
$errorMSG "Name is required ";
} else {
    
$name $_POST["name"];
}

// CUGNOME
if (empty($_POST["cognome"])) {
    
$errorMSG "Cognome is required ";
} else {
    
$cognome $_POST["cognome"];
}

// EMAIL
if (empty($_POST["email"])) {
    
$errorMSG .= "Email is required ";
} else {
    
$email $_POST["email"];
}
// TELEFONO
if (empty($_POST["telefono"])) {
    
$errorMSG .= "Telefono is required ";
} else {
    
$telefono $_POST["telefono"];
}

// PRODOTTO
if (empty($_POST["prodotto"])) {
    
$errorMSG .= "Prodotto is required ";
} else {
    
$prodotto $_POST["prodotto"];
}


// MESSAGE
if (empty($_POST["message"])) {
    
$errorMSG .= "Message is required ";
} else {
    
$message $_POST["message"];
}


$EmailTo "m.zarpellon30@gmail.com";
$Subject "Richiesta informazioni";

// prepare email body text
$Body "";
$Body .= "Name: ";
$Body .= $name;
$Body .= "\n";
$Body .= "Cognome: ";
$Body .= $cognome;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $email;
$Body .= "\n";
$Body .= "Telefono: ";
$Body .= $telefono;
$Body .= "\n";
$Body .= "Prodotto: ";
$Body .= $prodotto;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $message;
$Body .= "\n";

// send email
$success mail($EmailTo$Subject$Body"From:".$email);

// redirect to success page
if ($success && $errorMSG == ""){
   echo 
"success";
}else{
    if(
$errorMSG == ""){
        echo 
"Something went wrong :(";
    } else {
        echo 
$errorMSG;
    }
}

?>



Offline Alex21

  • Appassionato
  • ***
  • Post: 573
    • Mostra profilo
    • servizi web
Re:mdulo contatti
« Risposta #1 il: 11 Feb 2018, 19:53:04 »
Ciao, non mi sembra che sia un sito Joomla, comunque penso che il mancato funzionamento sia nell' id del <select>.
<select type="text" class="form-control" id="select" required>.
Quando leggi il valore con php tenti di recuperare $prodotto = $_POST["prodotto"]; ma 'prodotto' non viene mai inviato. L'id si chiama 'select'. jQuery prova ad inviare un 'prodotto' che non esiste.
Potrebbe non funzionare lo stesso anche con l'id giusto perché <select> non funziona esattamente come un campo <input> e, sbaglierò, ma non mi sembra che ammetta un tipo 'text'.
Una cosa che complica, anche, è il fatto che gli elementi del form sono senza attributo 'name', che sarebbe quello classico per i forms. E' vero che jQuery corregge la cosa utilizzando l' id ma bisogna vedere cosa succede con il tag <select>. Cioè jQuery invia var prodotto = $("#prodotto").val();  ma è necessario verificare cosa è .val per jQuery che purtroppo conosco pochino pochino.
Un certo risparmio di codice l'avresti mettendo a tutti i tag html che devono essere inviati un attributo 'name' per poi leggerlo successivamente da php senza passare per jQuery ma inviando il form con un normale submit html.
Un avviso: se non filtri con php i campi in arrivo il form è perforabile come un groviera.
Bye!


Offline Marco Zarpellon

  • Esploratore
  • **
  • Post: 55
  • Sesso: Maschio
    • Mostra profilo
Re:mdulo contatti
« Risposta #2 il: 11 Feb 2018, 20:01:11 »
ciao sono dento alla sezione nn solo joomla comunque verifico dopo vi dico

Offline Marco Zarpellon

  • Esploratore
  • **
  • Post: 55
  • Sesso: Maschio
    • Mostra profilo
Re:mdulo contatti
« Risposta #3 il: 11 Feb 2018, 20:47:01 »
ciao ho risolto
Codice: [Seleziona]

<div class="form-group col-sm-9">
                <label for="prodotto" class="h4">Prodotto</label>
                <select class="form-control" id="prodotto" required>
                <option value="Seleziona">Seleziona.....</option>
                <option value="volvo">Volvo</option>
                <option value="saab">Saab</option>
                <option value="opel">Opel</option>
                <option value="audi">Audi</option>
            </select>
            </div>
mi spieghi come vare grazie non lo uso spesso php e nn da molto grazie
Un avviso: se non filtri con php i campi in arrivo il form è perforabile come un groviera.
Bye!

Codice: [Seleziona]
<!DOCTYPE html>
<html>
<head>
    <title>Modulo Contatti</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta charset="utf-8">
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/animate.css">
</head>
<body>
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
    <div class="well" style="margin-top: 10%;">
    <h3>Invia una richiesta</h3>
    <form role="form" id="contactSIA" data-toggle="validator" class="shake">
        <div class="row">
            <div class="form-group col-sm-3">
                <label for="name" class="h4">Name</label>
                <input type="text" class="form-control" id="name" placeholder="Inserisci Nome" required>
            </div>
       
            <div class="form-group col-sm-3">
                <label for="cognome" class="h4">Cognome</label>
                <input type="text" class="form-control" id="cognome" placeholder="Inserisci Cognome" required>             
            </div>
       
            <div class="form-group col-sm-6">
                <label for="email" class="h4">Email</label>
                <input type="email" class="form-control" id="email" placeholder="Inserisci Email" required>
            </div>
            <div class="form-group col-sm-3">
                <label for="telefono" class="h4">Telefono</label>
                <input type="text" class="form-control" id="telefono" placeholder="Inserisci numero di telefono" required>
            </div>
           
            <div class="form-group col-sm-9">
                <label for="prodotto" class="h4">Prodotto</label>
                <select type="text" class="form-control" id="select" required>
                <option value="volvo">Volvo</option>
                <option value="saab">Saab</option>
                <option value="opel">Opel</option>
                <option value="audi">Audi</option>
            </select>
            </div>
           
        </div>
        <div class="form-group">
            <label for="message" class="h4 ">Messaggio</label>
            <textarea id="message" class="form-control" rows="5" placeholder="Di cosa hai bisogno???" required></textarea>
        </div>
       
        <button type="submit" id="form-submit" class="btn btn-success btn-lg pull-right ">Invia Richiesta</button>
        <div id="msgSubmit" class="h3 text-center hidden"></div>
        <div class="clearfix"></div>
    </form>
    </div>
</div>
</div>
</body>
<script  type="text/javascript" src="js/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="js/validator.min.js"></script>
<script type="text/javascript" src="js/form-scripts.js"></script>
</html>


« Ultima modifica: 11 Feb 2018, 20:49:15 da Marco Zarpellon »

Offline Alex21

  • Appassionato
  • ***
  • Post: 573
    • Mostra profilo
    • servizi web
Re:mdulo contatti
« Risposta #4 il: 12 Feb 2018, 12:50:47 »
ciao ho risolto

... mi spieghi come vare grazie non lo uso spesso php e nn da molto grazie
Se ti riferisci ai filtri faccio così (qualcuno farà certo di meglio):
Codice: [Seleziona]
<?php
//   comuni POST e GET
 
$input filter_input(INPUT_POST'Cognome');
 
 if (!isset(
$input)) {   
   
$errorMSG "Cognome is required ";
 }
 else {
   
$cognome $input;
 }
 
 
 
//   email
$input filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);


if (!isset(
$input)) {   
   
$errorMSG "email is required ";
}


// Convalida 
if (filter_var($inputFILTER_VALIDATE_EMAIL)) {
    
$email $input;

else {
   
$errorMSG "Email on valida ";
Joomla ha il suo metodo  $jinput  - vedi documentazione - però vista la frequenza degli aggiornamenti sono incerto se adoperarlo o invece fare con php nativo che funziona sempre.
Ciao!
« Ultima modifica: 12 Feb 2018, 12:52:32 da Alex21 »

 

Torna su