Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: walidacja formularza
Forum PHP.pl > Forum > XML, AJAX
Mustafa
Witam,

otóż mam problem z poprawnym sprawdzeniem czy dany login już istnieje.

Kod
var r=1;
var v=0;



function check_login_sql(str)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if(xmlhttp.readyState==0 || xmlhttp.readyState==1){
    document.getElementById("check_login").innerHTML="<img src=\"images/ajax-loader.gif\"><span style=\"color: red\">Sprawdzanie loginu</span>";
  }    
  if(xmlhttp.readyState==4){
    //document.getElementById("check_login").innerHTML="";
    //document.getElementById("check_login").innerHTML=xmlhttp.responseText;
    v = xmlhttp.responseText;

    }
   }

xmlhttp.open("GET", "javascript/check_login.php?login="+str,true);
xmlhttp.send();

    if(v == 0){
        r = 0;
    }else{
        r = 1;
    }
}

function check_login(login){
    
    if(login.length==0){
        document.getElementById("check_login").innerHTML="<img src=\"images/register/unchecked.gif\"><span>Podaj swój login</span>";
        return 0;
    }else if(!/^([a-zA-Z0-9_\.\-])+$/i.test(login)){
        document.getElementById("check_login").innerHTML="<img src=\"images/register/unchecked.gif\"><span style=\"color: red\">Twój login zawieta niedozwolone znaki</span>";
        return 0;
    }else if(login.length>20){
        document.getElementById("check_login").innerHTML="<img src=\"images/register/unchecked.gif\"><span style=\"color: red\">Twój login jest za długi</span>";
        return 0;
    }else if(login.length<5){
        document.getElementById("check_login").innerHTML="<img src=\"images/register/unchecked.gif\"><span style=\"color: red\">Twój login jest za krótki</span>";
        return 0;
    }else{
        check_login_sql(login);
        if(r == 0){
            document.getElementById("check_login").innerHTML="<img src=\"images/register/unchecked.gif\"><span style=\"color: red\">Login jest już zajęty</span>"+r+","+v+","+login;
            return 0;    
        }else{
            document.getElementById("check_login").innerHTML="<img src=\"images/register/checked.gif\">"+r+","+v+","+login;
            return 1;
        }
    }
}


Z pozoru wszytko wydaje się być OK, ale niestety login nie zawsze zostaje poprawnie sprawdzony (testowy zajęty nick to maslo13) i widnieje jako dostępy (cała przykładowa strona tutaj). Bardzo będę wdzięczny za wszelką pomoc w rozwiązaniu mojego problemu smile.gif .
piotr.kazmierczak
A po stronie php i zapytania do bazy danych wszystko jest ok ? Bo Ajax dobrze wysyła parametr tylko zwracany rezultat "0" jest zły jak rozumiem
Mustafa
Już jakoś sobie poradziłem, ale dziękuje za zainteresowanie smile.gif .

Kod
function check_login_sql(str)
{
var xmlhttp;

if (window.XMLHttpRequest) {
  xmlhttp=new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
}else{
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
}

xmlhttp.open("GET", "javascript/check_login.php?login="+str,false);
xmlhttp.send();

    if(parseInt(xmlhttp.responseText)==0){
        return 0;
    }else{
        return 1;        
    }

}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.