Diferencia entre revisiones de «Usuario:ManuelRomero/pruebas»

De WikiEducator
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
 +
require_once('./../include/DB.php');
  
 +
// Cargamos la librería de Smarty
 +
require_once('Smarty.class.php');
 +
$smarty = new Smarty;
 +
$smarty->template_dir = '/web/smarty/tiendaSmarty/templates/';
 +
$smarty->compile_dir = '/web/smarty/tiendaSmarty/templates_c/';
 +
$smarty->config_dir = '/web/smarty/tiendaSmarty/configs/';
 +
$smarty->cache_dir = '/web/smarty/tiendaSmarty/cache/';
  
class DB {
+
// Verificaamos si queremos validar los datos del formulario o solo visualizar el formulario (login.tpl)
    //atributo privado de conexión
+
if (isset($_POST['enviar'])) {
    private static $conexion;
+
    //$usuario = filter_input(INPUT_POST, $_POST['usuario'],FILTER_SANITIZE_SPECIAL_CHARS);
   
+
    //$pass = filter_input(INPUT_POST, $_POST['password'],FILTER_SANITIZE_SPECIAL_CHARS);
  /*======================conectar()======================================
+
    $usuario =  $_POST['usuario'];
    conecta con la base de datos, usando PDO
+
    $pass = $_POST['password'];
    da valor al atributo privado y estático $conexion de la clase
+
    En caso de no conectarse aborta la app y muestra un mensaje
+
  ****************************************************************************************** */
+
    private static function conectar(){
+
        $opc = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
+
        $dsn = "mysql:host=localhost;dbname=dwes";
+
        $usuario = 'root';
+
        $contrasena = 'root';
+
        try{
+
          $conexion= new PDO($dsn, $usuario, $contrasena, $opc);
+
          $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
        } catch (PDOException $e) {
+
                die ('Abortamos la aplicación por fallo conectando con la BD' . $e->getMessage());
+
        }
+
        self::$conexion = $conexion;
+
   
+
}
+
  
 
+
    if ((empty($usuario)) || (empty($pass)))  
/*======================ejecutaConsulta ($sql,$valores)======================================
+
        $smarty->assign('error','Debes introducir un nombre de usuario y una contraseña');
    Accion: Ejecuta una consulta preparada con los valores de los parámetros de la consulta preparada
+
     else {
     Parámetros: $sql es la consulta preparada y parametrizada
+
        // Comprobamos las credenciales con la base de datos
                $valores es un array asociativo con los valores de los distintos
+
         if (DB::verificaCliente($_POST['usuario'], $_POST['password'])) {
                          parámetros de la consulta anterior
+
             session_start();
    Retorna =La consulta despues de ejecutarla, o null si no la ha podido ejecutaqr
+
            $_SESSION['usuario']=$_POST['usuario'];
            en caso de no ejecutarla da un mensaje             
+
            header("Location: producto.php");                  
* ***********************************************************************************************/
+
        }
    protected static function ejecutaConsulta($sql,$valores) {
+
        else {
         if (self::$conexion == null)
+
            // Si las credenciales no son válidas, se vuelven a pedir
             self::conectar();
+
            $smarty->assign('error','Usuario o contraseña no válidos!');
      $conexion = self::$conexion;
+
        }
      try{
+
          $consulta = $conexion->prepare($sql);
+
          $consulta->execute($valores);
+
      } catch (PDOException $e) {
+
          echo 'No se ha podido ejecutar la consulta' . $e->getMessage();
+
          return null;
+
        }
+
      return $consulta;
+
     
+
 
     }
 
     }
 
+
}
 
+
// Mostramos la plantilla
/*======================verificaCliente ($nombre,$pass)======================================
+
$smarty->display('login.tpl');
    Accion: verifica si un nombre y pass son contenidos en la base de datos
+
    Parámetros: $nombre es el nombre de usuario
+
                $pass es la password para ese nombre
+
    Retorna  true o false según se haya podido o no validar
+
  * Recordar que la pass está cifrada con md5 en la base de datos     
+
* ***********************************************************************************************/ 
+
    public static function verificaCliente($nombre, $pass) {
+
      $valores = array('usuario'=>$nombre, 'password' =>$pass);
+
        $sql = <<<FIN
+
        SELECT usuario FROM usuarios
+
        WHERE usuario=:usuario
+
        AND contrasena=md5(:password)
+
FIN;
+
        $resultado = self::ejecutaConsulta ($sql,$valores);
+
        $verificado = false;
+
      if ($resultado->fetch())
+
          $verificado=true;
+
        return $verificado;
+
    }
+
}//End de la clase DB.php
+
 
+
 
?>
 
?>
 
</source>
 
</source>

Revisión de 02:32 12 ene 2015

<?php
require_once('./../include/DB.php');
 
// Cargamos la librería de Smarty
require_once('Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = '/web/smarty/tiendaSmarty/templates/';
$smarty->compile_dir = '/web/smarty/tiendaSmarty/templates_c/';
$smarty->config_dir = '/web/smarty/tiendaSmarty/configs/';
$smarty->cache_dir = '/web/smarty/tiendaSmarty/cache/';
 
// Verificaamos si queremos validar los datos del formulario o solo visualizar el formulario (login.tpl)
if (isset($_POST['enviar'])) {
    //$usuario = filter_input(INPUT_POST, $_POST['usuario'],FILTER_SANITIZE_SPECIAL_CHARS);
    //$pass = filter_input(INPUT_POST, $_POST['password'],FILTER_SANITIZE_SPECIAL_CHARS);
    $usuario =  $_POST['usuario'];
    $pass = $_POST['password'];
 
    if ((empty($usuario)) || (empty($pass))) 
        $smarty->assign('error','Debes introducir un nombre de usuario y una contraseña');
    else {
        // Comprobamos las credenciales con la base de datos
        if (DB::verificaCliente($_POST['usuario'], $_POST['password'])) {
            session_start();
            $_SESSION['usuario']=$_POST['usuario'];
            header("Location: producto.php");                    
        }
        else {
            // Si las credenciales no son válidas, se vuelven a pedir
            $smarty->assign('error','Usuario o contraseña no válidos!');
        }
    }
}
// Mostramos la plantilla
$smarty->display('login.tpl');
?>