Errori in form di contatti

di Anonimizzato6825 il
5 risposte
Ho il seguente form
<?php


// Replace this with your own email address
$siteOwnersEmail = 'la@gmail.com';




if($_POST) {


$name = trim(stripslashes($_POST['contactName']));
$email = trim(stripslashes($_POST['contactEmail']));
$subject = trim(stripslashes($_POST['contactSubject']));
$contact_message = trim(stripslashes($_POST['contactMessage']));


// Check Name
if (strlen($name) < 2) {
$error['name'] = "Inserire il nome.";
}
// Check Email
if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
$error['email'] = "Inserire un indirizzo mail valido.";
}
// Check Message
if (strlen($contact_message) < 15) {
$error['message'] = "Inserisci il tuo messaggio. Dovrebbe avere almeno 15 caratteri..";
}
// Subject
if ($subject == '') { $subject = "Contact Form Submission"; }




// Set Message
[u]$message .= "Email from: " . $name . "<br />";[/u]
$message .= "Email address: " . $email . "<br />";
$message .= "Message: <br />";
$message .= $contact_message;
$message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />";


// Set From: header
$from = $name . " <" . $email . ">";


// Email Headers
$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: ". $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";




[u]if (!$error) {[/u]


ini_set("sendmail_from", $siteOwnersEmail); // for windows server
$mail = mail($siteOwnersEmail, $subject, $message, $headers);


if ($mail) { echo "OK"; }
else { echo "Something went wrong. Please try again."; }

} # end if - no validation error


else {


$response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;
$response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
$response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;

echo $response;


} # end if - there was a validation error


}


?>
come risolvo i
seguenti errori :
ho sottolineato le righe dove ci sta l'errore

Notice: Undefined variable: message inC:\xampp\htdocs\co\inc\sendEmail.php on line 31

Notice: Undefined variable: error inC:\xampp\htdocs\co\inc\sendEmail.php on line 47
OK

5 Risposte

  • L'errore nella variabile "message" è che con la riga
    $message .= "Email from: " . $name . "<br />";
    effettui un "append" ad una variabile che non è stata inizializzata. Semplicemente dovresti fare
    $message = "Email from: " . $name . "<br />";
    Per quanto riguarda la variabile error prova ad usare la funzione "isset":
    if (isset($var)) ...
  • Ho fatto queste modifiche... ora non mi da errore..
    però ora se inserisco il nome non mi invia la mail...
    mentre se non inserisco il nome mi invia la mail...
    e mi invia la mail anche se non inserisco nulla..
    Non riesco a capire il problema...
  • Probabilmente non hai tolto il "not" davanti alla funzione "isset"


    Sent from my iPhone using Tapatalk
  • Il problema spiegato nel post precedente rimane..
    posto il codice
    $siteOwnersEmail = 'la@gmail.com';
    
    
    if($_POST) {
    
       $name = trim(stripslashes($_POST['contactName']));
       $email = trim(stripslashes($_POST['contactEmail']));
       $subject = trim(stripslashes($_POST['contactSubject']));
       $contact_message = trim(stripslashes($_POST['contactMessage']));
    
       // Check Name
    	if (strlen($name) < 2) {
    		$error['name'] = "Inserire il nome.";
    	}
    	// Check Email
    	if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
    		$error['email'] = "Inserire un indirizzo mail valido.";
    	}
    	// Check Message
    	if (strlen($contact_message) < 15) {
    		$error['message'] = "Inserisci il tuo messaggio. Dovrebbe avere almeno 15 caratteri..";
    	}
       // Subject
    	if ($subject == '') { $subject = "Contact Form Submission"; }
    
    
       // Set Message
       $message = "Email from: " . $name . "<br />";
    	$message .= "Email address: " . $email . "<br />";
       $message .= "Message: <br />";
       $message .= $contact_message;
       $message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />";
    
       // Set From: header
       $from =  $name . " <" . $email . ">";
    
       // Email Headers
    	$headers = "From: " . $from . "\r\n";
    	$headers .= "Reply-To: ". $email . "\r\n";
     	$headers .= "MIME-Version: 1.0\r\n";
    	$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
    
    if (isset ($error)) 
    	 {
          ini_set("sendmail_from", $siteOwnersEmail); // for windows server
          $mail = mail($siteOwnersEmail, $subject, $message, $headers);
    
    		if ($mail) { echo "OK"; }
          else { echo "Errore, Riprova."; }
    		
    	} # end if - no validation error
    
    	else {
    
    		$response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;
    		$response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
    		$response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;
    		
    		echo $response;
    
    	} # end if - there was a validation error
    
    }
    
    ?>
  • Scusa, mi correggo ulteriormente: la funzione "isset($error)" restituisce true se la variabile error è settata, cioè in caso di errore. Per cui il codice diventa:
    
    if (!isset($error)) {
       ...
    }
    
Devi accedere o registrarti per scrivere nel forum
5 risposte