Contact form using Bootstrap 3.3.4

websilvia

Nuovo Utente
18 Giu 2007
5
1
3
Roma
salve a tutti, ho un problema bizzaro con un modulo di form di bootstrap per inviare email da sito:eek: (importante perchè responsive) che mi sta facendo impazzire da 2 giorni. Le email le invia con controllo e animazione carina, il problema deriva dal fatto che mi arrivano solo email contenenti caratteri mail nella casella di inserimento email (?!?) le altre con estensione diversa (tipo: nomeutente@virgilio.it) me le ritrovo come spam? qualcuno sa come risolvere il problema? graaaaaazie eventuale risposte :)
di seguito elenco del codice della Index e del contact- form (che controlla e invia pagina).
PHP:
(pagina index.html)



<!DOCTYPE html>

<html>

<head>

   <title>prova form 2 Contact form using Bootstrap 3.3.4</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 style="background-color: #7e7e7e">

<div class="row">

<div class="col-sm-6 col-sm-offset-3">

   <div class="well" style="margin-top: 10%;">

   <h3>Send me a message</h3>

   <form role="form" id="contactForm" data-toggle="validator" class="shake">

       <div class="row">

           <div class="form-group col-sm-6">

               <label for="name" class="h4">Name</label>

               <input type="text" class="form-control" id="name" placeholder="Enter name" required data-error="NEW ERROR MESSAGE">

               <div class="help-block with-errors"></div>

           </div>

           <div class="form-group col-sm-6">

               <label for="email" class="h4">Email</label>

               <input type="email" class="form-control" id="email" placeholder="Enter email" required>

               <div class="help-block with-errors"></div>

           </div>

       </div>

       <div class="form-group">

           <label for="message" class="h4 ">Message</label>

           <textarea id="message" class="form-control" rows="5" placeholder="Enter your message" required></textarea>

           <div class="help-block with-errors"></div>

       </div>

       <button type="submit" id="form-submit" class="btn btn-success btn-lg pull-right ">Submit</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>




pagina (form-process.php)


<?php


$errorMSG = "";


// NAME

if (empty($_POST["name"])) {

   $errorMSG = "Name is required ";

} else {

   $name = $_POST["name"];

}


// EMAIL

if (empty($_POST["email"])) {

   $errorMSG .= "Email is required ";

} else {

   $email = $_POST["email"];

}


// MESSAGE

if (empty($_POST["message"])) {

   $errorMSG .= "Message is required ";

} else {

   $message = $_POST["message"];

}




$EmailTo = "[email protected]";

$Subject = "New Message Received";


// prepare email body text

$Body = "";

$Body .= "Name: ";

$Body .= $name;

$Body .= "\n";

$Body .= "Email: ";

$Body .= $email;

$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;

   }

}


?>
Grazie dell'attenzione, e grazie per eventuali suggerimenti :)
 
Ultima modifica di un moderatore:
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strument
box inserisci.png

Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!

Grazie

Correggi i tuoi post
mi raccomando altrimenti sarò costretto a cancellare le discussioni

Te lo avevo già detto che il codice non si posta così
 
  • Like
Reactions: websilvia
me le ritrovo come spam? qualcuno sa come risolvere il problema? graaaaaazie eventuale risposte
Non stai utilizzando smtp ma mail, probabile che il problema deriva dalla mancanza spf - dkim - etc... Fai una prova utilizzando smpt e non mail, in quanto probabilmente la macchina viene identificata come localhost...
 
Grazie grazie Vs. risposte, (bel ripasso, thank's) in realtà il problema era su questa riga, (errore di concatenamento di stringhe) andava il punto (ovviamente) anzichè la virgola (bocciata!!! ) :)

questo il codice con la virgola per il "From:"( l'errore)
Codice:
// send email

$success = mail($EmailTo, $Subject, $Body, "From:".$email);

e questo il codice corretto
Codice:
// send email
$success = mail($EmailTo, $Subject, $Body. "From: " .$email);

per fortuna funziona, ora altro problema con i caratteri accentati (e non ne vuole sapere nemmeno con il solito
Codice:
<meta charset="utf-8" />
iniziale

Graaaaaazzzzie Vs. Risposte:D
 
  • Like
Reactions: MarcoGrazia
per fortuna funziona, ora altro problema con i caratteri accentati (e non ne vuole sapere nemmeno con il solito
Codice:
<meta charset="utf-8" />
iniziale

Graaaaaazzzzie Vs. Risposte:D
Ma dove lo metti?
Nella pagina dove sta il form? o nel testo di una email in html?
In ogni caso in UTF-8 devono essere: salvati i file che generano il tutto ( controlla l'editor che usi se sta salvando tutto in UTF senza BOM ) in questo caso anche tutto ciò che c'è nel POST arriverà in formato UTF.

HTML:
<meta charset="utf-8">
Indica ai browser che il testo che andrà a leggere è formattato in quel modo, ma se non lo è non può farci nulla, è come se ti facessero uno scherzo, passandoti una lettera e dicendoti che è in italiano, mentre invece il testo è in devengari, sai che ci capisci? ;-)
 
riscrivo qui ringraziando la soluzione che avete scritto:
l'ho inserito qui e funziona (invia i caratteri accentati)
Codice:
// MESSAGE
if (empty($_POST["message"])) {
    $errorMSG .= "Message is required ";
} else {
    $message = utf8_decode($_POST['message']);
}

Grazie e ancora grazie:)
 
Bene, funziona!
Ora ti consiglio di dare un'occhiata al manuale del PHP sulle funzioni Multi Byte, le cosiddette mb_ che permettono di modificare le stringhe in modo molto più accurato di quella che hai usata tu.
C'è solo un problema :D non sono abilitate di default, e prima di usarle è meglio controllare mediante phpinfo() sul server su cui si metterà il sito, cosa funziona e cosa no.
 
  • Like
Reactions: websilvia

Discussioni simili