Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-01-2014, 22:02   #1
FedeBev
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.
FedeBev è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2014, 00:24   #2
OoZic
Senior Member
 
L'Avatar di OoZic
 
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>
demo: http://jsfiddle.net/LCfkW/

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:
$('#signin').submit(function(e){

    
// ferma il submit automatico
    
e.preventDefault();
    
    
// chiamata ajax al backend dove se l'username è libero risponde con un true altrimenti con un false
    
$.ajax({
            
type'GET',
            
url"http://controlla-username",
            
success:function(data){
                
                
// se la risposta è true porta l'utente alla pagina successiva
                
if (data){
                    
window.location 'http://pagina-successiva';
                }
                
                
// se la risposta è false, compare il messaggio che l'username non è disponibile
                
else {
                    $(
'.error-text').html('l\'username non è disponibile');
                }
            }
    });
}); 
__________________
> This is me <
When you gaze long into an abyss the abyss also gazes into you.

Ultima modifica di OoZic : 08-01-2014 alle 00:35.
OoZic è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2014, 01:48   #3
Tuvok-LuR-
Senior Member
 
L'Avatar di Tuvok-LuR-
 
Iscritto dal: Sep 2001
Città: Pisa
Messaggi: 2213
Quote:
Originariamente inviato da FedeBev Guarda i messaggi
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"
magari evita di seguire guide scritte 8 anni fa
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>
Altri approcci possono variare, dalla validazione dell'username al volo mentre lo digiti, alla pressione di un bottone apposito che verifica l'username.

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
Tuvok-LuR- è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2014, 17:02   #4
FedeBev
Junior Member
 
Iscritto dal: Jan 2014
Messaggi: 4
Quote:
Originariamente inviato da OoZic Guarda i messaggi
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>
demo: http://jsfiddle.net/LCfkW/

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:
$('#signin').submit(function(e){

    
// ferma il submit automatico
    
e.preventDefault();
    
    
// chiamata ajax al backend dove se l'username è libero risponde con un true altrimenti con un false
    
$.ajax({
            
type'GET',
            
url"http://controlla-username",
            
success:function(data){
                
                
// se la risposta è true porta l'utente alla pagina successiva
                
if (data){
                    
window.location 'http://pagina-successiva';
                }
                
                
// se la risposta è false, compare il messaggio che l'username non è disponibile
                
else {
                    $(
'.error-text').html('l\'username non è disponibile');
                }
            }
    });
}); 
Ti ringrazio per la risposta,
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 18:57.
FedeBev è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2014, 23:50   #5
OoZic
Senior Member
 
L'Avatar di OoZic
 
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){
...
a quel punto nel backend c'è lo script php che esegue il controllo e ritorna qualcosa, io per semplicità avevo messo true/false ma se vuoi fare una cosa fatta bene potrebbe ritornare un json tipo
Codice:
{
  "email":"okay",
  "username":"utilizzato"
}
quel che manca nel tuo script che non vedo è l'assegnazione delle variabili $email, $username.

dovrebbe prenderle dalle variabili che gli arrivano tramite chiamata get:
Codice:
$email = $_GET["email"]
non sono un esperto di php cmq ... aspetta una conferma da qualcuno più esperto
__________________
> This is me <
When you gaze long into an abyss the abyss also gazes into you.
OoZic è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2014, 21:57   #6
FedeBev
Junior Member
 
Iscritto dal: Jan 2014
Messaggi: 4
Quote:
Originariamente inviato da OoZic Guarda i messaggi
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){
...
a quel punto nel backend c'è lo script php che esegue il controllo e ritorna qualcosa, io per semplicità avevo messo true/false ma se vuoi fare una cosa fatta bene potrebbe ritornare un json tipo
Codice:
{
  "email":"okay",
  "username":"utilizzato"
}
quel che manca nel tuo script che non vedo è l'assegnazione delle variabili $email, $username.

dovrebbe prenderle dalle variabili che gli arrivano tramite chiamata get:
Codice:
$email = $_GET["email"]
non sono un esperto di php cmq ... aspetta una conferma da qualcuno più esperto
Perfetto ho capito il funzionamento dello script e ti ringrazio, l'ho provato ma non funziona
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à
FedeBev è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2014, 23:46   #7
OoZic
Senior Member
 
L'Avatar di OoZic
 
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
__________________
> This is me <
When you gaze long into an abyss the abyss also gazes into you.
OoZic è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2014, 22:08   #8
FedeBev
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:
[php]
<?php
//parametri di connessione al db

$username $_POST['username']; 
$password =md5($_POST['password']);
$check_password=md5($_POST['check_password']);
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$email=$_POST['email'];
$check_mail=$_POST['check_mail'];
$gg=$_POST['gg'];
$mm=$_POST['mm'];
$aaaa=$_POST['aaaa'];
$indirizzo=$_POST['indirizzo'];
$comune=$_POST['comune'];
$provincia=$_POST['provincia'];
$cap=$_POST['cap'];

        
$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 
"<script type=\"text/javascript\">alert(\"Utente gia' registrato, e-mail gia' presente !\"); history.go(-1)</script>";
      
        }
    elseif(
mysql_num_rows($controllo2) == 1)
        {
            echo 
"<script type=\"text/javascript\">alert(\"Username gia' presente, scegliene un altro !\"); history.go(-1)</script>";
        }

    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(
"<SCRIPT LANGUAGE='JavaScript'>
                            window.alert('Registrazione avvenuta con successo')
                            window.location.href='http://www.makingall.altervista.org/login.php';
                            </SCRIPT>"
) ;

        }
?>
[/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
FedeBev è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2014, 00:29   #9
OoZic
Senior Member
 
L'Avatar di OoZic
 
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>
__________________
> This is me <
When you gaze long into an abyss the abyss also gazes into you.
OoZic è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
Le sfere metalliche trovate in Australia...
Intel cambia i piani? Il processo 14A2 p...
La missione spaziale cinese Tianwen-2 ha...
Eni porta la produzione di batterie in I...
Il Dipartimento dell'Energia USA cancell...
MSI è pronta per le DDR5 cinesi a...
La sonda spaziale JAXA Hayabusa2 ha sorv...
L'Università di Sydney e IBM scop...
Credono di parlare con Microsoft e l'FTC...
Microsoft vede grandi profitti nella con...
Niente 'scatola vuota': ecco perch&eacut...
Microsoft annuncia 4800 licenziamenti: X...
Sky acquisisce la divisione media di ITV...
Chi studia con ChatGPT poi dimentica qua...
Nikon avrebbe due piani per la prossima ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:06.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v