Diferencia entre revisiones de «Usuario:ManuelRomero/php/smarty/login»

De WikiEducator
Saltar a: navegación, buscar
Línea 4: Línea 4:
 
*Puedes ver esta parte del ejercicio ejecutándose en la web:
 
*Puedes ver esta parte del ejercicio ejecutándose en la web:
 
  http://manuel.infenlaces.com/dwes/tienda/TiendaLogin/login.php
 
  http://manuel.infenlaces.com/dwes/tienda/TiendaLogin/login.php
{{Tip|Esta parte está toda resuleta aquí para dejar claro el uso de plantaillas}}
+
{{Tip| usuario dwes y pass abc123.}}
 +
{{Tip|Esta parte está toda resuelta aquí para dejar claro el uso de plantaillas}}
  
 
===La lógica===
 
===La lógica===
Línea 44: Línea 45:
 
[[Archivo:DB.png]]
 
[[Archivo:DB.png]]
 
*El código de esta clase  
 
*El código de esta clase  
 +
{{Plegable|hide|Clase DB.php|
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 121: Línea 123:
 
?>
 
?>
 
</source>
 
</source>
 +
}}
 
;login.php
 
;login.php
 
*Este fichero implementa las acciones especificadas anteriormente
 
*Este fichero implementa las acciones especificadas anteriormente
*Cargamos la librería de smarty
+
*Cargamos la librería de '''''smarty'''''
 
*Realizamos la lógica
 
*Realizamos la lógica
 
*Exportamos la variable '''''$error''''' para la plantilla
 
*Exportamos la variable '''''$error''''' para la plantilla
 
*Visualizamos  la plantilla
 
*Visualizamos  la plantilla
*El código se exporta a continaución
+
*El código se exporta a continuación
 +
{{Plegable|hide|login.php
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 162: Línea 166:
 
?>
 
?>
 
</source>
 
</source>
 +
}}
 
;login.tpl
 
;login.tpl
 
*La plantilla tiene la parte de html
 
*La plantilla tiene la parte de html
 
*Lo único que visualiza es el código de error en caso de que lo hubiera
 
*Lo único que visualiza es el código de error en caso de que lo hubiera
<source lang=php>
+
{{Plegable|hide|login.tpl|
 +
<source lang=html>
 
<!DOCTYPE html>
 
<!DOCTYPE html>
 
{*Plantilla para login. Es invocada desde login.php. solo visualiza el $error del php*}
 
{*Plantilla para login. Es invocada desde login.php. solo visualiza el $error del php*}
Línea 200: Línea 206:
  
 
</source>
 
</source>
 +
}}
 
;productos.php
 
;productos.php
 
*En esta primera parte del proyecto estos ficheros solo contienen información básica,
 
*En esta primera parte del proyecto estos ficheros solo contienen información básica,
 
*Se implementará en la segunda parte del desarrollo
 
*Se implementará en la segunda parte del desarrollo
 +
{{Plegable|hide|productos.php|
 
<source lang=php>
 
<source lang=php>
 
<?php
 
<?php
Línea 228: Línea 236:
 
*La plantilla del producto  
 
*La plantilla del producto  
 
*Simplemente una página de información de lo que hará
 
*Simplemente una página de información de lo que hará
 +
{{Plegable|hide|producto.tpl|
 
<source lang = php>
 
<source lang = php>
 
<!DOCTYPE html>
 
<!DOCTYPE html>
Línea 245: Línea 254:
 
</html>
 
</html>
 
</source>
 
</source>
*Este código puede verse funcionado
+
}}
http://www.manuel.infenlaces.com/tiendaSmarty/v1/logica/login.php
+

Revisión de 04:04 3 abr 2017



Probando el ejemplo

  • Puedes ver esta parte del ejercicio ejecutándose en la web:
http://manuel.infenlaces.com/dwes/tienda/TiendaLogin/login.php
Icon present.gif
Tip: usuario dwes y pass abc123.


Icon present.gif
Tip: Esta parte está toda resuelta aquí para dejar claro el uso de plantaillas


La lógica

  • Generaremos el fichero login.php
  • Su función es autentificar al usuario de la aplicación web.
  • Todos los usuarios de la aplicación deberán autentificarse utilizando esta página antes de poder acceder al resto de páginas.
  • La siguiente imagen muestra un caso de uso de este escenario

TiendaLogin.png

Descripción de la imagen
  1. Login pedirá un usuario y contraseña para validar
  2. Al darle a validar, se validará el usuario contra la base de datos.
  3. Si no es ok mostrará un error y seguiremos en login.php, si es correcto iremos a productos.php

Para este escenario necesitaremos los siguientes ficheros según vemos en la imagen

TiendaLogin2.png

Descripción de la imagen
  1. El cliente invoca al fichero login.php
  2. Este método solicitará usuario y contraseña visualizando la plantilla login.tpl
  3. Cuando presionemos enviar validará contra la base de datos
  4. Si todo ok, mostrará la plantilla productos.tpl;
  5. Si no se ha validado, mostrará la plantilla login.tpl con el error encontrado
  • Para implementar esta parte del proyecto necesitaremos desarrollar los siguientes ficheros
  1. DB.php (clase)
  2. login.php (lógica)
  3. productos.php (lógica sin contenido)
  4. login.tpl (presentacion).

Desarrollando el código

DB.php
  • Esta es una clase que mantendrá todo el acceso a la base de datos
  • De momento solo necesito un método de validar el usuario
  • Este método tendrá que hacer 3 cosas:
  1. conectar a la base de datos,
  2. realizar una consulta,
  3. verificar que la consulta contenga un registro (OK! Usuario existe), o no (Usuario no registrado)
  • Seguramente otros métodos tengan que hacer estas acciones (conectar, ejecutar consultas, …), por lo que estas acciones será métodos privados de la clase.
  • Para poder pasar parámetros a la hora de ejecutar la consutla usaremos PDO en lugar de mysqli

DB.png

  • El código de esta clase
login.php
  • Este fichero implementa las acciones especificadas anteriormente
  • Cargamos la librería de smarty
  • Realizamos la lógica
  • Exportamos la variable $error para la plantilla
  • Visualizamos la plantilla
  • El código se exporta a continuación
login.tpl
  • La plantilla tiene la parte de html
  • Lo único que visualiza es el código de error en caso de que lo hubiera
productos.php
  • En esta primera parte del proyecto estos ficheros solo contienen información básica,
  • Se implementará en la segunda parte del desarrollo

{{Plegable|hide|productos.php|

<?php
require_once('Smarty.class.php');
// Recuperamos la información de la sesión
session_start();
// Y comprobamos que el usuario se haya autentificado, para evitar que puedan acceder directamente
//a esta pagina sin pasar por el login
if (!isset($_SESSION['usuario'])) 
    die("Error - debe <a href='login.php'>identificarse</a>.<br />");
// Cargamos la librería de Smarty
$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/';
//De momento solo visualizamos que el usuario 
$smarty->assign("usuario",$_SESSION['usuario']);
//Ahora mostramos la plantilla
$smarty->display("producto.tpl");
?>
producto.tpl
  • La plantilla del producto
  • Simplemente una página de información de lo que hará