Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Basi Ajax: Problema GET!

    Ciao a tutti
    Da poco mi sto affacciando al mondo Ajax, ma non riesco a capire come funziona in modo corretto.
    Ho provato un semplicissimo script per controllare, al momento della perdita di focus di una casella input, se la stringa contenuta in quest'ultima si trovasse già all'interno del database o meno (per capirci, il classico controllo dell'username).
    Fatto sta che i risultati sono distrastrosi:

    CODICE HTML:
    codice:
    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    <INPUT TYPE="TEXT" SIZE="20" onblur="controlla_us(this.value)" style='border:green solid'>
    <SCRIPT>
    function controlla_us(ut){
    var j_ajax=new XMLHttpRequest();
    j_ajax.open("GET","controllo_ut.php?utente="+ut,true);
    j_ajax.send();
    j_ajax.onreadystatechange=function(){
     if(j_ajax.readyState==4){
     if(j_ajax.status==200){
     alert(j_ajax.responseText); 
    }
     else {
     alert(j_ajax.statusText);
     }}}
    }
    </SCRIPT>
    </BODY>
    </HTML>
    CODICE PHP:
    codice:
    <?php
    if($_GET["utente"]){
    MySQL_connect("localhost","maniaweb") or die("Errore mysql");
    MySQL_select_db("my_maniaweb") or die("Errore database");
    $query=MySQL_query("SELECT username FROM Utente") or die("Errore query");
    while($rip=MySQL_fetch_array($query)){
    if($rip["username"]==$utente){
    print "gia esiste";
    return;
    }}
    print "non esiste";
    }
    print "non esiste il get!";
    ?>
    Ora, nella tabella "Utente" del database si trova solo uno ed un unico username di nome vava94.
    Per quale motivo quando inserisco sia vava94 sia altri nomi nell'input, quest'ultimo mi da sempre lo stesso risultato ossia :"non esistenonesiste il get!"

    Qualcuno sa essermi di aiuto?
    Scusate l'ignoranza, sono alle primissime armi, sto da poco più di mezzora xD

    Saluti
    Marco

  2. #2
    Se devi lavorare con AJAX ti consiglio assolutamente di utilizzare qualche libreria specifica, in particolare jQuery è una delle migliori.

    Comunque, se lo script PHP restituisce che l'username non esiste il problema è nel PHP e in questo caso AJAX non c'entra niente. Per cominciare al posto della query MySQL:

    codice:
    "SELECT username FROM Utente"
    ti consiglio di usare una del tipo:

    codice:
    "SELECT username FROM Utente WHERE username = '" . mysql_real_escape_string($_GET['utente']) . "';
    Così invece di selezionare potenzialmente migliaia di righe inutili e poi interare su di esse vedi direttamente se l'username esiste. Prova a fare questi cambiamenti e a controllare il risultato della query (se restituisce 0 righe allora l'username è libero) e vedere cosa succede.

    Se non vuoi modificare il codice credo che il tuo script non funzioni per il semplice fatto che la riga

    codice:
    $rip["username'] == $utente
    dovrebbe invece essere:

    codice:
    $rip["username"] == $_GET['utente']
    visto che la variabile $utente non è definita a meno che tu non abbia register globals settato su On!

    PS: mysql_real_escape_string è una funzione di PHP che serve per passare in tutta sicurezza i paramentri alle query SQL senza pericolo di SQL Injection! Devi assolutamente usarla se passi dati inseriti dagli utenti.
    Visita il mio blog e canale YouTube dedicati a programmazione web e sicurezza informatica.

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.