Foros del Web » Programando para Internet » PHP »

error al validar el usuario y contraseña

Estas en el tema de error al validar el usuario y contraseña en el foro de PHP en Foros del Web. Muy buenas. Para acceder a una de las partes de mi web, que sera solo para usuarios cree un php que por alguna extraña razon ...
  #1 (permalink)  
Antiguo 11/07/2012, 05:48
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 9 años, 8 meses
Puntos: 6
error al validar el usuario y contraseña

Muy buenas.
Para acceder a una de las partes de mi web, que sera solo para usuarios cree un php que por alguna extraña razon que no llego a entender no funciona.
Yo introducco los datos directamente en la tabla usuarios de la base de datos.
la base de datos tiene 3 campos:
ID
urslogin
ursclave
Pero cuando intento validarme siempre me dice que el usuario o la contraseña no es valido.
Alguien puede ver que es lo que estoy haciendo mal?

Formulario de acceso
Código:
<form method="post" action="verificar.php">
                <input type="text" name="usuario" />
                <input type="password" name="clave"  />
                <input type="submit" value="Entrar" />
            </form>
conexion.php
Código:
<?php
//Conexión con el servidor
$conexion=mysql_connect("localhost", "paxarindesign", "alcala");
//conexión con la base de datos
mysql_select_db("basedatos1",$conexion);
?>
verificar.php
Código:
<?php
//conexion con el servidor
include("conexion.php");
//consultamos la información
$rst_usuarios=mysql_query("SELECT * FROM usuarios WERE urslogin='".$_POST["usuario"]."' and usrclave='".$_POST["clave"]."'", $conexion);

if($rst_usuarios>0)
//mostrar pagina del menu
	header("location:menu.php");
	else 
		echo "El usuario o la contrase&ntilde;a no es valido";
mysql_close($conexion);
?>
Y una vez que se verifica en la base de datos que el usuario y la contrseña es valido cree la pagina menu.php
__________________
http://www.paxarindesign.es
  #2 (permalink)  
Antiguo 11/07/2012, 05:57
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 2 meses
Puntos: 139
Respuesta: error al validar el usuario y contraseña

El problema puede ser el como se comporta la funcion mysql_query
Realmente esta funcion nunca retorna valores numericos.

Si la consulta falla retorna false y si es exitosa retorna el recurso pero no valores numericos.

Para ese caso esta la funcion msyql_num_rows

Saludos!
  #3 (permalink)  
Antiguo 11/07/2012, 06:17
Avatar de exitoso23487  
Fecha de Ingreso: enero-2009
Mensajes: 49
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: error al validar el usuario y contraseña

Buenas, tal cual como te comenta el amigo gjx2 el uso de la función mysql_num_rows es lo adecuado.
Te quedaría el condicional de la siguiente manera:

Código PHP:
if(mysql_num_rows($rst_usuarios)>0){
//mostrar pagina del menu
    
header("location:menu.php");}
else {
        echo 
"El usuario o la contrase&ntilde;a no es valido";}
mysql_close($conexion); 
Ademas de que en la consulta del "SELECT" tienes en el código que colocastes "WERE" y debería de ser "WHERE".
Espero te sirva.
  #4 (permalink)  
Antiguo 11/07/2012, 08:51
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 9 años, 8 meses
Puntos: 6
Respuesta: error al validar el usuario y contraseña

Muchas gracias a los dos.
Deje el codigo verificar como me indicasteis.
Código:
<?php
//conexion con el servidor
include("conexion.php");
//consultamos la información
$rst_usuarios=mysql_query("SELECT * FROM usuarios WHERE urslogin='".$_POST["usuario"]."' and usrclave='".$_POST["clave"]."'", $conexion);
$num_registros=mysql_num_rows($rst_usuarios);
//mayor que cero es que existe el usuario
if($num_registros>0)
//mostrar pagina del menu
	header("location:menu.php");
	else 
		echo "El usuario o la contrase&ntilde;a no es valido";
mysql_close($conexion);
?>
Y aparte cambie el WERE por WHERE.
esto demustra que los pequeños errores se pueden volver grandes problemas.
Un saludo
__________________
http://www.paxarindesign.es
  #5 (permalink)  
Antiguo 11/07/2012, 14:35
Avatar de topo_bionico  
Fecha de Ingreso: junio-2012
Mensajes: 89
Antigüedad: 7 años, 3 meses
Puntos: 20
Respuesta: error al validar el usuario y contraseña

NO uses el valor directo del post sin sanitizar, te van a hacer un sql inyection marca acme.

Código PHP:
<?php

//Verificamos que las variables contengan datos
if (isset($_POST["usuario"]),$_POST["clave"]){
    
//conexion con el servidor
    
include("conexion.php");
    
    
//Limpiar datos para evitar SQL Inyection
    
$usuario=mysql_real_escape_string($_POST["usuario"]);
    
$clave=mysql_real_escape_string($_POST["clave"]);
    
    
//consultamos la información
    
$rst_usuarios=mysql_query("SELECT * FROM usuarios WHERE urslogin='".$usuario."' AND usrclave='".$clave."'"$conexion);

    
//Contamos cantidad de resultados
    
$num_registros=mysql_num_rows($rst_usuarios);
    
    if(
$num_registros==1){
        
//mostrar pagina del menu
        
header("location:menu.php");}
        else{echo 
"El usuario o la contrase&ntilde;a no es valido";}
    
mysql_close($conexion);
}
?>
Ademas, cuando alguien pone un usuario y clave valido la aplicación redirige a menu.php

Cualquiera por prueba y error encontraría el nombre, carga el menu y ya esta en la zona supuestamente protegida.

Acá podes leer un tutorial bastante sencillo
[URL="http://www.desarrolloweb.com/manuales/37/"]http://www.desarrolloweb.com/manuales/37/[/URL]
  #6 (permalink)  
Antiguo 13/07/2012, 02:08
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 9 años, 8 meses
Puntos: 6
Respuesta: error al validar el usuario y contraseña

Cita:
Iniciado por topo_bionico Ver Mensaje
NO uses el valor directo del post sin sanitizar, te van a hacer un sql inyection marca acme.

Código PHP:
<?php

//Verificamos que las variables contengan datos
if (isset($_POST["usuario"]),$_POST["clave"]){
    
//conexion con el servidor
    
include("conexion.php");
    
    
//Limpiar datos para evitar SQL Inyection
    
$usuario=mysql_real_escape_string($_POST["usuario"]);
    
$clave=mysql_real_escape_string($_POST["clave"]);
    
    
//consultamos la información
    
$rst_usuarios=mysql_query("SELECT * FROM usuarios WHERE urslogin='".$usuario."' AND usrclave='".$clave."'"$conexion);

    
//Contamos cantidad de resultados
    
$num_registros=mysql_num_rows($rst_usuarios);
    
    if(
$num_registros==1){
        
//mostrar pagina del menu
        
header("location:menu.php");}
        else{echo 
"El usuario o la contrase&ntilde;a no es valido";}
    
mysql_close($conexion);
}
?>
Ademas, cuando alguien pone un usuario y clave valido la aplicación redirige a menu.php

Cualquiera por prueba y error encontraría el nombre, carga el menu y ya esta en la zona supuestamente protegida.

Acá podes leer un tutorial bastante sencillo
[URL="http://www.desarrolloweb.com/manuales/37/"]http://www.desarrolloweb.com/manuales/37/[/URL]
Muchisimas gracias la verdad que con esto del php todabia estoy un poco perdido y toda ayuda es buena.
__________________
http://www.paxarindesign.es

Etiquetas: contraseña, formulario, mysql, sql, tabla, usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:02.