Home Foros Foro dudas Foro de PHP/MySql Dudas de PHP Respuesta a: Dudas de PHP

Respuesta a: Dudas de PHP

Home Foros Foro dudas Foro de PHP/MySql Dudas de PHP Respuesta a: Dudas de PHP

#5160

Kn4byte
Participante

Mi problema es el siguiente, no me anda el Login.php del sistema de sessiones y logeo en PDO.
Utilizo como sistema de bases de datos (mysql  Ver 15.1 Distrib 10.0.28-MariaDB).

Esto es lo que sucede, hago la creacion de la base de datos y se supone que el Login hace consulta de y mediante las condiciones si existe o lo contrario deberia de hacer una funcion pero no hace solo me deja en login.php…

Los datos en la variable para la conexion es la de mi localhost y lo tengo funciona con otro sistema de Login que igual es en PDO y si me funciona.
Codigo:

<?php

// DEFINIREMOS las constantes para conectarnos a Mysql
define(‘SERVER’, ‘localhost’);
define(‘DBUSER’, ‘phpmyadmin’);
define(‘DBPASS’, ‘1234’);
define(‘DBNAME’, ‘sistemalogin’);

// Inicio del proceso Try… Catch.

// Intentaremos hacer lo siguiente:
try {
// Instanciaremos una nueva conexion PDO que abrirá nuestra DB
$base = new PDO(‘mysql:host=’.SERVER.’; dbname=’.DBNAME, DBUSER, DBPASS);
$base -> setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// le asignamos una variable a la consulta
$sql = “SELECT * FROM usuarios WHERE usuario = :login AND clave = :password”;
// Nótese que estamos utilizando :login y :password en los campos WHERE.
// Estas son  las variables que llamaremos luego y que obtenemos a traves del método POST

// Declaramos las variables que obtenemos desde el formulario de login
$login = htmlentities(addslashes($_POST[‘login’]));
$password = htmlentities(addslashes($_POST[‘password’]));

// Utilizamos $resultado para almacenar la consulta preparada
$resultado = $base -> prepare($sql);

// Utilizaremos bindValue() en esta ejecución ya que no necesitamos manejar ninguna variable,
// solo asignar un objeto específico

$resultado -> bindValue(“:login”, $login);
$resultado -> bindValue(“:password”, $password);

// Muchos utilizan bindParam() para ejecutar una consulta en PDO.
// La diferencia entre estas dos funciones es que en esta ocasión
// NO NECESITAMOS manejar ningún array ni ninguna variable, solo
// le estamos asignando un valor X a su variable correspondiente
// y la consulta será más rápida, con recursos más optimizados y
// disminuiremos la posibilidad de inyección de código al asignarle
// un valor expresamente a traves de bindValue

// Ejecutamos la consulta
$resultado -> execute();

// Creamos una variable y le asignamos la cantidad de resultados que extrajo la consulta
$numregistros = $resultado -> rowCount();

// Y generamos un IF para ver si nos arroja algún resultado y en base a ello tomar una decisión

if ($numregistros!=0) {                     // SI $numregistros NO ES IGUAL a 0 entonces hacemos esto
session_start()                            // Iniciamos una sesión

$_SESSION[‘usuario’]=$_POST[‘login’];    // Y le decimos a PHP que la SESSION debe ser asignada al
// que ingresó por el método POST con ‘login’
header(‘location:index.php’);            // Con esta funcion redireccionamos al usuario logueado al archivo index.php

} else {        // PERO SI $numregistros ES IGUAL A 0 entonces…

header(‘location:index.php’);            // Devolvemos al usuario denegado a index.php
// pero volverá a su estado original, es decir, como invitado

}

// Ahora bien. Hemos intentado (TRY) ejecutar el código anterior, pero que pasa si lo anterior FALLA desde el vamos??? Es decir, si por ejemplo no se puede conectar a la BD entonces ejecutamos esto…
} catch (Exception $e) {
die(“echo Hubo un error en: ” .$e->getMessage()); // Matamos al proceso con DIE y le pedimos que nos muestre la EXCEPTION a traves de getMessage
}

?>