Contact form php

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Ciao,
ma in un contact form già pronto oltre a cambiare la mail, cos'altro va modificato? Perchè nella demo funziona e poi messo nel mio sito mi da errore?

Grazie
Alessandra
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Si scusa,
l'errore è che si blocca sul sending e non da nessuna risposta nè positiva nè negativa.
A me interessa avere un modulo con risposta nello stesso div che contiene il modulo.
Questo è il file php che invia l'email



PHP:
<?php

// Clean up the input values
foreach($_POST as $key => $value) {
	if(ini_get('magic_quotes_gpc'))
		$_POST[$key] = stripslashes($_POST[$key]);
	
	$_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
}

// Assign the input values to variables for easy reference
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];

// Test input values for errors
$errors = array();
if(strlen($name) < 2) {
	if(!$name) {
		$errors[] = "Devi inserire il nome.";
	} else {
		$errors[] = "Il nome deve avere più di due caratteri.";
	}
}
if(!$email) {
	$errors[] = "Devi inserire un'email.";
} else if(!validEmail($email)) {
	$errors[] = "Devi inserire un'email valida.";
}
if(strlen($message) < 10) {
	if(!$message) {
		$errors[] = "Devi inserire un messaggio.";
	} else {
		$errors[] = "Il messaggio deve avere almeno 10 caratteri.";
	}
}

if($errors) {
	// Output errors and die with a failure message
	$errortext = "";
	foreach($errors as $error) {
		$errortext .= "<li>".$error."</li>";
	}
	die("<span class='failure'>The following errors occured:<ul>". $errortext ."</ul></span>");
}

// Send the email
$to = "[email protected]";
$subject = "Modulo di contatto di: $name";
$message = "$message";
$headers = "From: $email";

mail($to, $subject, $message, $headers);

// Die with a success message
die("<span class='success'>Ok! Il tuo messaggio è stato spedito.</span>");

// A function that checks to see if
// an email is valid
function validEmail($email)
{
   $isValid = true;
   $atIndex = strrpos($email, "@");
   if (is_bool($atIndex) && !$atIndex)
   {
      $isValid = false;
   }
   else
   {
      $domain = substr($email, $atIndex+1);
      $local = substr($email, 0, $atIndex);
      $localLen = strlen($local);
      $domainLen = strlen($domain);
      if ($localLen < 1 || $localLen > 64)
      {
         // local part length exceeded
         $isValid = false;
      }
      else if ($domainLen < 1 || $domainLen > 255)
      {
         // domain part length exceeded
         $isValid = false;
      }
      else if ($local[0] == '.' || $local[$localLen-1] == '.')
      {
         // local part starts or ends with '.'
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $local))
      {
         // local part has two consecutive dots
         $isValid = false;
      }
      else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
      {
         // character not valid in domain part
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $domain))
      {
         // domain part has two consecutive dots
         $isValid = false;
      }
      else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
                 str_replace("\\\\","",$local)))
      {
         // character not valid in local part unless 
         // local part is quoted
         if (!preg_match('/^"(\\\\"|[^"])+"$/',
             str_replace("\\\\","",$local)))
         {
            $isValid = false;
         }
      }
      if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
      {
         // domain not found in DNS
         $isValid = false;
      }
   }
   return $isValid;
}

?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Prova così. L'ho semplificato e sistemato. Inoltre ho sostituito le chiamate a die con echo, altrimenti l'esecuzione dello script viene fermata e il codice HTML successivo non viene visualizzato:
PHP:
<?php
// Clean up the input values
foreach($_POST as $key => $value) {
    if (ini_get('magic_quotes_gpc')) {
        $_POST[$key] = stripslashes($_POST[$key]);
    }

    $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
}

// Assign the input values to variables for easy reference
$name    = isset($_POST['name'])    ? trim($_POST['name'])    : '';
$email   = isset($_POST['email'])   ? trim($_POST['email'])   : '';
$message = isset($_POST['message']) ? trim($_POST['message']) : '';

// Test input values for errors
$errors = array();

if (strlen($name) < 2) {
    $errors[] = 'Il nome deve essere lungo almeno 2 caratteri.';
}

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $errors[] = 'Devi inserire un indirizzo email valido.';
}

if (strlen($message) < 10) {
    $errors[] = 'Il messaggio deve essere lungo almeno 10 caratteri.');
}

if (empty($errors)) {
    // Send the email
    $to      = '[email protected]';
    $subject = "Modulo di contatto di: {$name}";
    $headers = "From: {$name} <{$email}>\r\n";

    if (mail($to, $subject, $message, $headers)) {
        echo '<span class="success">Ok! Il tuo messaggio è stato spedito.</span>';
    } else {
        echo '<span class="failure">Impossibile inviare il messaggio.</span>';
    }
} else {
    $errorText = '';

    foreach ($errors as $error) {
        $errorText .= "<li>{$error}</li>";
    }

    echo "<span class=\"failure\">The following errors occurred: <ul>{$errorText}</ul></span>";
}
?>
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
purtroppo non mi funziona. anche con il tuo codice mi si apre la finestra con una lista lunghissima di codice. puo' dipendere dal dominio?
 

Allegati

  • Immagine 2.jpg
    Immagine 2.jpg
    85,8 KB · Visite: 261

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
ciao ho provato lo stesso form su un altro dominio e funziona. Come mai? forse devo fare la connessione al database? o va in conflitto con altri script jquery...non capisco proprio.. :(
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Ma nello spazio in cui stai uploadando il form è disponibile il supporto per PHP?
 

valer

Nuovo Utente
12 Lug 2012
11
0
0
forse hanno disabilitato la funzione mail per evitare che qualcuno possa fare spam dal loro sito
 
Discussioni simili
Autore Titolo Forum Risposte Data
Elisacau [Contact form 7] Inserire Numero auto incrementante WordPress 1
websilvia Contact form using Bootstrap 3.3.4 PHP 8
I Guida/Tutorial configurare PHPMailer per inviare mails tramite contact form? PHP 2
Michaelweb93 [HTML] Creazione risposta automatica - email "Contact form 7" Wordpress WordPress 10
felino [Contact Form 7] Funzione personalizzata: ho un problema. WordPress 1
felino Contact Form 7: calendario e formattazione messaggio WordPress 0
A Turbo Contact Form - AIUTO PHP 2
felino Contact Form 7: messaggio di conferma sotto il modulo? WordPress 1
W Contact form nel template PHP 4
J Best of Free Contact Form Services and Generators for Easiest usages Javascript 0
T Contact form7 HTML e CSS 3
P Problenma con contact.asp Classic ASP 0
S passare un valore da un form a un file .php con metodo post PHP 4
K Form che manda dati doppi PHP 1
K Problema form update PHP 2
K form Inserimento record mysql PHP 2
I Form con selettore HTML e CSS 0
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
D Form contatti non funzionante HTML e CSS 0
A Stampare dati da form PHP 8
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
I Form HTML e CSS 17
otto9due $_FILE non passa i dati dal form PHP 1
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
felino Form action costum e parametri in queryString WordPress 1
M Come recuperare molteplici input form PHP 1
M Collegamento tra form html e script php PHP 4
L form immagini per il database PHP 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
L inserimento form dati multipli ? PHP 0
L Problemi form Pagina php HTML e CSS 3
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
D Devo far funzionare un form di contatti PHP 4
B form gestione input PHP 2
V PHP form intersecate PHP 0
8 Javascript - PDF Form Javascript 0
J Form inserimento dati in database Ajax 1
E Gestione profilo utente tramite Form PHP 3
R [C#] Form principale si blocca mentre un altro Thread lavora .NET Framework 0
M Problema con controllo form in real time jQuery 6
D Form validazione Javascript 2
R form recovery pass PHP 0
V Symfony e i form PHP 3
M form con checkbox PHP 8
S come aggiustare un form di contatto? HTML e CSS 3

Discussioni simili