Foros del Web » Programando para Internet » PHP »

Problemas con funcion login

Estas en el tema de Problemas con funcion login en el foro de PHP en Foros del Web. Buenas a todos. Gente tengo una function login que quiero implementar por que me parecio bastante interesante, pero ya la he implementado la he volteado ...
  #1 (permalink)  
Antiguo 29/04/2016, 08:35
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Problemas con funcion login

Buenas a todos.

Gente tengo una function login que quiero implementar por que me parecio bastante interesante, pero ya la he implementado la he volteado de pies a cabeza y no quiere funcionar. Lo curioso es que no me muestra un error de Ejecucion ni de sintaxis si no de validacion echo "solicitud invalida" Pero ya lo he cambiado y descambiado he leido miles de veces los codigos y todo esta igual,*Lo se es una muy mala practica tomar codigos, pero quiero aprender de un modo en que Pruebo y aprendo* y no se ya voy 3 dias en esto y no doy con el error Gracias Chicos quien me pueda hechar un Cable

*Codigos*
Funcion
Código PHP:
Ver original
  1. function login($username, $password, $mysqli){
  2.     // usar delacaraciones preparadas significa que la inyeccion de SQL no sera posible
  3.     if ($stmt = $mysqli->prepare("SELECT Nombre, Apellidos, password FROM usuario WHERE username = ? LIMIT 1")){
  4.         $stmt->bind_param('s', $username); // Une $email a el parametro.
  5.         $stmt->execute();
  6.         $stmt->store_result();
  7.        
  8.         // Obitne las variables del resultado
  9.         $stmt->bind_result($username, $Nombre, $Apellidos, $password);
  10.         $stmt->fetch();
  11.        
  12.         //Hace le HASH de la contraseña con una sal unica.
  13.         $password = hash('sha512', $password);
  14.         if ($stmt->num_rows == 1){
  15.             // Si el usuario existe, revisa si la cuenta esta bloqueada
  16.             // Por muchos intentos de conexion
  17.            
  18.             if (checkbrute($username, $mysqli) == true) {
  19.                 // La cuenta est bloqueada
  20.                 // Obten el agente de usuario del usuario
  21.                 $user_browser = $_SERVER['HTTP_USER_AGENT'];
  22.                 // Proteccion XSS ya que podriamos imprimir este valor.
  23.                 $username = preg_replace("/[^0-9]+/", "", $username);
  24.                 $_SESION['username'] = $username;
  25.                 // Proteccion XSS ya que podriamos imprimir este valor.
  26.                 $username = preg_replace("/[^a-zA-Z0-9_\-]+", "", $username);
  27.                 $_SESION['username'] = $username;
  28.                 $_SESSION['login_string'] = hash('sha512', $password . $user_browser);
  29.                 // inicio de sesion exitoso
  30.                 return true;
  31.             } else {
  32.                 // La contraseña no es correcta
  33.                 // Se graba este intento en la BASE DE DATOS.
  34.                 $now = time();
  35.                 $mysqli->query("INSERT INTO inyeccion(username, time) VALUE ('$username','$now)");
  36.                 return false;
  37.                 }
  38.             }
  39.         } else {
  40.         // Vos no xistis boludo
  41.         return false;
  42.         }
  43.     }

Login
Código PHP:
Ver original
  1. <?php
  2. // muestra los errores de ejecucion que tengo
  3. error_reporting(E_ERROR | E_WARNING | E_PARSE);
  4.  
  5. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  6. ?>
  7. <?php
  8. include_once 'db_connect.php';
  9. include_once 'function.php';
  10.  
  11. sec_session_start();
  12.  
  13. if (isset($_POST['username'], $_POST['p'])){
  14.     $username = $_POST['username'];
  15.     $password = $_POST['p']; // Contraseña con el HASH
  16.  
  17. if(login($username, $password, $mysqli) == true) {
  18.     // Inicio de session exitosa
  19.     header('Location: ../protected_page.php');
  20.     exit();
  21.     } else {
  22.     header('Location: ../index.php?error=1');
  23.     exit();
  24.     }
  25. } else {
  26.     // Las variables POST correctas no se enviaron a esta pagina.
  27.     echo 'Solicitud invalida';
  28. }
  29. ?>
  #2 (permalink)  
Antiguo 29/04/2016, 09:41
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Problemas con funcion login

Y donde se valida la contraseña exactamente? por que no lo veo por ningun lado, no se si en la funcion checkbrute() puede ser que este el problema, pero no muestras lo que hace lo que hace.
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 29/04/2016, 09:46
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con funcion login

Gracias amigo por responder, no subi la funcion del Checkbrute por que no queria saturar esto con tanto codigo y me mandaran a el cuerno :/

Código PHP:
Ver original
  1. if (checkbrute($username, $mysqli) == true) {
  2.                 // La cuenta est bloqueada
  3.                 // Obten el agente de usuario del usuario
  4.                 $user_browser = $_SERVER['HTTP_USER_AGENT'];
  5.                 // Proteccion XSS ya que podriamos imprimir este valor.
  6.                 $username = preg_replace("/[^0-9]+/", "", $username);
  7.                 $_SESION['username'] = $username;
  8.                 // Proteccion XSS ya que podriamos imprimir este valor.
  9.                 $username = preg_replace("/[^a-zA-Z0-9_\-]+", "", $username);
  10.                 $_SESION['username'] = $username;
  11.                 $_SESSION['login_string'] = hash('sha512', $password . $user_browser);
  12.                 // inicio de sesion exitoso
  13.                 return true;
  14.             } else {
  15.                 // La contraseña no es correcta
  16.                 // Se graba este intento en la BASE DE DATOS.
  17.                 $now = time();
  18.                 $mysqli->query("INSERT INTO inyeccion(username, time) VALUE ('$username','$now)");
  19.                 return false;
  20.                 }
  21.             }
  22.         } else {
  23.         // Vos no xistis boludo
  24.         return false;
  25.         }
  26.     }
Esta es la parte que sigue y donde se valida el Password es hay mismo en esta funcion esta en la parte del Login_string Gracias por responder amigo
  #4 (permalink)  
Antiguo 29/04/2016, 10:04
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Problemas con funcion login

Pues sigo sin verlo

Si te refieres a esto
Código PHP:
Ver original
  1. $_SESSION['login_string'] = hash('sha512', $password . $user_browser);

No veo ahí ninguna comparación, solo una asignacion.

Intenta poner echo en cada uno de los if, para saber que partes se ejecutan y cuales no.


Ejemplo
Código PHP:
Ver original
  1. if (checkbrute($username, $mysqli) == true) {
  2. /* resto de codigo */
  3.                 echo 'dentro de: if checkbrute()';
  4.                 return true;
  5.             } else {
  6. /* resto de codigo */
  7.              echo 'dentro de: else checkbrute()';
  8.              return false;
  9.                 }
__________________
Unset($vida['malRollo']);
  #5 (permalink)  
Antiguo 29/04/2016, 10:56
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con funcion login

No muestra nada amigo :/, es mas no muestra ni si quiera un mensaje personaliazado .... Esta da que pensar

Lo casual es que este codigo funciona pero dirigido hacia otra base de datos, :/ y obvio con otras variables que no sean las de username

Etiquetas: funcion, login, mysql, select, sql, variable
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 00:04.