Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192

    Registrazione ajax, javascript, php bottone attivo/disattivato

    http://dimoshake.altervista.org/registrazione.html
    Allora, questo è un piccolo form per la registrazione, in cui ci sono tutti gli errori possibili in caso qualcuno sbagli qualcosa (ripetizione password ecc), o ci sia gia un username/mail esistente, e fin qui tutto perfetto. Ora dato che ho il codice della registrazione in php con un bottone che rimanda alla pagina della registrazione, avevo intenzione di creare due bottoni, che tramite ajax si aggiornano. Quando tutti i campi sono corretti compare un bottone che rimanda alla pagina php per registrarsi, quando c'è almeno un campo sbagliato il bottone diventa disabled="disabled" e questo so farlo.
    Ad esempio metto una funzione dentro l'evento onblur e la richiamo in tutti i campi, quando soddisfa tutte le condizioni dei cicli if allora aggiorna l'html tramite ajax, mettendo il bottone cliccabile. Il problema è che non riesco ad andare avanti con questo codice (che permette di aggiornare i due tipi di bottone) quando si tratta di verificare che l'username/email sia già utilizzato. Ecco i codici che riguarda l'username

    registrazione.html
    Codice PHP:
    <script type="text/javascript" language="javascript">

    function 
    checkusername(){
    var 
    status document.getElementById("usernamestatus");
    var 
    document.getElementById("uname").value;
    if(
    == 0){
    status.innerHTML "Inserisci un username valido";
    } else {
    if(
    != ""){
    status.innerHTML 'ricerca...';
    var 
    hr = new XMLHttpRequest();
    hr.open("POST""controllausr.php"true);
    hr.setRequestHeader("Content-type""application/x-www-form-urlencoded");
    hr.onreadystatechange = function() {
    if(
    hr.readyState == && hr.status == 200) {
    status.innerHTML hr.responseText;
    }
    }
        var 
    "name2check="+u;
        
    hr.send(v);
    }
    }
    }


    </script>
    </head>
    <body>

    <form>
        <table>
            <tr>
                <td>
                    Username:
                </td>
                <td>
                    <input type="text" name="uname" id="uname" onblur="checkusername();" maxlength="15" />
                </td>
                <td>
                    <div id="usernamestatus">Inserisci un username valido</div>
                </td>
            </tr>

    </form> 
    Ho messo solo username dato che l'email ha il codice identico, se non per il discorso di alcune variabili.

    Questa è la pagina php che cerca se l'username esiste o meno e da i relativi errori

    controllausr.php
    Codice PHP:
    <?php
    if(isset($_POST["name2check"]) && $_POST["name2check"] != ""){
    include_once 
    'connect.php';
    $username preg_replace('#[^a-z0-9]#i'''$_POST['name2check']); 
        
    $sql_uname_check mysql_query("SELECT id FROM utenti WHERE username='$username' LIMIT 1"); 
        
    $uname_check mysql_num_rows($sql_uname_check);
        if (
    strlen($username) < 3) {
       echo 
    "<div style='color: #d70000;'>l'username deve essere tra i 3 e 15</div>";
       exit();
        }
    if (
    is_numeric($username[0])) {
       echo 
    'First character must be a letter';
       exit();
        }
        if (
    $uname_check 1) {
       echo 
    "<div style='color: #0ba60b;'>Ok</div>";
       exit();
        } else {
       echo 
    "<div style='color: #d70000;'>[b]$username[/b]  e' gia utilizzato</div>";
       exit();
        }
    }
    ?>
    In sostanza, come faccio a verificare che il campo username e email siano "Ok" quindi corretti?

  2. #2
    Lo puoi sapere dal responseText che ricevi.
    var OK=hr.responseText;

    Assicurati di fare i controlli sulla variabile OK all'interno dell'IF che controlla il readyState, altrimenti OK sarà undefined.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Codice PHP:
    function checkusername(){
    var 
    status document.getElementById("usernamestatus");
    var 
    document.getElementById("uname").value;
    if(
    == 0){
    status.innerHTML "Inserisci un username valido";
    } else {
    if(
    != ""){
    status.innerHTML 'ricerca...';
    var 
    hr = new XMLHttpRequest();
    hr.open("POST""prova.php"true);
    hr.setRequestHeader("Content-type""application/x-www-form-urlencoded");
    hr.onreadystatechange = function() {
    if(
    hr.readyState == && hr.status == 200) {
    status.innerHTML hr.responseText;
    var 
    ok hr.responseText;
    }
    }
        var 
    "name2check="+u;
        
    hr.send(v);
    }

    e poi il ciclo if per il bottone disabled ecc
    Codice PHP:
    function bottonereg (){
    if (
    ok == "Ok") {
    (
    codice interno con inner per il bottone)
    }

    ma non funziona.. dove sbaglio?

  4. #4
    la function bottonereg la devi richiamare subito dopo aver creato la variabile "ok" e gli devi passare come parametro il responseText.

    if(hr.readyState == 4 && hr.status == 200) {
    status.innerHTML = hr.responseText;
    var ok = hr.responseText;
    bottonereg(ok);
    }

    function bottonereg (ok){
    if (ok == "Ok") {
    (codice interno con inner per il bottone)
    }
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    funziona perfettamente, grazie mille!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    come non detto xD, in se il codice funziona.. ma dato che devo passare sia la risposta di username e sia quella di email è possibile inserire due variabili nel parametro della funzione?
    se si come fare? devo metterci in mezzo una virgola, delle parentesi cosa?

    EDIT: Ho provato con
    Codice PHP:

    [...] /*FUNZIONE checkusername*/

    if(hr.readyState == && hr.status == 200) {
    status.innerHTML hr.responseText;
    var 
    oku hr.responseText;
    bottonereg(oku);
    }

    [...] 
    /*FUNZIONE checkmail*/

    if(hr.readyState == && hr.status == 200) {
    status.innerHTML hr.responseText;
    var 
    okm hr.responseText;
    bottonereg(okm);
    }

    function 
    bottonereg(okmoku){
    if ((
    okm == "Ok")&&(oku == "Ok")){
    (
    codice inner bottoni)
    }

    ma niente..

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Aggiornamento:
    ho provato a fare questo codice e funziona.. ma quando cerco di concatenare l'if all'interno dell'altro if.. o usare i connettivi non funziona..
    Codice PHP:
    function bottonereg(okuokm){
    if (
    oku == "Ok"){
    alert("username");
    }
    if (
    okm == "Ok"){
    alert("mail");
    }


  8. #8
    Se fai due chiamate le cose si complicano, perchè ci sono due readyState.

    Devi fare richieste sincrone e controllare tutt'e due le variabili.

    codice:
    function checkusername(){
        ...
        hr.open("POST", "prova.php", false );//terzo parametro settato a false (richiesta sincrona)
        ...
        var oku = hr.responseText; 
        ...
    }
    
    function checkmail(){
        ...
        hr.open("POST", "prova.php", false );//terzo parametro settato a false (richiesta sincrona)
        ...
       var okm = hr.responseText; 
    
        ...
    }
    
    bottonereg(okm,oku);
    
    function bottonereg(okm, oku){ 
    if ((okm == "Ok")&&(oku == "Ok")){ 
    (codice inner bottoni) 
    } 
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    Niente da fare.. non mi viene
    Codice PHP:

    <script type="text/javascript" language="javascript">

    function 
    checkusername(){
    var 
    status document.getElementById("usernamestatus");
    var 
    document.getElementById("uname").value;
    if(
    == 0){
    status.innerHTML "Inserisci un username valido";
    } else {
    if(
    != ""){
    status.innerHTML 'ricerca...';
    var 
    hr = new XMLHttpRequest();
    hr.open("POST""controllausr.php"false);
    hr.setRequestHeader("Content-type""application/x-www-form-urlencoded");
    hr.onreadystatechange = function() {
    if(
    hr.readyState == && hr.status == 200) {
    status.innerHTML hr.responseText;
    var 
    oku hr.responseText;
    bottonereg(oku,okm);
    }
    }
        var 
    "name2check="+u;
        
    hr.send(v);
    }
    }
    }

    function 
    checkmail(){
    var 
    status document.getElementById("mailstatus");
    var 
    document.getElementById("mail").value;
    if(
    == 0){
    status.innerHTML "Inserisci una email valida";
    } else {
    if(
    != ""){
    status.innerHTML 'ricerca...';
    var 
    hr = new XMLHttpRequest();
    hr.open("POST""controllamail.php"false);
    hr.setRequestHeader("Content-type""application/x-www-form-urlencoded");
    hr.onreadystatechange = function() {
    if(
    hr.readyState == && hr.status == 200) {
    status.innerHTML hr.responseText;
    var 
    okm hr.responseText;
    bottonereg(oku,okm);
    }
    }
        var 
    "mail2check="+u;
        
    hr.send(v);
    }
    }
    }


    function 
    bottonereg(okuokm){ 
    if ((
    oku == "Ok")&&(okm == "Ok")){ 
    alert("Tentativo riuscito");



  10. #10
    codice:
    <script type="text/javascript" language="javascript">
    
    function checkusername(){
    var status = document.getElementById("usernamestatus");
    var u = document.getElementById("uname").value;
    if(u == 0){
    status.innerHTML = "Inserisci un username valido";
    } else {
    if(u != ""){
    status.innerHTML = 'ricerca...';
    var hr = new XMLHttpRequest();
    hr.open("POST", "controllausr.php", false);
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    hr.onreadystatechange = function() {
    if(hr.readyState == 4 && hr.status == 200) {
    status.innerHTML = hr.responseText;
    var oku = hr.responseText;
    }
    }
        var v = "name2check="+u;
        hr.send(v);
    }
    }
    }
    
    function checkmail(){
    var status = document.getElementById("mailstatus");
    var u = document.getElementById("mail").value;
    if(u == 0){
    status.innerHTML = "Inserisci una email valida";
    } else {
    if(u != ""){
    status.innerHTML = 'ricerca...';
    var hr = new XMLHttpRequest();
    hr.open("POST", "controllamail.php", false);
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    hr.onreadystatechange = function() {
    if(hr.readyState == 4 && hr.status == 200) {
    status.innerHTML = hr.responseText;
    var okm = hr.responseText;
    }
    }
        var v = "mail2check="+u;
        hr.send(v);
    }
    }
    }
    
    bottonereg(oku,okm);
    
    function bottonereg(oku, okm){ 
    if ((oku == "Ok")&&(okm == "Ok")){ 
    alert("Tentativo riuscito");
    } 
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.