Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340

    un popup che non chiude!!

    Salve, spero di aver postato nella sezione giusta!
    Ho un problema con due righe di codice in ajax, sicuramente perchè sto provando a capire qualcosa ma ho un po di difficolta', spero di avere un aiuto da qualcuno, mi spiego in breve.
    Parlo di un popup in ajax per il login utente, controlla su mysql se esiste e deve restituire una risposta affermativa o meno.
    Ho scritto questo per il form login.
    codice:
      <div id="login_form"  class="navbar-form">      
    <p><strong> AREA PRIVATA <strong></p>   
    <hr/>        
    <div class="err" id="add_err"></div>                      
    <form action="#" class="form-signin">            
    <label>Email :</label>            
    <input type="text" id="mail" name="mail" class="input-block-level" placeholder="Indirizzo Email"/>       <label><br/></label>            
    <label>Password:</label>            
    <input type="password" id="password" name="password" class="input-block-level" placeholder="password"/>            
    <label><br/><hr/></label>            
    <input type="submit" id="login" value="Login" class="btn"/>        
    <input type="button" id="cancel_hide" value="Cancel" class="btn"/>           
    </form>          
    </div>       
    <div id="shadow" class="popup"></div>
    lo script inserito è questo

    codice:
    <script type="text/javascript">
    $(document).ready(function(){
        $("#login_a").click(function(){
            $("#shadow").fadeIn("normal");
             $("#login_form").fadeIn("normal");
             $("#mail").focus();
        });
        $("#cancel_hide").click(function(){
            $("#login_form").fadeOut("normal");
            $("#shadow").fadeOut();
       });
       $("#login").click(function(){
        
            email=$("#mail").val();
            password=$("#password").val();
             $.ajax({
                type: "POST",
                url: "login.php",
                data: "email="+email+"&pwd="+password,
                success: function(html){
                
           if(html==0)
                  {
                    $("#login_form").fadeOut("normal");
                    $("#shadow").fadeOut();
                    $("#profile").html("<a href='logout.php' id='logout'>Scollegati</a>");
                    
                  }
                  else
                  {
                        $("#add_err").html("Indirizzo email o password errate!");
                         
                  }
                },
                beforeSend:function()
                {
                     $("#add_err").html("Loading...")
                }
            });
             return false;
        });
    });
    </script>
    La parte che controlla l'utente restituisce 0(zero) se non ci sono errori ed 1 (uno) se esiste un errore, ma comunque vadano le cose lo script non chiude il popup e segnala sempre errore!
    questo è il login.php dove verifico il db.

    codice:
    <?php
    ob_start();
    session_start();
    include("include/funzioni_mysql_local.php");
    $email = $_POST['email'];
    $password = $_POST['pwd'];
    $_SESSION['utente']='';
    $data = new MysqlClass();
    $data->connetti();     
    $commento_sql = $data->query("SELECT * FROM utenti WHERE email='$email' AND pass='$password' ");
    
     if(mysql_num_rows($commento_sql) > 0)   {  
    
         while($commento_obj = $data->estrai($commento_sql))      
          {         
            $_SESSION['email']=$commento_obj->email;        
            $_SESSION['utente']=$commento_obj->utente;                        
                 echo 0;        
           }else{                
                  echo 1;     
           } 
     }       
    
    
     ?>
    Non riesco a capire perchè il messaggio è sempre e comunque d'errore!
    eppure il nome utente e la password inseriti sono corretti, ma mi restituisce sempre
    "Indirizzo email o password errate!" quindi non mi chiude nemmeno il popup!
    Qualcuno vede l'errore?

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Ciao, hai printato la query? E' corretta?
    Lo script fa un echo del risultato, non e' che percaso c'è echo di altri nel file incluso?
    Quel 0 o 1 che si aspetta javsascript potrebbe non essere un intero e magari non gli piace ( if(html==0)...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Ciao, grazie per il supporto!
    il valore è sicuramente 0 oppure 1 numerico, nel dubbio ho anche corretto lo script in questo modo:
    codice:
    <?php
    ob_start();
    session_start();
    
    
    include("include/funzioni_mysql_local.php");
    
    
    $email = $_POST['email'];
    $password = $_POST['pwd'];
    $_SESSION['utente']='';
    
    
    $risposta=0;
     	
    $data = new MysqlClass();
    $data->connetti();
      
       
    $commento_sql = $data->query("SELECT * FROM utenti WHERE email='$email' AND pass='$password' ");
    
    
     
    if(mysql_num_rows($commento_sql) > 0) 
      {  
    
    
    	 while($commento_obj = $data->estrai($commento_sql)) 
    	 { 
    		$_SESSION['email']=$commento_obj->email;
    		$_SESSION['utente']=$commento_obj->utente;		
    			$risposta=0; 
    		}else{
    			$risposta=1;
    	  }
    	  
    	  echo $risposta;
      }
    	
    ?>
    ma continua a restituirmi la descrizione utente o password errati! per essere ancora più sicuro ho modificato il DB, ho tolto MD5 dalla password, ed ho inserito un banale DEMO, DEMO per non sbagliare, niente da fare, non riesco a capire perchè questa parte non mi risponde correttamente.
    codice:
    <script type="text/javascript">
    $(document).ready(function(){
    	$("#login_a").click(function(){
            $("#shadow").fadeIn("normal");
             $("#login_form").fadeIn("normal");
             $("#mail").focus();
        });
    	$("#cancel_hide").click(function(){
            $("#login_form").fadeOut("normal");
            $("#shadow").fadeOut();
       });
       $("#login").click(function(){
        
            email=$("#mail").val();
            password=$("#password").val();
             $.ajax({
                type: "POST",
                url: "login.php",
                data: "email="+email+"&pwd="+password,
                success: function(html){
                  if(html==0)
                  {
                    $("#login_form").fadeOut("normal");
    				$("#shadow").fadeOut();
    				$("#profile").html("<a href='logout.php' id='logout'>Scollegati</a>");
    				
                  }
                  else
                  {
                        $("#add_err").html("Indirizzo email o password errate!");
    					
                  }
                },
                beforeSend:function()
    			{
                     $("#add_err").html("Loading...")
                }
            });
             return false;
        });
    });
    </script>
    eppure controllo if(html==0)!!

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Ma lato php torna tutto corretto? hai provato la query coi dati che passi?
    Per ajax prova ad aggiornarlo e a metterci
    codice:
    $.ajax( {url:'login.php', data: xxxx } )
    
      .done(function(html) {
    
    
        alert( html );
    
    
      })
    
      .fail(function() {
    
        alert( "error" );
    
      })
    
      .always(function() {
    
        alert( "complete" );
    
      });


    e vedi se succede altro?
    ps
    nella console di firebug se usi Firefox o chrome dovresti vedere qualche errore nel caso

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    scusami, io sono proprio alle prime armi in ajax, il codice che mi hai scritto te, dove lo devo mettere?
    dopo $("#login").click(function()
    {
    metto qui il tuo codice?"
    };

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Al posto del tuo $.ajax
    codice:
    $.ajax( {url:'login.php', data: "email="+email+"&pwd="+password } ).done(function(html) {
        alert( html );
      })
      .fail(function() {
        alert( "error" );
      })
    
      .always(function() {
        alert( "complete" );
      });
    Puoi anche metterlo in piu' giusto per testare.. non potendo mettere mano al codice devi modificare il necessario nel caso..

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Rieccomi!!
    Il tuo pezzo di codice, dovrebbe aprirmi un alert in ogni caso, cosa che non avviene!!
    spero di aver scritto correttamente, ti posto il codice
    codice:
    <script type="text/javascript">
    $(document).ready(function(){
    	$("#login_a").click(function(){
            $("#shadow").fadeIn("normal");
             $("#login_form").fadeIn("normal");
             $("#mail").focus();
        });
    	$("#cancel_hide").click(function(){
            $("#login_form").fadeOut("normal");
            $("#shadow").fadeOut();
       });
       $("#login").click(function(){
        
            email=$("#mail").val();
            password=$("#password").val();
            
    		$.ajax( {url:'login.php', data: "email="+email+"&pwd="+password } ).done(function(html) {
       			 alert( html );
    			  })
    			  .fail(function() {
    			    alert( "error" );
    			  })
    		  .always(function() {
        		alert( "complete" );
    		  });
    		return false;
        });
    });
    </script>

  8. #8
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Nella console del browser dovresti vedere errori e quant'altro se ci fosse un errore di sintassi o della chiamata stessa!

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Consiglio
    Quando i-stanzi una variabile in javascript e buona norma (per una maggiore compatibilità tra i vari browser e versioni) farla precedere da var nomevaribile = valore;
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Fai un cast della variabile di ritorno: con ajax si scambiano sempre e solo stringhe...

    if(parseInt(html)==0)
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

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 © 2024 vBulletin Solutions, Inc. All rights reserved.