jquery
Oggi voglio mostrarvi come creare un simpatico contact form in jQuery e PHP, che non necessita di refresh della pagina. Principalmente, il form sarà costituito da un foglio di stile, dal file html contenente il modulo, da un file jquery e da un file php. Potete vedere qui una demo.

Creiamo subito il nostro file html contenente, naturalmente, il link alla libreria jQuery, al nostro foglio di stile e al nostro script. Questo conterrà anche un div di nome “risposta” nel quale comparirà un messaggio di avvenuto, o meno, invio dell’e-mail.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 
<head>
<title>jQuery contact form</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="jquery_mail.js"></script>
</head>
 
 
<body>
	<form id="formail" method="post" action="">
	<div id="risposta">
	</div>
	<p>Nome:</p>
	<input type="text" id="nome" name="nome"  value="" /><br />
	<p>E-mail:</p>
	<input type="text" id="email" name="email"  value="" /><br />
	<p>Oggetto:</p>
	<input type="text" id="oggetto" name="ogggetto"  value="" /><br />
	<p>Messaggio:</p>
	<textarea id="messaggio" name="messaggio" rows="9" cols="20"></textarea><br />
	<input type="submit" id="invia" name="invia" value="Invia" />
	</form>
</body>
</html>

Ora, diamo un tocco di stile :D . Il nostro file si dovrà chiamare, naturalmente, style.css.

p{
margin: 0 0 5px 0;
color:#5F6565;
font-family:Tahoma,Arial,Helvetica,sans-serif;
}
form#formail{
margin:0 auto;
width: 315px;
background-color: #f2f2f2;
border: 1px solid #dbdbdb;
padding: 10px;
}
input[type=text]{
background:#FFFFFF none repeat scroll 0 0;
border:1px solid #CED0D0;
color:#5F6565;
font-family:Tahoma,Arial,Helvetica,sans-serif;
margin-bottom:10px;
padding:4px 5px;
width:300px;
}
textarea{
background:#FFFFFF none repeat scroll 0 0;
border:1px solid #CED0D0;
color:#5F6565;
font-family:Tahoma,Arial,Helvetica,sans-serif;
padding:4px 5px;
width:300px;
height: 160px;
}
#risposta{
display: none;
border: 1px solid #ccc;
padding: 10px;
margin-bottom: 10px;
}

Creiamo ora il file “jquery_mail.js” e inseriamo questo codice. Ho aggiunto dei commenti, quindi dorvebbe essere di facile comprensione.

 $(document).ready(function(){
	$("#invia").click(function(){
 
	//Recuperiamo tutte le variabili
		var valid = '';
		var isr = ' è richiesto.</p>';
		var name = $("#nome").val();
		var mail = $("#email").val();
		var subject = $("#oggetto").val();
		var text = $("#messaggio").val();
 
	//Eseguiamo una serie di controlli
		if (name.length<1) {
			valid += '<p>Un nome valido'+isr;
		}
		if (!mail.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
			valid += '<p>Un indirizzo e-mail valido'+isr;
		}
		if (subject.length<1) {
			valid += '<p>Un oggetto valido'+isr;
		}
		if (text.length<1) {
			valid += '<p>Un messaggio valido'+isr;
		}
	//Se i controlli non vengono superati, appare il messaggio di errore.
		if (valid!='') {
			$("#risposta").fadeIn("slow");
			$("#risposta").html("<p><b>Errore:</b></p>"+valid);
			$("#risposta").css("background-color","#ffc0c0");
		}
		//Se i controlli vengono superati, compare un messaggio di invio in corso
		else {
			var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&text=' + text;
			$("#risposta").css("display", "block");
			$("#risposta").css("background-color","#FFFFA0");
			$("#risposta").html("<p>Invio del messaggio in corso..</p>");
			$("#risposta").fadeIn("slow");
			setTimeout("send('"+datastr+"')",2000);
		}
		return false;
	});
});
//Creazione della funzione di invio. Si baserà sul nostro file php "mail.php".
function send(datastr){
	$.ajax({	
		type: "POST",
		url: "mail.php",
		data: datastr,
		cache: false,
		success: function(html){
		$("#risposta").fadeIn("slow");
		$("#risposta").html(html);
		$("#risposta").css("background-color","#e1ffc0");
		setTimeout('$("#risposta").fadeOut("slow")',2000);
	}
	});
}

Infine creiamo il file “mail.php” nel quale inseriremo il codice che servirà ad inviare la nostra e-mail.

<?php
//Recuperiamo tutte le variabili
	$mail = $_POST['mail'];
	$name = $_POST['name'];
	$subject = $_POST['subject'];
	$text = $_POST['text'];
	$ip = $_SERVER['REMOTE_ADDR'];
 
//Qui andrà inserito il tuo indirizzo e-mail
$to = "indirizzo@email.it";
 
//Creazione del mesaggio da inviare
$message = "Hai ricevuto una e-mail da: ".$name.", ".$mail.".<br />";
$message .= "Messaggio: <br />".$text."<br /><br />";
$message .= "IP: ".$ip."<br />";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: <$name>"; 
 
//Se l'e-mail viene spedita correttamente, compare un messaggio di avvenuto invio
 if(mail($to, $subject,$message, $headers)){
	echo "<p>Messaggio inviato con successo</p>";
}
//Altrimenti un messaggio di errore
else{ 
	echo "<p>Ci sono stati degli errori nell'invio della e-mail.</p>";
}
?>

Puoi scaricare da qui lo script completo. Se hai una domanda o un dubbio, ti invitiamo a lasciarci un commento ;)

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

7 Commenti a: Creiamo un bellissimo contact form in jQuery e PHP

  1. Kharg

    Dubbio: cosa è il jquery? xD
    mi piacerebbero di più dei tutorial su photoshop u.u

  2. STAFF

    ehehe, comunque sarebbe una libreria javascript. Ti permette di fare molti effetti grafici carini con poche righe di codice :P

  3. Deli

    Potresti fare un tutorial su come creare quell’effetto javascript per le categorie, i commenti, gli archivi ecc. ?????
    Comunque molto bello questo!

  4. STAFF

    In verità non l’ho realizzato io, l’ho trovato non ricordo dove :D Comunque appena posso farò una guida su come realizzare una cosa simile..

  5. Deli

    @ STAFF:
    Grazie

  6. Artedelweb

    Grazie, lo conosciamo già, solo che ha già spopolato nella blogsfera e non volevamo pubblicare un articolo/copia ;)

  7. Kharg

    Vorrei mostrarvi un bellissimo template in jquery per i siti in construzione: http://www.ourtuts.com/free-site-under-constructi... perche non farne una news? :D

Lascia un commento

Arrow

(Ottieni il tuo Gravatar)