Ciao ragazzi, un problema banale sta diventando una cosa insopportabile... Classico form di registrazione al sito, html, in cui valido i campi inseriti con il plugin jQuery validate... Funzionava tutto a meraviglia finchè non ho deciso di fare in modo di controllare che la mail inserita non fosse già effettivamente registrata nel database (tra l'altro darebbe errore lo stesso sql essendo unique come attributo). Giusto per una questione estetica e real time quindi ho deciso di aggiungere tra gli altri controlli del validate anche l'attributo "remote" riferendomi ad un piccolo script php che interroga in database e restituisce true o false a seconda che la mail non sia o sia registrata....
Lo script l'ho testato prima facendo riferire il form direttamente ad esso ed effettivamente sembra funzionare...
Quando però faccio la prova utilizzato il validator mi risulta sempre la mail registrata, ovvero il validator mi stampa sempre il messaggio di errore nel caso in cui la remote dia true... Ho fatto la prova sia cancellando il record dal database sia rimettendolo, gli risulta comunque già registrata...
Vi incollo il codice e mi scuso per il poema scritto ma volevo rendere più chiaro possibile il problema.
Script PHP che controlla nel database la mail:
Riferendo la classe Db.php vi incollo anche quella:codice:<?php require_once '/class/Db.php'; if(isset($_POST['mail'])) { $mail= mysql_real_escape_string(trim($_POST['mail'])); $query="SELECT * FROM users WHERE Mail='$mail'"; $db= new Db(); $result=$db->query($query); $db->close(); if((mysql_num_rows($result))!=0) return false; return true; } ?>
codice:<?php class Db { private $host="localhost"; private $username="root"; private $pw=""; private $attiva=false; //flag con cui controliamo la connessione private $dbName="acquariummarket"; private $stream; private $connection; public function __construct() { if(!$this->attiva) { $this->stream=mysql_connect($this->host, $this->username, $this->pw); $this->connection=mysql_select_db($this->dbName); $this->attiva=true; } } public function query($sql) { if(isset($this->attiva)) { $risultato= mysql_query($sql); return $risultato; } else return false; } public function close() { return mysql_close($this->stream); } } ?>
Questo è il codice Javascript del validator:
codice:$(document).ready(function() { $("#formregistrazione").validate({ rules: { nome: {required:true} , nomeaz: { required: true }, cognome: { required:true }, indirizzo: { required: true }, cf: { required: true, minlength: 16, maxlength: 16 }, mail: { required:true, email:true, remote: "/checkMail.php" }, pw1: { required: true, minlength: 6, maxlength: 12 }, pw2: { equalTo: "#pw1" }, piva: { required:true, number: true } }, messages: { nome: { required: "Campo nome obbligatorio" }, cognome: { required: "Campo cognome obbligatorio" }, nomeaz: { required: "Campo nome obbligatorio" }, indirizzo: { required: "Campo indirizzo obbligatorio" }, cf: { required: "Campo codice fiscale obbligatorio", minlength: "Il codice fiscale deve essere di 16 caratteri", maxlength: "Il codice fiscale deve essere di 16 caratteri" }, mail: { required:"Campo e-mail obbligatorio", email: "E-mail non valida", remote: "E-mail attualmente registrata, se non ricordi i dati contattaci o avvia la procedura di recupero password" }, pw1: { required: "Campo password obbligatorio", minlength: "La password deve contenere 6-12 caratteri", maxlength: "La password deve contenere 6-12 caratteri" }, pw2: { equalsTo: "Controlla la password" }, piva: { required:"Campo partita IVA obbligatorio", number: "Assicurati che il numero p. IVA sia corretto" } }, onkeyup: false, errorPlacement: function(error,element){}, showErrors: function(errorMap, errorList) { var list=""; for(i in errorList){ j = parseInt(i)+1; list=list+"<label>"+j+". "+errorList[i].message+" </label>"; } $("#formError").find("label").remove(); $("#formError").append(list); this.defaultShowErrors(); } }); });
Infine il form html:
codice:<form method="post" action="addNewUser.php" name="registrazione" id="formregistrazione"> <fieldset id="registrazione"> <label class="registrazione"> Tipologia utente: </label> <select name="tipologia" class="registrazione" onChange="selezione();"> <option value="privato" selected="selected">Utente Privato</option> <option value="azienda">Azienda</option> </select> <label id="nome" class="registrazione"> * Nome: </label> <input id="nomeinput" class="registrazione" type="text" name="nome"> </input> <label id="cognome" class="registrazione"> * Cognome: </label> <input id="cognomeinput" class="registrazione" type="text" name="cognome"> </input> <label id="indirizzo" class="registrazione"> * Indirizzo: </label> <input class="registrazione" type="text" name="indirizzo"> </input> <label class="registrazione"> Telefono: </label> <input id="tel" class="registrazione" type="text" name="tel"> </input> <label id="cf" class="registrazione"> * Codice Fiscale: </label> <input id="cfinput" class="registrazione" type="text" name="cf"> </input> <label class="registrazione"> * E-mail: </label> <input class="registrazione" type="text" name="mail"> </input> <label class="registrazione"> * Password: </label> <input id="pw1" class="registrazione" type="password" name="pw1"> </input> <label class="registrazione"> * Ripeti password: </label> <input class="registrazione" type="password" name="pw2"> </input> <input class="submit" type="submit" value="Registrati" name="reg"> </input> <input class="reset" type="reset" value="Cancella tutto"> </input> </fieldset> </form>
Considerate che mi affaccio ora ai css quindi è un po incasinato, ma non credo stia li il problema...
Grazie anticipatamente a chi vorrà aiutarmi

Rispondi quotando