|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 4
|
[ajax?]
Salve a tutti,
suono nuovo del forum e avrei bisogno di una mano: sto realizzando un form di registrazione ed ho fatto la tabella, la funzione javascript che controlla i campi e, se i campi sono ok, invia il form a un php che controlla se lo username esiste già o meno, stesso discorso per la mail; se tutto è ok inserisce tutti i vari dati nel db (phpMyAdmin) ovviamente tramite query. Ora io mi chiedo: è possibile fare i controlli username e password senza reindirizzare ad un php? Il php, in caso ci siano errori, reindirizza nuovamente al form di registrazione svuotando quindi i campi e obbligando a riscrivere tutto; il mio obiettivo è evitare questo. Ho inoltre provato a seguire quanto detto qui: http://antirez.com/articoli/spaghettiajax.html come suggerito in un altra discussione su questo forum, ottenendo il risultato che funziona tranne per il "piccolo dettaglio" che non invia i dati registrandomi quindi un utente "fantasma" Grazie in anticipo e spero di essere stato chiaro. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
HTML5, attributo 'required' + il tipo, supporta 'email', 'url' e altro.
qualche info in più: http://diveintohtml5.info/forms.html codice: Codice:
<form action="#">
<input type="text" required />
<button type="submit">invia</button>
</form>
per quanto riguarda il check dell'username devi per forza fare una chiamata ajax al backend che controlla se è già occupato. una demo qui: http://jsfiddle.net/Bjmre/ codice: Codice PHP:
Ultima modifica di OoZic : 08-01-2014 alle 01:35. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Pisa
Messaggi: 2213
|
Quote:
le cose al giorno d'oggi sono molto più semplici per fortuna puoi seguire vari approcci, il più semplice è verificare l'username all'invio del form, come in questo esempio (con jQuery): Codice:
<form action="#">
<label>Username: <input required name="username" type="username" /></label>
<label>Password: <input name="password" type="password" /></label>
<button type="submit">invia</button>
</form>
<script>
$('form').on('submit', function (e) {
var $form = $(this);
// Se il form non ha la classe "verified" annulliamo il suo invio ed effettuiamo la validazione
if ( !$form.hasClass('verified') ) {
e.preventDefault();
// Così impediamo che l'utente cambi i valori mentre è in atto la validazione
$(':input', $form).prop('readonly', true);
// Inviamo il form allo script che controlla la validità dei campi
// come esempio può banalmente restituire le stringhe 'true' o 'false'
$.post('validateForm.php', $form.serialize(), function (isValid) {
if (isValid) {
// Aggiungiamo la classe verified e reinviamo il forum
$form.addClass('verified').submit();
} else {
// Riattiviamo i campi del form
$(':input', $form).prop('readonly', false);
// Qua notificherai anche l'utente dell'errore
}
}, 'json');
}
});
</script>
E ricordati di validare sempre e comunque una seconda volta i dati quando arrivano sul server con l'invio del form (ogni validazione javascript può essere vanificata da chi sa come farlo).
__________________
9800X3D | 32GB DDR5 6400C30@TUNED | RTX 4090 | LG 32GQ950-B | Fractal Torrent | NZXT C1200W | Iliad Fibra 5Gb |
|
|
|
|
|
|
#4 | |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 4
|
Quote:
non mi è chiero come lavora lo script da te proposto: io ho un php che verifica se username e mail esistono già tramite una semplice query: <?php //connessione al db $controllo=mysql_query("SELECT id FROM $tbl_name WHERE email_utente='$email' LIMIT 1"); $controllo2=mysql_query("SELECT id FROM $tbl_name WHERE username='$username' LIMIT 1"); if(mysql_num_rows($controllo) == 1) { echo ("Utente gia' registrato, e-mail gia' presente !"); } elseif(mysql_num_rows($controllo2) == 1) { echo ("username già presente !"); } else { mysql_query("INSERT INTO ".$tbl_name." (id,username,password,nome_utente,cognome_utente,email_utente,giorno_nascita_utente,mese_nascita_utente,anno_nascita_utente,indirizzo_utente,comune_utente,provincia_utente,cap_utente) VALUES (' ','$username','$password','$nome','$cognome','$email','$gg','$mm','$aaaa','$indirizzo','$comune','$provincia','$cap')",$db) || die(mysql_error()); // scrive la query per inserire i dati nel db mysql_close($db); echo("registrato") ; } ?> come interagisco tra i 2 script? Grazie EDIT: ho trovato questo che credo sia la via migliore ho solo una domanda: questo che diamine significa? "oggettoAJAX=creaRichiestaAjax();" per prima cosa suppondo si sia dimenticato un "var" davanti e poi creaRichiestaAjax() che senso ha? Grazie per l'attenzione Ultima modifica di FedeBev : 08-01-2014 alle 19:57. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
ho saltato un pezzo effettivamente per farti capire meglio:
javascript lato client provvede a fare una chiamata ajax "get" (o post come preferisci) e la parte che mi son scordato è passare i dati Codice:
...
type: 'GET',
url: "http://controlla-username",
data: $('#formID').serialize(),
success:function(data){
...
Codice:
{
"email":"okay",
"username":"utilizzato"
}
dovrebbe prenderle dalle variabili che gli arrivano tramite chiamata get: Codice:
$email = $_GET["email"] |
|
|
|
|
|
#6 | |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 4
|
Quote:
E' evidente che sbaglio qualcosa ma.. cosa? qual è il principio di funzionamento di $('#signin').submit(function(e)...? Della stringa in particola intendo... Potresti dirmi ancora cosa scrivere esattamente all'interno degli if del php? ultima richiesta: potresti farmi un esempio super base di struttura della pagina di registrazione? magari capisco dove sbaglio... P.S.: nel php la variabile $email=$_GET['email'] c'e', mi sono solo dimenticato di scriverla Grazie mille per la grande disponibilità |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
almeno per quanto riguarda html +js metti il codice qui:
http://jsfiddle.net/ poi vediamo di capire dove sbagli |
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 4
|
ecco: http://jsfiddle.net/aRrw8/
Li non posso mettere (o non so come si fa) il php che è quello che più mi interessa... te lo posto qui! Codice PHP:
ora nel js tu vedi la tua funzione dentro l'else (cosa che suppongo sia sbagliata) ma ho provato anche a metterla fuori ma non funziona comune, a te la parola... grazie ancora |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
ho dato un occhiata molto veloce e la prima cosa che ti posso dire è che non stai allegando jQuery, almeno in quel fiddle non c'è quindi suppongo non ci sia nemmeno nel tuo codice.
Per far "funzionare" quei comandi con il dollaro davanti $, serve jQuery che è una libreria javascript separata. http://jquery.com/ dovresti allegarla in fondo prima di chiudere il </body> Codice:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')
</script>
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:14.




















