Foros del Web » Programando para Internet » PHP »

acceso si se cumplen tres condiciones

Estas en el tema de acceso si se cumplen tres condiciones en el foro de PHP en Foros del Web. Hola! Estoy haciedo un sistema de validacion de ususarios muy simple. Tengoi que comprobar tres campos de la BD.. usuario, password y contesto. Para entrar ...
  #1 (permalink)  
Antiguo 14/06/2003, 15:49
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
acceso si se cumplen tres condiciones

Hola!

Estoy haciedo un sistema de validacion de ususarios muy simple. Tengoi que comprobar tres campos de la BD.. usuario, password y contesto.

Para entrar a la página se deben de comprobar estas tres cosas en la BD, el usuario y el pass desde el form de acceso yel campo contesto tiene que estar vacio. Si ya contiene un dato entonces un que el user y el passwors sean correctos no se debe de dejar pasar. Tengo este codigo:

Código PHP:

$db 
mysql_connect("$localhost","$usr","$pasw");
mysql_select_db("$dbase",$db);

$leer mysql_query("SELECT usuario, pass, contesto FROM usuarios WHERE usuario='$usuario' && pass='$pass' && contesto=''",$db);
$val mysql_num_rows($leer);

if(
$val == 2){

echo 
"<center><b>Ya a contestado el Test</b></center>";
exit();
}

elseif(
$val == 0) {

echo 
"<center><b>No se reconoce el nombre de usuario o la contraseña. Verifique.</b></center>";
exit();
}
mysql_free_result($leer);
mysql_close($db); 
Como vne en el query se comprueba si el campo contesto esta vacio.. pero al momento de probar y poner los datos en el form siempre me dice que el usuario y contraseña no existen.. aun cuandfo si existen.. y aun que el campo contesto eiene datos no me marca que ya se a contestado el test.

Que estoy haciendo mal?
__________________
Equívocos sin importancia
  #2 (permalink)  
Antiguo 14/06/2003, 15:59
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 15 años, 8 meses
Puntos: 2
Kizas sea un error minimo,,
pero veamos asi:

Código PHP:
$db mysql_connect("$localhost","$usr","$pasw");
mysql_select_db("$dbase",$db);

$leer mysql_query("SELECT usuario,pass,contesto FROM usuarios WHERE usuario='$usuario' && pass='$pass' && contesto='',$db);
$val = mysql_num_rows($leer);

if($val == 2){

echo "
<center><b>Ya a contestado el Test</b></center>";
}

elseif($val == 0) {

echo "
<center><b>No se reconoce el nombre de usuario o la contraseñaVerifique.</b></center>";
}
mysql_free_result($leer);
mysql_close($db); 
__________________
http://www.chorcha.com

Última edición por camargo; 14/06/2003 a las 16:03
  #3 (permalink)  
Antiguo 14/06/2003, 16:00
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
Por quepara poder contestar el test no debe de haberlo contestado antes. Si el campo conteso tiene el valor si significa que ya lo contesto y no puede volver a hacerlo, por eso en la condicicion se checa si el campo esta vacio... o al menos eso digo yo :P
__________________
Equívocos sin importancia
  #4 (permalink)  
Antiguo 14/06/2003, 16:00
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

De principio, creo que en MySQL no se usa && sino AND.

Y segundo, ¿has leido en el manual lo que hace la funcion mysql_num_rows()? Porque a mi me parece o que no lo has leido o que no lo has entendido.

La consulta solo te devuelve registros si se cumplen las tres condiciones. Si no se cumple alguna de las tres, no devuelve registros. mysql_num_rows() devuelve el numero de registros que ha devuelto la consulta. Asi que devolvera 0 si no se cumple alguna de esas tres condiciones, es decir, si no existe el usuario o el password es incorrecto o contesto no esta vacio.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 14/06/2003, 16:02
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 15 años, 8 meses
Puntos: 2
josemi estas en un error,,, el AND, asi como el OR y el NOT,, sus sintaxis equivalentes son &&, || y !

Lee bien lo que dijo Josemi .. En PHP si que es equivalente . .pero en SQL de Mysql NO ..

Un saludo,
__________________
http://www.chorcha.com

Última edición por Cluster; 14/06/2003 a las 19:07
  #6 (permalink)  
Antiguo 14/06/2003, 16:03
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
josemi gracias..

en cuanto mysql_num_rows que podria hacer entonces en lugar de eso?
__________________
Equívocos sin importancia
  #7 (permalink)  
Antiguo 14/06/2003, 16:04
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 15 años, 8 meses
Puntos: 2
SELECT COUNT(*)
__________________
http://www.chorcha.com
  #8 (permalink)  
Antiguo 14/06/2003, 16:08
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 892
Antigüedad: 15 años, 10 meses
Puntos: 3
eh...
vaya... podrias ser un poquto mas especifico? no capizzi...
__________________
Equívocos sin importancia
  #9 (permalink)  
Antiguo 14/06/2003, 16:50
Avatar de Sexma  
Fecha de Ingreso: junio-2003
Ubicación: Valencia
Mensajes: 109
Antigüedad: 14 años, 6 meses
Puntos: 0
Lo que quiere decir camargo es que la consulta sea

$sql = SELECT COUNT(*) FROM usuarios WHERE usuario='$usuario' && pass='$pass' && contesto='';

$result_cuenta = mysql_query($sql_cuenta);
$row_cuenta = mysql_fetch_array($result_cuenta);

y en $row_cuenta['0'] tienes el numero de filas que te ha devuelto la consulta. Incluso si pones SELECT COUNT(*) VALUE total ..... y haces todo lo demas la variable que contiene el valor final es $row_cuenta['total'].

No se si me he explicado bien pero mas o menos es esa la idea.
  #10 (permalink)  
Antiguo 14/06/2003, 19:03
 
Fecha de Ingreso: agosto-2002
Ubicación: Aragón
Mensajes: 254
Antigüedad: 15 años, 4 meses
Puntos: 0
Vamos a ver... Si no he entendido mal necesitas un usuario necesita que los tres condicionantes sean válidos para entrar, ¿no?. Pues la consulta está bien pero te falla lo más importante: La estructura de control
Código PHP:
$db mysql_connect("$localhost","$usr","$pasw");
mysql_select_db("$dbase",$db);

$leer mysql_query("SELECT usuario, pass, contesto FROM usuarios WHERE usuario='$usuario' && pass='$pass' && contesto=''",$db);
// Si no se cumple una de las tres condiciones la consulta te devolverá 0 registros, así que...
if (mysql_num_rows($leer)!=0)
{
    
// Si es distinto de 0 es que los condicionantes han sido cumplidos.
    // Así que dejamos que el usuario entre al sistema
    
}else
{
    
// Si mysql_num_rows($leer) es igual a 0, no permitimos la entrada
    //Denegamos el acceso al no haber ningún registro que cumpla los tres requisitos.
}
mysql_free_result($leer);
mysql_close($db); 
Saludos,
Ababol.

Última edición por Ababol; 14/06/2003 a las 19:08
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:31.