Buenas queria ver si alguien podria ayudarme estoy parado hace horas con este codigo, para no decir dias.
Estoy haciendo un login para usuarios, el tema es que habia echo uno y me digieron que para que tenga seguridad tenia que parametrizar la consulta.
Lo hice o a caso creo a verlo echo, pero no me funciona. Me da error
El código es:
Código:
<?php
if(isset($_POST['ingresar'])){
$usuario=$_POST['usuario'];
$contrasena=$_POST['contrasena'];
$mysqli = new mysqli("localhost","user","password","database");
if ($mysqli->connect_errno) {
echo "Falló la conexión a MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
/* Etapa 1: preparación */
if (!($sentencia = $mysqli->prepare("SELECT * FROM tabla WHERE usuario = (?)"))) {
echo "Falló la preparación: (" . $mysqli->errno . ") " . $mysqli->error;
}
/* Etapa 2: vincular*/
if (!$sentencia->bind_param("s", $contrasena)) {
echo "Falló la vinculación de parámetros: (" . $sentencia->errno . ") " . $sentencia->error;
}
/* Etapa 3 Ejecutar*/
if (!$sentencia->execute()) {
echo "Falló la ejecución: (" . $sentencia->errno . ") " . $sentencia->error;
}
$resultado = $mysqli->query($sentencia);
$numeroregistro= $resultado->affected_rows;
$registros = $resultado->fetch_assoc();
if($numeroregistro>0){
$contrasenaDB=$registros['contrasena'];
$salt_contrasenaDB=$registros['salt_contrasena'];
// Encriptamos contraseña y comparamos
if(crypt($contrasena, $salt_contrasenaDB) == $contrasenaDB){
$estado_cuenta=$registros['estado'];
if($estado_cuenta=="A"){
echo "Conexion Exitosa";
$_SESSION['usuario']=$usuario;
$_SESSION['login_ok']=1;
}
}
else{
echo "Error de Conexion, compruebe su usuario y contraseña";
}
}else{
echo "Error de Conexion, compruebe su usuario y contraseña";
}
}
}
Desde ya gracias.