- Home
- Categorie
- Coding e Sistemistica
- PHP
- Controllo campi in un form email
-
Controllo campi in un form email
Ciao a tutti, ho un problemino con dei controlli in una mail, vi spiego direttamente postandovi il codice
[php]
<?
// Connessione al DB
require 'connessione/Config.php';
require 'connessione/Connect.php';
// Genera un boundary
$mail_boundary = "=NextPart" . md5(uniqid(time()));
if(isset($_POST['mail']))
{
$mittente=trim($_POST['mail']);
$nome=trim($_POST['cognome']);
$messaggio=trim(nl2br($_POST['richiesta']));if(get_magic_quotes_gpc())
{
$mittente=stripslashes($mittente);
$nome=stripslashes($nome);
$messaggio=stripslashes($messaggio);
}
$mittente=htmlspecialchars($mittente);
$nome=htmlspecialchars($nome);
$messaggio=htmlspecialchars($messaggio);$mittente=mysql_real_escape_string($mittente);
$nome=mysql_real_escape_string($nome);
$messaggio=mysql_real_escape_string($messaggio);// inserire mail destinatario
$to = "pippochiocciolalibero.it";
// Oggetto della mail
$subject = "Informazioni dal sito xxx";
// inserire mail mittente
$sender = $mittente;$headers = "From: $sender\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative;\n\tboundary="$mail_boundary"\n";
$headers .= "X-Mailer: PHP " . phpversion();$testata = "Questo è un messaggio di risposta al tuo annuncio pubblicato sul Sito xxx.it";
$html_msg = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
<font face = 'Impact' size = '3'>
$testata
</font><br><br>
<font face = 'Comic Sans MS, Verdana' size = '2'>
<b>Informazioni sul richiedente</b><br>
Nome: $nome<br>
Indirizzo e-mail: $mittente<br><br>
<b>Messaggio</b><br>
$messaggio
</font><br>
</BODY>
</HTML>";$msg .= "\n--$mail_boundary\n";
$msg .= "Content-Type: text/html; charset="iso-8859-1"\n";
$msg .= "Content-Transfer-Encoding: 8bit\n\n";
$msg .= $html_msg; // aggiungi il messaggio in formato HTML*/// Boundary di terminazione multipart/alternative
$msg .= "\n--$mail_boundary--\n";// Imposta il Return-Path (funziona solo su hosting Windows)
ini_set("sendmail_from", $sender);// Invia il messaggio, il quinto parametro "-f$sender" imposta il Return-Path su hosting Linux
if (mail($to, $subject, $msg, $headers, "-f$sender"))
{ echo "Email inviata correttamente"; } else { echo "Email non inviata"; }}
?>
[/php]
nel messaggio ho scritto
l'importante è
che funzioni
ciao
come output ho avutol\'importante è<br />\r\nche funzioni<br />\r\nCiao
mentre se modifico il codice in questo modo
[php]
<?
// Connessione al DB
require 'connessione/Config.php';
require 'connessione/Connect.php';
// Genera un boundary
$mail_boundary = "=NextPart" . md5(uniqid(time()));
if(isset($_POST['mail']))
{
$mittente=trim($_POST['mail']);
$nome=trim($_POST['cognome']);
$messaggio = trim(stripslashes(nl2br($_POST['richiesta'])));// inserire mail destinatario
$to = "pippochiocciolalibero.it";
// Oggetto della mail
$subject = "Informazioni dal sito xxx";
// inserire mail mittente
$sender = $mittente;$headers = "From: $sender\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative;\n\tboundary="$mail_boundary"\n";
$headers .= "X-Mailer: PHP " . phpversion();$testata = "Questo è un messaggio di risposta al tuo annuncio pubblicato sul Sito xxx.it";
$html_msg = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
<font face = 'Impact' size = '3'>
$testata
</font><br><br>
<font face = 'Comic Sans MS, Verdana' size = '2'>
<b>Informazioni sul richiedente</b><br>
Nome: $nome<br>
Indirizzo e-mail: $mittente<br><br>
<b>Messaggio</b><br>
$messaggio
</font><br>
</BODY>
</HTML>";$msg .= "\n--$mail_boundary\n";
$msg .= "Content-Type: text/html; charset="iso-8859-1"\n";
$msg .= "Content-Transfer-Encoding: 8bit\n\n";
$msg .= $html_msg; // aggiungi il messaggio in formato HTML*/// Boundary di terminazione multipart/alternative
$msg .= "\n--$mail_boundary--\n";// Imposta il Return-Path (funziona solo su hosting Windows)
ini_set("sendmail_from", $sender);// Invia il messaggio, il quinto parametro "-f$sender" imposta il Return-Path su hosting Linux
if (mail($to, $subject, $msg, $headers, "-f$sender"))
{ echo "Email inviata correttamente"; } else { echo "Email non inviata"; }}
?>
[/php]
scrivendo il testo uguale a quello sopra ottengo nella maill'importante è che funzioni ciao
cioè il testo formattato bene.
La domanda da porvi è questa: secondo voi è giusto che nel codice php manchi questa parte
[php]
if(get_magic_quotes_gpc())
{
$mittente=stripslashes($mittente);
$nome=stripslashes($nome);
$messaggio=stripslashes($messaggio);
}
$mittente=htmlspecialchars($mittente);
$nome=htmlspecialchars($nome);
$messaggio=htmlspecialchars($messaggio);$mittente=mysql_real_escape_string($mittente);
$nome=mysql_real_escape_string($nome);
$messaggio=mysql_real_escape_string($messaggio);
[/php]
così facendo potrei incorrere in pericoli tipo injection?Grazie a tutti
-
la differenza sta nel fatto che la mail non la mandi in formato html e perciò non riconosce i tag html come <br /> tutto qui
comunque stiamo parlando di una mail, quindi se non la scrivi in un db per me ulteriori controlli sono solo un di più, ovvio dipende dal contesto.
-
Ciao, è vero non la salvo nel db, ma...
per puro caso un giorno mi dovrebbe servire come andrebbe risolto il problema?la differenza sta nel fatto che la mail non la mandi in formato htm
scusami tanto allora questo codice a cosa serve
$msg .= "\n--$mail_boundary\n"; $msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; $msg .= "Content-Transfer-Encoding: 8bit\n\n"; $msg .= $html_msg; // aggiungi il messaggio in formato HTML*/
Ciao e grazie
-
Hai associato una stringa di testo ad una variabile,per far sì che i comandi
html devono essere trasformati da php devono essere preceduti da
[php]
echo "<br />";
[/php]
questo è un comando che viene interpretato come html;comunque,dico la
mia,avrei impostato la pagina iniziale come xhtml e poi successivamente,
dove necessario, avrei usato php con i tag
[php]
...pagina iniziale xhtml con le dichiarazioni strict o transitional
inizio pagina php dentro xhtml
<?php
e quì metti il codice della mail da inviare
chiudo php
?>
[/php]
e quì ricomincia xhtml o chiude.
-
Grazie per la spiegazione
seguirò il tuo consiglio, alla prossima