Saludos estoy tratando de migrar mis script
a consultas preparadas pero aun estoy adaptándome a ese nuevo estilo de hacer las cosas, dejaré el script
que da acceso a los usuarios a mi aplicación:
// LOGIN USER
function login(){
global $db, $username, $errors, $nombrepag;
// grap form values
$username = e($_POST['username']);
//$email = e($_POST['email']);
$password = e($_POST['password']);
// make sure form is filled properly
if (empty($username)) {
array_push($errors, "Su Numero de Usuario o Correo Electronico es Requerido<br>");
}
if (empty($password)) {
array_push($errors, "Su Contraseña de Acceso es Requerida<br>");
}
// attempt login if no errors on form
if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT * FROM users WHERE (username='$username' OR email='$username') AND password='$password' LIMIT 1";
$results = mysqli_query($db, $query);
if (mysqli_num_rows($results) == 1) { // user found
// check if user is admin or user
$logged_in_user = mysqli_fetch_assoc($results);
$id_usuario = $logged_in_user['id'];
if ($logged_in_user['user_type'] == 'admin') {
$_SESSION['user'] = $logged_in_user;
$_SESSION['success'] = "Favor Espere";
$where = $_SESSION['here'];
if (!empty($where)) {
header ("Location: $where");
} else {
header('location: admin/home.php');
}
//$origen= $_SERVER["HTTP_REFERER"];
//header('location:'.$origen);
}else{
$_SESSION['user'] = $logged_in_user;
$_SESSION['success'] = "Favor Espere";
$where = $_SESSION['here'];
if (!empty($where)) {
header ("Location: $where");
} else {
header('location: usuario/home.php');
}
}
visita();
}else {
array_push($errors, "Combinación incorrecta de nombre de usuario/contraseña");
}
}
}
Intente haciendo algo como esto
$login = $db->prepare("SELECT * FROM users WHERE (username='?' OR email='?') AND password='?' LIMIT 1");
$login->bind_param("sss",$username, $username, $password);
$login->execute();
$result = $login->get_result();
$nrl = $result->num_rows;
if($nrl === 0) exit('Ha ocurrido un error inesperado, intente mas tarde.');
Pero la verdad no logro terminar de comprender la lógica de como hacer las consultas preparadas, he leído varios ejemplos pero siempre me encuentro con el debate que mejor es PDO
o que MySQLi
ha solucionado el problema de vulnerabilidad de MySQL
, etc, etc, imagino que muchos de acá dominan este tema y espero puedan brindarme luces al respecto..!