Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/05/2016, 15:26
Skorge
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Preparar declaracion

Hola, Hombre gracias por responder, el codigo es este.

Código PHP:
Ver original
  1. function login($username, $password, $mysqli) {
  2.     // Using prepared statements means that SQL injection is not possible.
  3.     if ($stmt = $mysqli->prepare("SELECT id,
  4.                                          Nombre,
  5.                                          Apellidos,
  6.                                          password,
  7.                                          salt,
  8.                                          cargo,
  9.                                          departamento
  10.                                   FROM   usuario
  11.                                  WHERE  username = ? LIMIT 1")) {
  12.         $stmt->bind_param('s', $username);  // Bind "$usernamel" to parameter.
  13.         $stmt->execute();    // Execute the prepared query.
  14.         $stmt->store_result();
  15.  
  16.         // get variables from result.
  17.         $stmt->bind_result($username, $db_password, $salt);
  18.         $stmt->fetch();
  19.  
  20.         // hash the password with the unique salt.
  21.         $password = hash('sha512', $password . $salt);
  22.         if ($stmt->num_rows == 1) {
  23.             // If the user exists we check if the account is locked
  24.             // from too many login attempts
  25.             if (checkbrute($username, $mysqli) == true) {
  26.  
  27.                 return false;
  28.             } else {
  29.                 // Check if the password in the database matches
  30.                 // the password the user submitted.
  31.                 if ($db_password == $password) {
  32.                     // Password is correct!
  33.                     // Get the user-agent string of the user.
  34.                     $user_browser = $_SERVER['HTTP_USER_AGENT'];
  35.  
  36.                     // XSS protection as we might print this value
  37.                     $username = preg_replace("/[^0-9]+/", "", $username);
  38.                     $_SESSION['username'] = $username;
  39.  
  40.                     // XSS protection as we might print this value
  41.                     $username = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $username);
  42.  
  43.                     $_SESSION['username'] = $username;
  44.                     $_SESSION['login_string'] = hash('sha512', $password . $user_browser);
  45.  
  46.                     // Login successful.
  47.                     return true;
  48.                 } else {
  49.                     // Password is not correct
  50.                     // We record this attempt in the database
  51.                     $now = time();
  52.                     if (!$mysqli->query("INSERT INTO inyeccion(username, time)
  53.                                    VALUES ('$username', '$now')")) {
  54.                         header("Location: ../error.php?err=Database error: inyeccion");
  55.                         exit();
  56.                     }
  57.                     return false;
  58.                 }
  59.             }
  60.         } else {
  61.             // No user exists.
  62.             return false;
  63.         }
  64.     } else {
  65.         // Could not create a prepared statement
  66.         header("Location: ../error.php?err=Database error: cannot prepare statement");
  67.         exit();
  68.     }
  69. }
  70. function checkbrute($username, $mysqli){
  71.     // Obtenemos el timestamp
  72.     $now = time();
  73.     $valid_attempts = $now - (82 * 60 * 60);
  74.     if($stmt = $mysqli->prepare("SELECT password FROM inyeccion WHERE username = ?" AND time > '$valid_attempts')){
  75.         $stmt->bind_param('u',$username);
  76.         $stmt->execute;
  77.         $stmt->store_result();
  78.        
  79.         if ($stmt->num_rows> 5){
  80.             return true;
  81.         } else {
  82.         return false;
  83.     }
  84. } else {
  85.         [B]header("Location: ../error.php?err=Database error: cannot prepare statement");
  86.         exit();[/B]
  87.      }
  88. }

Este codigo me ha dado muchos problemas, :v pero ya he ejecutado la consulta del query y sale bien ya la descarte, mire las variables y tambien, solo se quedo hay estancado. Gracias por responder nuevamente!