Form Errore email campi vuoti

  • Creatore Discussione Creatore Discussione mariodp
  • Data di inizio Data di inizio

mariodp

Nuovo Utente
21 Gen 2010
28
0
0
Ciao ragazzi,
Sto cercando di costruire un form che controlli i campi se sono compilati o vuoti ma….. mi da sempre email vuota anche se è compilata e non mi invia il Form, ci date un occhiata………….. per capire che cosa non va?

PHP:
<?php
// Comunica tutti gli errori PHP (il valore 63 può essere usato in PHP 3)
//echo "vecchio_error_reporting:" . error_reporting(E_ALL ^ E_NOTICE) . "**<br>";
error_reporting(E_ALL ^ E_NOTICE);

// Stesso effetto di error_reporting(E_ALL);
ini_set('error_reporting', E_ALL ^ E_NOTICE);

$email=$_POST['email'];

#######################################
# IMPOSTAZIONI DA CONFIGURARE #
#######################################

// indirizzo email del destinatario del modulo
// $destinatario = "mariodp@alice.it";
$destinatario = "info@#.it";

// indirizzo email del mittente, campo FROM
$nome_mittente = "$email";
// $email_mittente = "$email";
// $nome_mittente = "Dal Modulo";

// oggetto del messaggio
$oggetto_email = "Modulo inviato dal sito www.miosito.it";

//(4) se si vogliono rendere tutti i campi NON OBBLIGATORI impostare su "y".
// (valori possibili: "y" e "n")
$all_free = "y";

// se avete messo "n" al punto (4) inserire tra virgolette, separati
// da virgola, i nomi dei campi da rendere OBBLIGATORI
// Esempio: $campi_req = array("nome","telefono","via");
// $campi_req = array("nome","email");

// controllo validità del campo email. (valori possibili: "y" e "n")
$obbligo_email = "y";

// obbligare l'utente ad accettare le condizioni.
// (valori possibili: "y" e "n")
$accetta_condizioni = "y";

// URL della pagina di ringraziamento
$pagina_grazie = "http://www.miosito.it/form/grazie.php";

// URL della pagina errore campi vuoti
$pagina_error_empty = "http://www.miosito.it/form/errore_campi_vuoti.php";

// URL della pagina errore email
$pagina_error_email = "http://www.#.it/form/errore_email.php";

// URL della pagina errore condizioni non accettate
$pagina_error_condizioni = "http://www.#.it/form/errore_condizioni.htm";

// URL della pagina errore invio non autorizzato (mancanza di referer)
$pagina_error_referer = "http://www.#.it/form/errore_referer.htm";

#######################################
# FINE IMPOSTAZIONI DA CONFIGURARE #
#######################################

//ora e data
$ora = date ("H:i:s");
$data = date ("d/m/Y");

//intestazione email che arriva al destinatario
$corpo = "
Modulo inviato il $data alle ore $ora
Riepilogo dati:\n\n";

//controllo codice dinamico
// if ($resp->is_valid) {
// richiesta approvata da captcha!
// } else {
# set the error code so that we can display it. You could also use
# die ("reCAPTCHA failed"), but using the error message is
# more user friendly
// $error = $resp->error;
//echo $error;

header ("Location: $pagina_error_email");
exit();
// }





########### CODICI ###########

//variabili per rendere lo script compatibile anche con la versione PHP 4.2 e maggiori
if(!isset($_SERVER) OR
!$_SERVER OR
!is_array($_SERVER) OR
count(array_diff($_SERVER, $HTTP_SERVER_VARS))) {
$_POST = &$HTTP_POST_VARS;
}

//prende IP ADDRESS
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
if ($_SERVER["HTTP_X_FORWARDED_FOR"] == "") {
$ipnumb = getenv("REMOTE_ADDR");
}else {
$ipnumb = getenv("HTTP_X_FORWARDED_FOR");
}
} else {
$ipnumb = getenv("REMOTE_ADDR");
}
###################################

//controllo referer
if(empty($_SERVER["HTTP_REFERER"])){
header ("Location: $pagina_error_referer");
exit();
}

########### CONTROLLO DEI CAMPI ###########
$control_campi = 0;

if($all_free != "y"){
foreach($_POST as $key => $valore){
if(in_array($key,$campi_req)){
if(trim($valore) == ""){
$control_campi++;
}
}
}
} else {
$control_campi = 0;
}

########### CONTROLLO EMAIL ###########
$control_email = 0;

if($obbligo_email == "y"){
if(isset($_POST['email'])){
if(!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){
$control_email++;
}
} else {
$control_email = 0;
}
}

########### CONTROLLO CONDIZIONI ###########
$control_condizioni = 0;

if($accetta_condizioni == "y"){
if(isset($_POST['trattamento_dati']) && $_POST['trattamento_dati'] == "accetto"){
$control_condizioni = 0;
} else {
$control_condizioni ++;
}
}

//echo "control_campi:$control_campi **<br>control_email:$control_email **<br>control_condizioni:$control_condizioni **<br>";

########### INVIO EMAIL ###########
if($control_campi != 0){
header ("Location: $pagina_error_empty");
exit();
} else {
// echo "nessun header CAMPI**<br>";
}

if($control_email != 0){
header ("Location: $pagina_error_email");
exit();
} else {
// echo "nessun header EMAIL**<br>";
}


if($control_condizioni == 0){
foreach($_POST as $key => $valore){
$key = ucfirst(stripslashes(trim($key)));
$valore = stripslashes(trim($valore));
$key = str_replace("_"," ",$key);

if(trim($valore) == "") {
$valore = "Non compilato";
}
$corpo .= $key .": ". $valore ."\n\n";
}
$corpo .= "Numero IP: $ipnumb"."\n";
$corpo .= "____________________________________________________________ \n\n

";

// invio e-mail
// Header Mail
$headmail.="From: $destinatario\n";
$headmail.="Return-Path: $nome_mittente\n";
// $headmail.="User-Agent: Php Mail Function\n";
// $headmail.="X-Accept-Language: en-us, en, ita\n";
// $headmail.="MIME-Version: 1.0\n";
// $headmail.="X-Priority: 1 (Highest)\n";
// $headmail.="Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n";
// $headmail.="Content-Transfer-Encoding: 7bit\n";

//ini_set('sendmail_from', "$destinatario");
/* echo ("nome_mittente:$nome_mittente--<br>
destinatario:$destinatario--<br>
oggetto_email:$oggetto_email--<br>
corpo:" . nl2br($corpo) . "--<br>
headmail:$headmail--<br>");
*/
$risultato = mail($destinatario, $oggetto_email, $corpo, $headmail);
// echo "risultato:$risultato--<br>";
// exit;
header ("Location: $pagina_grazie");
} else {
header ("Location: $pagina_error_condizioni");
}
exit();

?>
 
Ultima modifica di un moderatore:
Ciao,
comincia con verificare che nel post sia presente il valore che ti aspetti con var_dump:
PHP:
var_dump( $_POST['email']);

PS:
racchiudi il codice tra i tag disponibili sulla barra di formattazione, in questo caso l'icona con scritto php
per ora ho modificato io
 
ciao
if(!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){
la funzione eregi è deprecata non devi usarla, usa
PHP:
//...
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
//....
 
Ciao
fatto ma non cambia nulla mi da sempre email vuota anche se compilata.
Questo è il form ridotto

<form action="inviamail-2.php" method="post" name="modulo" target="_self">
<div id="form">
<h4>Compila il form sottostante per inviarmi un messaggio</h4>
<label for="nome">Cognome Nome</label><input name="nome" id="nome" type="text">
<label for="email">Email</label><input name="email" id="email" type="text">
<label for="messaggio">Messaggio</label>
<textarea name="messaggio" id="messaggio" cols="30" rows="10"></textarea>

<input id="submit" name="submit" value="Invia" type="submit">
</div>
</form>
 
cosi modificato mi porta a una pagina che si chiama errore_condizioni.htm

// if(!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){

if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
$control_email++;
 
ciao
per verifirare il post dell'email devi fare come ti ha criric.
il mio era solo per dirti che non si usa più eregi (anzi puo dare errore)
 

Discussioni simili