Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/08/2014, 20:15
Avatar de Hyemin
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.