Visualizzazione risultati 1 fino 4 di 4

Discussione: JS PHP gestione asincrona

  1. #1
    Guest

    Predefinito JS PHP gestione asincrona

    Premeso che sono alle prime armi con la programmazione web e già sto impazzendo con i primi programmi di login. Sto lavorando in weblocal con Aptana-EasyPHP e non riesco a fare colloquiare il programma JS-Ajax con l'altro (lato-server) PHP. Ho provato di inserire un alert per verificare il ritorno tramite ".responseText" e questo riceve tutto lo script PHP.
    Ringrazierò se qualcuno mi da una mano o almeno uno spunto per poter continuare avanti.

    il programma JS-Ajax è il seguente:
    Codice:
    // crea l'oggetto per la comunicazione AJAX con il server
    // compatibile con tutti i browser che supportano AJAX
    function crea_http_req() {
    	var req = false;
    	if (typeof XMLHttpRequest != "undefined")
    		req = new XMLHttpRequest();
    	if (!req && typeof ActiveXObject != "undefined") {
    		try {
    			req=new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e1) {
    			try {
    				req=new ActiveXObject("Microsoft.XMLHTTP");
    			} catch (e2) {
    				try {
    					req=new ActiveXObject("Msxml2.XMLHTTP.4.0");
    				} catch (e3) {
    					req=null;
    				}
    			}
    		}
    	}
    
    	if(!req && window.createRequest)
    		req = window.createRequest();
    
    	if (!req) alert("Il browser non supporta AJAX");
    
    	return req;
    }
    
    // l'oggetto per comunicare con il server
    var http_req = crea_http_req();
    
    // invia i dati del form al server
    function invia_dati() {
    	var dati_post = "username=" +
    					encodeURIComponent( document.getElementById("nome_utente").value ) +
    					"&password=" +
    					encodeURIComponent( document.getElementById("password").value );
    
    	http_req.onreadystatechange = gestisci_risposta;
    	http_req.open('POST', 'loginCondominio.php', true);
    	http_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	http_req.setRequestHeader("Content-length", dati_post.length);
    	http_req.setRequestHeader("Connection", "close");
    	http_req.send(dati_post);
    }
    
    // recupero e gestisco la risposta inviata dal server
    function gestisci_risposta() {
    	if(http_req.readyState == 4) {
    		var esito = http_req.responseText;
    		alert (esito);
    		switch (esito) {
    		  case '1':
    			document.getElementById("messaggio").innerHTML = "Errore: Nome utente errato";	
    		  break;
    
    		  case '2':
    			document.getElementById("messaggio").innerHTML = "Errore: Password errata";
    		  break;
    
    		  case '3':
    			location.href = "menu.php";
    		  break;
    
    		  default:
    			alert('Risposta del server non riconosciuta: ' + esito);
    		}
    	}
    }
    -----------------------------------------------------------------------------------------
    mentre il programma PHP è:

    Codice PHP:
    $username = utf8_decode($username);
    $password = utf8_decode($password);

    $password = sha1($password);


    // provo ad effettuare il login con i dati recuperati dal form
    //$esito = login($_POST['username'],$_POST['password']);
    $esito = login($username, $password);

    // converto in UTF8 la risposta restituita dalla funzione login()
    $esito = utf8_encode($esito);

    // invio la risposta al client
    echo $esito;

    // funzione per la verifica dei dati di login
    function login($username, $password)
    {
    require(
    "opendbCondominio.php");
    $result=mysql_query("SELECT count(*) as total from condomini WHERE NOME_UTENTE = '$username'");
    $data=mysql_fetch_assoc($result);
    $num_occorrenze = $data['total'];

    $sql = "SELECT PASSWORD, COGNOME_CONDOMINO FROM condomini WHERE NOME_UTENTE = '$username'";
    $res = mysql_query($sql,$conn);
    $info = mysql_fetch_row ($res);
    $passw_corretta = $info[0];
    $cognome = $info[1];


    // se la passw non è stata trovata è perché nome_utente è errato
    if($num_occorrenze < 1) {
    return
    1;
    }

    if(
    $password != $passw_corretta) {
    return
    2;
    }

    if(
    $password == $passw_corretta) {
    return
    3;
    }

    }
    -------------------------------------------------------------------------------
    anticipatamente grazie
    Ultima modifica di karl94 : 20-03-2013 alle ore 20.42.37 Motivo: Formattazione del codice sorgente

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Non capisco: qual'è il problema? Lo script PHP non viene interpretato dal server ma viene inviato così com'è nel file? Se è così devi ricontrollare le impostazioni del server.

  3. #3
    Guest

    Predefinito

    Ciao Karl,
    si, apparentemente l'istruzione "echo $esito" mi riposta tutto lo script PHP e non il valore 1, 2 o 3 della function login(). La cosa curiosa è che quando faccio il debug soltanto dello script PHP (Run As -> PHP Script) da Aptana, impostando i valori $nameuser e $ password il programma funziona perfettamente ma, quando lo eseguo con l'open Ajax no.
    Nel caso sia come tu dici controllare l'impostazione del server, cosa devo fare ??
    Ti saluto

  4. #4
    Guest

    Predefinito

    Ho provato creando il database e i programmi sul sito Altervista e funziona tutto perfetto. Perché in locale non ci riesco ? Non ho idea !
    Non potendo testare le applicazioni in locale è un problema enorme.
    Please, aiuto, auxilio, help

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •