Ciao ragazzi, sono costretto a chiedervi una mano in quanto sto cercando di implementare ad uno script Php la validazione ajax e il passaggio a php per l'inserimento dei dati nel db mysql. E' una funzione che credo possa servire a molti ed io sto cercando di realizzarla per creare un form di registrazione utenti senza ricaricare la pagina e che invii anche un email di conferma e attivazione.
Allora:
ho una pagina Php con il form da compilare [fin qui tutto semplice] e al suo interno richiamo Ajax e il file con il codice Targetcontactform.js:
codice:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> <script src="js/targetcontactform.js"></script>
questa è il file Targetcontactform.js:
[
codice:
$(document).ready(function() {
//al click sul bottone del form
$("#bottone-contact").click(function(){
$(this).hide();
$("[img]images/loader.gif[/img]").appendTo("#contact");
var timer = 2000;
//associo variabili generali
var nome = $("#nome").val();
var cognome = $("#cognome").val();
var giorno = $("#giorno").val();
var mese = $("#mese").val();
var anno = $("#anno").val();
var sito = $("#sito").val();
var email = $("#email").val();
var password = $("#password").val();
var Npsw= $("#Npsw").val()
var informativa = $("#informativa").attr('checked');
//pattern email var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if(!emailReg.test(email)) {
$("#bottone-contact").show();
$("<div id='errori'></div>").appendTo("#contact").html("<span>Email scritta in modo non corretto.</span>").delay(2000).fadeOut(timer);
$(".loader").hide(); } else if(informativa != "checked"){ alert("Devi accettare l'informativa sulla privacy per continuare!"); $("#bottone-contact").show();
$(".loader").hide(); } else if (nome == "" || cognome == "" || email == "" || password == "" ) { $("#bottone-contact").show();
$("<div id='errori'></div>").appendTo("#contact").html("<span>E' necessario compilare tutti i campi.</span>").delay(2000).fadeOut(timer);
$(".loader").hide(); }
//se ci sono campi vuoti else {
//se sono stati compilati tutti i campi
//chiamata ajax
$.ajax({ type: "POST", url: "registrati/salva2.php",
//il form invia i dati all'engine
data: "nome=" + nome + "cognome=" + cognome + "giorno=" + giorno + "mese=" + mese + "anno=" + anno + "sito=" + sito + "email=" + email +"&password=" + password,
dataType: "html",
success: function(msg) { $(".loader").hide();
$("<div id='risultato'></div>").appendTo("#contact").html("<span>Registrazione effettuata. Controlla la tua email.</span>").delay(3000).fadeOut(timer);
$("#bottone-contact").delay(2000).fadeIn(); }, error: function() { alert("Si e' verificato un errore imprevisto..."); } }); }
//else controlli });
//fine form });
//Fine Dom
e questa è la pagina PHP che dovrebbe ricevere i dati via Post, inserirli nel Db e inviare email di conferma:
Codice PHP:
<?php
////////////////////ricevo il dato dal form/////////////////////
$nome = $_POST["nome"];
$cognome = $_POST["cognome"];
$giorno = $_POST["giorno"];
$mese = $_POST["mese"];
$anno = $_POST["anno"];
$sito = $_POST["sito"];
$email = $_POST["email"];
$Pswd = $_POST["password"];
$Npsw = $_POST["Npws"];
$risutente = $_POST["calcolo"];
////////////////verifico che le variabili siano valorizzate//////////////////
if (isset($nome)
and isset($cognome)
and isset($telefono) ) {
//////////verifico che le variabili non siano vuote/////////////////////////
if( $nome != "" and $cognome != "" ){
////////////////verifico che $Sito sia scritto senza "http"e che $Nome e $Cognome siano stringhe di testo//////////////
if (substr($sito, 0, 7) != "http://"
and is_string($nome) and is_string($cognome) ) {
////////////////verifico la struttura del campo email//////////////////////
if( preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) {
///////////////verifico che siano compilati i campi psw e npsw e che siano uguali/////////////////
if (isset($Pswd) and isset($Npsw) and $Pswd != "" and $Npsw != "" and
$Pswd == $Npsw and strlen($Pswd) > 5 ) {
////////verifico che sul database non siano gia presenti i dati inseriti///////////////////////// include("../Connections/Registrazione.php");
$db = mysql_connect($db_host, $db_user, $db_password); if ($db == FALSE) die ("errore nella connessione al database. Prego verificare i parametri nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella connessione al database. Prego verifcare i parametri nel file config.inc.php");
//////////////////////////////////////////seleziono i dati sul database
$query = "select * from Utenti where Email = '".$Email."' and Attivazione = 1 "; $result = mysql_query($query, $db) or die("Errore nella query:".mysql_error());
/////////////se i dati non sono presenti sul database proseguo con l'insert/////////////////
if(mysql_num_rows($result) == 0) {
//////////inserisco i dati nel database////////////////////////////////////////
$nome = addslashes(stripslashes($nome));
$cognome = addslashes(stripslashes($cognome));
$email = addslashes(stripslashes($email));
$giorno = $_POST["giorno"];
$mese = $_POST["mese"];
$anno = $_POST["anno"];
$sito = addslashes(stripslashes($sito));
$Attivazione = "0";
$Codicesicurezza = $risutente;
$query = "INSERT INTO Utenti (nome, cognome, giorno, mese, anno, telefono, email, Codicesicurezza, password, Npswd, Attivazione, Data ) VALUES ( '".$nome."', '".$cognome."', '".$giorno."', '".$mese."', '".$anno."', '".$telefono."', '".$email."', '".$Codicesicurezza."', '".$Pswd."', '".$Npsw."', '".$Attivazione."', NOW() )";
$result = mysql_query($query, $db) or die("Errore nella query:".mysql_error()); echo "
[b]ISCRIZIONE AVVENUTA:[/b]
-
Abbiamo inviato all'indirizzo da te comunicato. una mail
";
////////////scrivo il codice per mandare la mail all'utente//////////////////////////
if($result) { ini_set("SMTP","localhost");
//imposta smtp di aruba $header = "From: <noreply@aruba.it>\r\n";
// modifica con l'indirizzo e mail del tuo sito // costruiamo le intestazioni specifiche per il formato HTML
$header .= "X-Sender: <noreply@aruba.it>\r\n";
// Il mittente $header .= "X-Mailer: PHP/".phpversion(); $header .= "Return-Path: <noreply@aruba.it>\r\n";
// Return-path $sitepath = "http:///";
// modifica con il tuo sito $adminemail = 'info@al.it';
// modifica con il tuo indirizzo email relativo al sito
$id = mysql_insert_id(); $activatepath = "public/attiva_iscrizione.php?Utente=$id&codice=$risutente&Pass=$Pswd";
// attenzione. non modificare i parametri o modificarli una
// solo se si sicuri delle modifiche. lo script impostato per agire
// con questi parametri $subject = "Richiesta di iscrizione";
$message = "\n Benvenuto, $Nome $Cognome
Grazie per esserti iscritto!
";
mail($Email, $subject, $message, $header,"From:$adminemail \nX-Mailer: PHP/" . phpversion()); echo "
I dati sono stati salvati correttamente
Attendi il reindirizzamento alla home page"; echo "<meta http-equiv=refresh content=30;url=http://www.sito.it>"; } else { echo "
Alcuni dei dati da te inseriti non sono corretti. Verifica anche l'esattezza dell'indirizzo email"; }
////////invece se i dati sono presenti sul database termino lo script////////////////////////
}else{ echo "[b]Controllo Dati:[/b]
ATTENZIONE: Risulta gia esistente un account con la stessa email. Prego verificare i vostri dati.
torna indietro alla pagina di registrazione
"; }
///////////////se i campi password sono inizializzati in modo errato termino lo script///////// }else{ echo " [b]Controllo Dati:[/b]
ATTENZIONE: Il campo [b]Password[/b] e [b]Ridigita password[/b] sono scritti in modo errato. Minimo 6 caratteri
torna indietro alla pagina di registrazione
"; }
//////////se $Email scritto male termino lo script///////////////////// }else{ echo " [b]Controllo Dati:[/b]
ATTENZIONE: Il campo [b]Email[/b] è scritto in modo errato.
torna indietro alla pagina di registrazione
"; }
//////////////se scritto con http termino lo script///////////////// }else{ echo " [b]Controllo Dati:[/b]
ATTENZIONE: Il campo [b]sito[/b] è scritto in modo errato.
torna indietro alla pagina di registrazione
"; }
////////////se anche un solo campo non compilato chiudo lo script////////////
}else{ echo " [b]Controllo Dati:[/b]
ATTENZIONE: Alcuni campi obbligatori risultano vuoti.
torna indietro alla pagina di registrazione
"; }
////////se non sono valorizzate termino lo script/////////////////////////// }else { echo " [b]Controllo Dati:[/b]
ATTENZIONE: Alcuni campi obbligatori risultano vuoti.
torna indietro alla pagina di registrazione
"; } ?>
Come vedete, il php fa anche lui dei controlli sul form. non so se sto sbagliando qualcosa, infono il file php da solo funziona ma al momento della registrazione mi rimanda in un'altra pagina. Io vorrei solo che non ricaricasse la pagina.
Grazie a chiunque mi potrà dare una mano