
Originariamente inviata da
m4rko80
Ciao, ho modificato così
Codice PHP:
<?phpinclude 'functions.php';
if ($_POST){
$data['success'] = true; $_POST = multiDimensionalArrayMap('cleanEvilTags', $_POST); $_POST = multiDimensionalArrayMap('cleanData', $_POST); $error = false; $obbligatori = array('name','email','birth');//e tutti quelli che non possono mancare foreach ($$obbligatori as $fieldName) { if( !$_POST[$fieldName] || trim($_POST[$fieldName])=='' ) $data['success'] = false;//al primo campo mancante qualcosa e' stato omesso }
//Qui metti i controlli particolari tipo email o altri formati
if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) $data['success'] = false;
$name = $_POST["name"]; $email = $_POST["email"]; $birth = $_POST["birth"]; $prov = $_POST["prov"]; $city = $_POST["city"]; $pho = $_POST["pho"]; $imp = $_POST["imp"];
$comment = $_POST["comment"];
if($data['success'] == true){ $message = "Nome & Cognome: $name<br> Email: $email<br> Messaggio: $comment <br> Data di nascita: $birth <br> Provincia: $prov <br> Città: $city <br> Telefono: $pho <br> Importo: $imp"; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html; charset=utf-8" . "\r\n"; $headers .= "From: <$emailFrom>" . "\r\n"; mail($emailTo, $emailSubject, $message, $headers); $data['success'] = true; echo json_encode($data);}
}
empty() usato su un array non serve, è per variabili.
Il solo controllo di POST se esiste o meno va bene.
In $obbligatori metti la lista di quelli che non devono mancare.
Poi metti tutti i controlli particolari.
PS
non so come gestisci l'errore lato utente ma cosi' com'e' vedo che senza POST o con errore non torni nulla come json
Ciao! Ti ringrazio davvero di cuore per il tuo aiuto prezioso. Purtroppo però, utilizzando il nuovo file php, non vengono più inviate le mail. Forse i codici che ho scaricato da internet prevedevano quelle cose che mi hai modificato gentilmente? Comunque c'è anche questo file che ha a che fare con le mail. C'è un modo per andare ad impostare solo "comment" come facoltativo?
Grazie!!!
altro file: functions.php
Codice PHP:
<?php
// Strips nasty tags from code..function cleanEvilTags($data) { $data = preg_replace("/javascript/i", "javascript",$data); $data = preg_replace("/alert/i", "alert",$data); $data = preg_replace("/about:/i", "about:",$data); $data = preg_replace("/onmouseover/i", "onmouseover",$data); $data = preg_replace("/onclick/i", "onclick",$data); $data = preg_replace("/onload/i", "onload",$data); $data = preg_replace("/onsubmit/i", "onsubmit",$data); $data = preg_replace("/<body/i", "<body",$data); $data = preg_replace("/<html/i", "<html",$data); $data = preg_replace("/document\./i", "document.",$data); $data = preg_replace("/<script/i", "<script",$data); return strip_tags(trim($data));}
// Cleans output data..function cleanData($data) { $data = str_replace(' & ', ' & ', $data); return (get_magic_quotes_gpc() ? stripslashes($data) : $data);}
function multiDimensionalArrayMap($func,$arr) { $newArr = array(); if (!empty($arr)) { foreach($arr AS $key => $value) { $newArr[$key] = (is_array($value) ? multiDimensionalArrayMap($func,$value) : $func($value)); } } return $newArr;}