Cuando consulto la BD para comprobar que el usuario que quiere hacer log in, introdujo correctamente su nombre de usuario y password, la primer vez funciona bien, es decir, si en la base tengo un usuario (pepe) con pass (hola) e ingreso dichos datos FUNCIONA. Pero si posteriorme ingreso user 123 y pass 123, va hasta la base de datos y me trae lo siguiente:
pepe hola (X años)
Bienvenido: 123
Entonces es como que la variable $results acumula los datos. En este segunda entrada que hago tendría que estar empty!.
Alguna idea? quizás no tenga que usar el fetchAll(), pero no se cual otro usar probé con el fetch() pero es lo mismo. Dejo el código:
Código PHP:
Ver original
if ($_POST['user'] && $_POST['pass']){ // Si el usuario ha intentado hacer log in require_once 'conexion.php'; try { //armamos el sql $sql = "SELECT * FROM cliente WHERE apellido >= :apellido AND password >= :password"; //preparamos un statement con el sql anterior $stmt = $pdo->prepare($sql); //especificamos la salida como un array $stmt->setFetchMode(PDO::FETCH_ASSOC); //podría ser PDO::FETCH_OBJ //sustituimos los parámetros con los valores reales $stmt->bindParam(':apellido', $_POST['user']); $stmt->bindParam(':password', $_POST['pass']); //ejecutamos la consulta $stmt->execute(); //recuperamos los datos en el array asoc. $results = $stmt->fetchAll(); //mostramos los datos (ej. en un template) foreach($results as $fila){ $fila['apellido'], $fila['nombre'], $fila['edad']); }; echo "Bienvenido: ".$_POST['user']."<br>"; // si están en la base de datos registra la id de usuario $valid_user = $_POST['user']; $_SESSION['valid_user'] = $valid_user; //header("Location: index.php"); } } catch (Exception $exc) { echo $exc->getTraceAsString(); } }
No es necesario ese foreach() pero no creo que sea el tema..