Ayer noche me puse a hacer el sistema de registro de un proyecto y en principio todo bien, le meti avisos en jquery si las contraseñas no coinciden, nombre de usuario + de 3 caracteres, si el email no tiene @ y un . el email es incorrecto, etc..
Y ahora estoy con el aviso de que el nombre del usuario ya esta registrado, para estas conexiones a la BBDD uso AJAX sencillo sin json y me ha surgido un problema que me esta llevando por los caminos de la amargura durante las ultimas 6 horas.
funcion que ejecuta AJAX:
function comUser(){
user=$('#regUser').val();
$.post("./control/guarda.php",{comuser:user},function(data) {
if (data="comok")
{
alert("comok");
$('#usersAviso').fadeIn(400);
}
else {
alert("ko");
}
});
}
Archivo que me ejecuta las ordenes AJAX mandadas desde .js:
if($_POST['comuser']){
$user=mysqli_real_escape_string($enlace,$_POST['user']);
$sql_usu="select user_user from usuarios where usu_user='$user'";
$res_usu=mysqli_query($enlace,$sql_usu);
$linea_u=mysqli_fetch_array($res_usu);
if($linea_u['usu_user']=$user) die("comok");
else die("comko");
}
En este caso debería devolverme al archivo .js "comok" si el usuario consultado esta registrado y "comko" si no lo esta. Y esto me esta dando un montón de problemas, desde llegarme los dos, hasta insertar un usuario que no esta en la BDD y que me devuelva que si que esta..
Supongo que ya habrás dado con la tecla a estas alturas, pero parece que en el lado servidor, estás buscando el parámetro 'comuser', pero después pareces intentar obtener el nombre introducido utilizando 'user'.
Independientemente de esto, te recomendaría utilizar siempre Prepared Statements cuando trabajes con SQL, siempre es mas seguro que concatenando cadenas para construir consultas e ir acordándote de escapar los párametros, esto es la madre de todos los SQLInjections :)
Ayer noche me puse a hacer el sistema de registro de un proyecto y en principio todo bien, le meti avisos en jquery si las contraseñas no coinciden, nombre de usuario + de 3 caracteres, si el email no tiene @ y un . el email es incorrecto, etc..
Y ahora estoy con el aviso de que el nombre del usuario ya esta registrado, para estas conexiones a la BBDD uso AJAX sencillo sin json y me ha surgido un problema que me esta llevando por los caminos de la amargura durante las ultimas 6 horas.
funcion que ejecuta AJAX:
function comUser(){
user=$('#regUser').val();
$.post("./control/guarda.php",{comuser:user},function(data) {
if (data="comok")
{
alert("comok");
$('#usersAviso').fadeIn(400);
}
else {
alert("ko");
}
});
}
Archivo que me ejecuta las ordenes AJAX mandadas desde .js:
if($_POST['comuser']){
$user=mysqli_real_escape_string($enlace,$_POST['user']);
$sql_usu="select user_user from usuarios where usu_user='$user'";
$res_usu=mysqli_query($enlace,$sql_usu);
$linea_u=mysqli_fetch_array($res_usu);
if($linea_u['usu_user']=$user) die("comok");
else die("comko");
}
En este caso debería devolverme al archivo .js "comok" si el usuario consultado esta registrado y "comko" si no lo esta. Y esto me esta dando un montón de problemas, desde llegarme los dos, hasta insertar un usuario que no esta en la BDD y que me devuelva que si que esta..
¿Alguna idea?
Gracias.
08/08/2014 18:10
Asegúrate de usar el operador de comparación == y no el de asignación = dentro de los if
08/08/2014 21:44
estoy lanzando la función desde un onchange en un input.
Estoy probando esto:
if($_POST['comuser']){
$user=mysqli_real_escape_string($enlace,$_POST['user']);
$sql_usu="select user_user from usuarios where usu_user='$user'";
$res_usu=mysqli_query($enlace,$sql_usu);
$count = mysqli_num_rows($res_usu);
if($count == 0){
die("comok");
}
else{
else die("comko");
}
}
¿Como lo veis?
10/08/2014 12:04
Independientemente de esto, te recomendaría utilizar siempre Prepared Statements cuando trabajes con SQL, siempre es mas seguro que concatenando cadenas para construir consultas e ir acordándote de escapar los párametros, esto es la madre de todos los SQLInjections :)
10/08/2014 15:47
Sobre los Prepared Statements para cuando trabaje con SQL, nunca había escuchado nada al respeto.