He trabajado ya con Mysqli y he logrado hacer consultas, guardar valores, recorrer tablas etc, pero ahora tengo una duda....
Intento crear una pantalla de login, en donde obtengo los datos del usuario, posteriormente actualizo su estado a conectado, pero si los datos proporcionados son incorrectos entonces guarda el intento de conexión. Mi duda es, con una misma instancia de MySQLi es posible ejecutar varias querys en diferentes puntos, algo como lo siguiente:
- Creo Instancia de MySQLi con su repectiva conexión
- Ejecuto primer query donde recupero los datos del usuario
- Valido la contraseña recuperada contra la contraseña que esta digitando
- Si es correcto: Guardo mediante un query el inicio de sesión en la base de datos
- Por el contrario, si la contraseña es incorrecta, entonces guardo mediante un query el intento de inicio de sesión fallida.
Dejo aca lo que estoy trabajando para que me entiendan mejor:
Código PHP:
function login($post_username, $password, $mysqli)
{
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
$sql = " CALL sp_sesion_begin ('" . $post_username . "'); ";
if ($result = $mysqli->query($sql))
{
$row_cnt = $result->num_rows;
if ($row_cnt == 1)
{
$fila = $result->fetch_assoc();
$result->free();
// Obtiene las variables del resultado.
$cod_usuario = $fila["cod_usuario"];
$email = $fila["email"];
$username = $fila["username"];
$db_password = $fila["contrasenia"];
$cod_tipo_usuario = $fila["cod_tipo_usuario"];
$conectado = $fila["conectado"];
$MIN = $fila["MIN"];
// Hace el hash de la contraseña
$password = hash('sha512', $password);
// Verifica si el usuario aparece como conectado
if ($conectado == 0){ $iniciar = true; } else { if ($MIN >= 10){ $iniciar = true; } else { $iniciar = false; } }
if ($iniciar == true)
{
if ($db_password == $password)
{
// ¡La contraseña es correcta!
// Obtén el agente de usuario del usuario.
$user_browser = $_SERVER['HTTP_USER_AGENT'];
$_SESSION['cod_usuario'] = $cod_usuario;
$_SESSION['email'] = $email;
$_SESSION['username'] = $username;
$_SESSION['cod_tipo_usuario'] = $cod_tipo_usuario;
$_SESSION['login_string'] = hash('sha512', $password . $user_browser);
// Ingresa los datos del usuario como conectado
$mysqli->query("CALL sp_ss_success ('$cod_usuario', '" . getUserIpAddress() . "', @resultado)");
return true;
}
else
{
echo "<p>CODIGO: $cod_usuario</p>";
echo "<p>CALL sp_ss_fail ('$cod_usuario', '" . getUserIpAddress() . "', @resultado)</p>";
// La contraseña no es correcta.
// Se graba este intento en la base de datos.
$mysqli->query("CALL sp_ss_fail ('$cod_usuario', '" . getUserIpAddress() . "', @resultado)");
echo "Usuario no permitido.";
return false;
// VERICIA LA CONTRASEÑA COINCIDE
}
// VERIFICA SI LOS TIEMPO DE LA CONEXIÓN
}
else
{
$mysqli->query("CALL sp_ss_fail ('$cod_usuario', '" . getUserIpAddress() . "', @resultado)");
echo "Su usuario se encuentra conectado en la aplicación. Espere 10 minutos para que el usuario se desconecte automáticamente. Si el problema persiste por favor contáctenos.";
return false;
}
}
else
{
echo "El usuario no existe";
return false;
/* VERIFICAR NUMERO DE FILA */
}
}
else
{
echo "El usuario no existe";
return false;
/* VERIFICAR SI HAY RESULTADO */
}
}
Si pueden ayudarme les estaria muy agradecidos