Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con formulario de login y sesiones

Estas en el tema de Problema con formulario de login y sesiones en el foro de PHP en Foros del Web. Buenas tardes, recien hace unas pocas semanas que estoy aprendiendo php, me compre varios libros en Amazon y estuve leyendo el foro para aprender de ...
  #1 (permalink)  
Antiguo 13/08/2014, 20:15
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Problema con formulario de login y sesiones

Buenas tardes, recien hace unas pocas semanas que estoy aprendiendo php, me compre varios libros en Amazon y estuve leyendo el foro para aprender de ejemplos y hoy tengo un problema que no se resolver.

Tengo 2 archivos login.html y acceso.php

Login es (bien simple)

Código:
<BODY>
<FORM METHOD=POST ACTION="acceso.php">
Usuario: 
<INPUT TYPE="text" NAME="nombre">
<BR>
Clave:
<INPUT TYPE="password" NAME="clave">

<INPUT TYPE="submit"name="submit" value="Enviar">
</FORM>
</BODY>
Cuando voy a acceso.php tengo lo siguiente

Código:
<?php 
$nombre = $_POST['nombre'];
$clave = $_POST['clave'];


 $conexion = mysqli_connect(
               '127.0.0.1',
               'root',
               'password',
               'base');
       if ($conexion == false) {
        echo ('Error al conectar con la base');
         exit();
       }
//La base se conecta bien, hice pruebas generando errores adrede para ver que efectivamente //este conectandose


$consulta = "select * from usuarios where nombre='$nombre' and contrasena='$clave'";
//escribo la query

 $resultado = mysqli_query( $conexion, $consulta);
       if ($resultado == false) {
           echo ('Error al traer los datos');
           mysqli_close($conexion);
           exit();
       }
       


if (mysql_num_rows($resultado)!=0){ 
    session_start(); 
    session_register("autentificado"); 
    $autentificado = "SI"; 
    header ("Location: siguiente.php"); 
}else { 

    header("Location: pgerror.php"); 
} 
mysql_free_result($rs); 
mysql_close($conexion);
El codigo para la sesion lo aprendi de un post de este foro http://www.forosdelweb.com/f18/validar-user-password-287414/

El tema es que siempre me va a la pagina de error aun cuando todo en teoria esta bien, hice las siguientes pruebas:

1) Borre todo y solo puse echo ("tu nombre es '$usuario' y tu clave es '$clave'"; para ver si estaba trayendo bien el $_POST y efectivamente lo trae bien

2) Puse una contrasena equivocada en la conexion mysql para verificar que efectivamente este cntrolando el error y asi lo hace.

3) Probe ponerle luego del ejemplo #1 la linea

while ($fila = mysqli_fetch_row($resultado)){
printf("(%u) %s - %s </br>", $fila[0], $fila[1], $fila[2]);
}
Me dio bien, ya que cuando el usuario y contrasena eran corectos me decia" tu nombre es fulano y tu contraena es contrasena" seguido de (0), nombre, contrasena .

Si el password era incorrecto el ejemplo 1) daba tu nombre es nombre y tu contrasena es contrasena" pero el while no se ejecutaba.

Bueno, gracias por leerme y les estare agradecido si me pueden indicar que hacer o algun enlace para leer.
  #2 (permalink)  
Antiguo 14/08/2014, 03:48
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Problema con formulario de login y sesiones

Hola Bienvenido :



Código PHP:
Ver original
  1. mysql_num_rows($resultado)

En el if , estas usando la extensión obsoleta de mysql para php , mientras que en el resto del script estas usando mysqli , cámbialo por :

Código PHP:
Ver original
  1. mysqli_num_rows($resultado)

Y debería funcionar !
Saludos!
P.D : El html en minusculas por favor!! :P
  #3 (permalink)  
Antiguo 14/08/2014, 05:58
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Problema con formulario de login y sesiones

Como te comenta Djoaq, el problema es que estas mezclando mysqli con mysql.
Cambia por mysqli_num_rows y problema resuelto!

Una vez tengas tu código funcionando, pasamos a hablar de la seguridad... ya que tu algoritmo es vulnerable a SQLinjection, pero vayamos por partes ;)

Saludos.
__________________
Follow me on twitter @franbedia
  #4 (permalink)  
Antiguo 14/08/2014, 18:40
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Problema con formulario de login y sesiones

Estoy editando el mensaje para dar por solucionado el asunto, luego de horas de ensayo y error y tres ratones rotos por tanto clic en enlaces logre dar con el problema

Veran, yo estaba creando la sesion con session_start() y session_register, segun la documentacion de php (http://php.net//manual/es/function.session-register.php) esta obsoleta y fue eliminada en php 5.4 ahora las sesiones deben crearse de esta manera
Código:
$_SESSION["variable"] = "valor.";
Gracias a todos por los aportes, por lo que veo los libros que compre voy a tener que revisarlos bien ya que imagino que este no debe ser el unico cambio que hayan hecho :(

Última edición por Hyemin; 14/08/2014 a las 19:47 Razón: SOLUCIONADO

Etiquetas: inicio, sesiones
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 13:22.