jueves, 30 de abril de 2015

formulario de autentificación en PHP


Al realizar la página inicial, que tiene el formulario de autentificación en el que el visitante debería rellenar con su usuario y contraseña. Como es la página inicial, la llamaremos index.php, que es el documento por defecto configurado en nuestro servidor. 

Para realizar esta página, utilizaremos HTML básico, excepto en una comprobación que nos permitirá saber si se accede al formulario de nuevo por no haber introducido correctamente el usuario y contraseña, pues, en ese caso, habría que mostrar un cartelito informando que el usuario o la contraseña no son válidos. 

Para pasar a la página inicial el mensaje de que el usuario/contraseña introducidos no son válidos utilizaremos una variable pasada a través de la URL. La llamaremos errorusuario, y si contiene la cadena "si" es que estamos recibiendo un error. 

El código sería el siguiente: 

<html> 
<head> 
<title>Autentificación PHP</title> 
</head> 
<body> 
<h1>Autentificación PHP</h1> 
<form action="control.php" method="POST"> 
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0"> 
<tr> 
<td colspan="2" align="center" 
<?if ($_GET["errorusuario"]=="si"){?> 
bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span> 
<?}else{?> 
bgcolor=#cccccc>Introduce tu clave de acceso 
<?}?></td> 
</tr> 
<tr> 
<td align="right">USER:</td> 
<td><input type="Text" name="usuario" size="8" maxlength="50"></td> 
</tr> 
<tr> 
<td align="right">PASSWD:</td> 
<td><input type="password" name="contrasena" size="8" maxlength="50"></td> 
</tr> 
<tr> 
<td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td> 
</tr> 
</table> 
</form> 
</body> 
</html>

Nota: La variable errorusuario, recibida por la URL y que informa si se produjo un error anterior al introducir usuario y contraseña, se está recogiendo por mediación del array asociativo $_GET, que guarda todas las variables enviadas por la URL. Aprendemos más sobre pasar variables por la URL en la dirección: http://www.desarrolloweb.com/articulos/317.php



El formulario tiene el atributo action dirigido hacia la página "control.php", que es la que se encarga de recoger los datos y ver si son correctos. Será tratada en el próximo capítulo.


Fuente:enlace
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Aprende sobre las páginas que forman el sistema de autentificación


Un sistema de autentificación es un módulo de seguridad para asegurarnos de que el usuario que visita las páginas es quien dice ser. Por supuesto, sabiendo que ese usuario es conocido, podremos darle acceso a más aspectos de la página que si fuese un usuario desconocido. Pero supongo que, si estás leyendo este artículo, ya conocerás lo que es un sistema de autentificación y lo que deseas hacer es crear uno para tus páginas. 


Referencia: Este manual requiere el conocimiento básico de PHP que, en caso de no tenerlo, se puede aprender en nuestro Manual de Programación en PHP.


Esquema de un sistema de autentificación 

Vamos a empezar por definir un diagrama para realizar la autentificación de usuario en unas páginas web, que nos servirá para programar luego las páginas ajustándose al diagrama. 


diagrama de funcionamiento de un sistema de autentificacion


En la imagen anterior podemos ver el diagrama, que empieza por la página donde se pide un usuario y contraseña para acceder a la aplicación de acceso restringido. 

Los datos de autentificación (usuario y contraseña escritos en la página inicial) se envían a la página dibujada con línea de puntos, que se encarga de hacer una comprobación de dichos datos del usuario. Según los datos de autentificación, se redirecciona al navegador a la página de la aplicación restringida, en caso de que sean correctos, o a la página donde volver a escribir el usuario/contraseña, en caso de que sean incorrectos. Esta página la he dibujado con línea de puntos porque no es una página donde se pare el navegador para nada, sino que sólo es una página de paso que redirecciona a un sitio u otro dependiendo de los datos que reciba. 

La aplicación de acceso restringido, aparte de mostrar las funcionalidades que queríamos proteger con usuario contraseña, debe de realizar unas comprobaciones de seguridad para saber si se ha pasado con éxito el proceso de autentificación o si se está intentando acceder de manera no permitida a esa página. Esta comprobación la he dibujado como una capa con color verde más oscuro sobre la página de la aplicación. Si no se satisface dicha comprobación (el usuario no se ha autentificado correctamente) se vuelve a la página donde escribir el usuario y la contraseña. 

Este es el esquema básico, que espero que se entienda bien. Ahora, veamos algunas preguntas que podría hacerse el lector. 

¿Por qué hacemos esta comprobación de seguridad dentro de la aplicación? 
Podría ser que alguien conociese la URL de la aplicación de acceso restringido y la escribiese directamente sobre la barra de direcciones del explorador, así que hacemos esta comprobación para saber que realmente no se está accediendo sin pasar por la página que comprueba si el usuario/contraseña es correcto 

¿Cómo sabemos que ciertamente se ha pasado por la página que comprueba los datos de autentificación? 
Esta comprobación la podríamos hacer de varias maneras, así pues, depende de nuestro script de autentificación y el nivel de seguridad que tratemos de implementar. Un ejemplo simple podría ser crear una variable de sesión en la página que comprueba los datos, si es que eran correctos, y en capa se seguridad de las páginas de acceso restringido comprobaríamos si esa sesión está o no definida. 

En caso de desear burlar la seguridad, ¿Cómo podría un usuario entrar a la página de la aplicación si no hay enlaces directos y para pasar a ella necesitamos que nos redireccione la página de comprobación del usuario/contraseña? 
Pues de diversas maneras, para empezar, el historial de los ordenadores guarda las URL a las que se ha accedido y cualquier persona podría recuperar la URL de nuestra aplicación con acceso restringido. También se podría probar distintas URL que podríamos imaginarnos como posibles para la aplicación y esperar a acertar con el nombre de archivo en algún momento, incluso esta tarea se la podríamos encomendar a un programa para realizar muchas más pruebas. En cualquier caso, nuestra seguridad no se puede quedar en simplemente que los posibles intrusos no conozcan la dirección de la página.


Fuente:enlace
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

miércoles, 29 de abril de 2015

Cónoce las necesidades del carrito



Ahora nos vamos a fijar en la clase carrito. Para empezar vamos a hacer un estudio de las funcionalidades y datos que debería contener.

Métodos del objeto carrito 

Las funcionalidades que debería implementar el objeto carrito se definirán como métodos de la clase carro de la compra. En principio, se deben crear los siguientes métodos:

  • Introducir un producto en el carrito
  • Eliminar un producto del carrito
  • Mostrar el carrito
  • Otras funcionalidades que seguro que necesitarás a medida que avances en el trabajo...

Datos a utilizar 

Para empezar, tenemos que llevar la cuenta del número de productos que se han introducido en el carrito. En el momento de creación del objeto carrito, el número de productos debe ser igual a cero. 

También necesitaremos guardar los id_producto de cada uno de los productos que se vayan introduciendo en el carrito. Lo haremos a través del array $array_id_prod, que es una de las propiedades del objeto. 

Ahora bien, probablemente sea útil guardar más que los simples identificadores de los productos. Si se guarda su precio y su nombre puede ser útil para mostrar rápidamente esos valores sin necesidad de acceder a la base de datos. 

Para ello se utilizan otro par de arrays, que también se han creado como atributos del objeto carrito. Estos son $array_nombre_prod, para almacenar los nombres de los productos y $array_precio_prod, para guardar los precios de cada uno de los productos del carrito.


Fuente:enlace
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Aprende sobre la realización de un carrito de compra sencillo

Vamos a ver una manera sencilla de realizar un carrito de la compra en PHP, utilizando una variable de sesión para guardar los datos del carrito, como los nombres de los productos, sus precios y otros datos de interés. En estos ejemplos nos vamos a centrar exclusivamente en la funcionalidad del carrito, es decir, la memorización de los productos comprados a lo largo de toda la sesión, dejando de lado todo lo relativo a presentación o la extracción de los productos de una base de datos. 


Para entender este manual son necesarios unos conocimientos previos sobre PHP, que se pueden obtener de la lectura de nuestro manual de PHP http://www.desarrolloweb.com/php/ o los talleres prácticos de la tecnología http://www.desarrolloweb.com/manuales/6/. Debemos prestar especial atención al manejo de sesiones en PHP y, dado que esta implementación del carrito está realizada utilizando programación orientada a objetos, será necesario que conozcamos un poco ese tipo de programación, particularmente en PHP 4. 

El carrito lo hemos creado con la versión PHP 4. Para que este ejemplo funcione en PHP 5 (que básicamente cambia con respecto a su antecesor en el trabajo con objetos) habría que realizar algunas modificaciones. 


Referencia: Disponemos de algunos artículos sobre la programación orientada a objetos en PHP 4.



Librería lib_carrito.php 

Vamos a atacar al problema creando una librería con la declaración de una clase, que luego utilizaremos para crear un objeto carrito. Con dicho objeto implementaremos el trabajo típico del carro de la compra, es decir, introducir productos, extraerlos, contabilizar precios, etc. Esta librería la guardaremos en un archivo llamado lib_carrito.php y contendrá el código de la clase carrito, con todos sus métodos y propiedades. 

El carrito se debe poder acceder en cualquier momento, siempre y cuando el visitante permanezca en la página. Además, cada visitante debe disponer de un carrito propio. Aunque podríamos pensar en otras soluciones, estas necesidades descritas inicialmente, hacen muy recomendable el uso de variables de sesión, puesto que ofrecen la mejor forma de tratar con datos específicos de cada usuario, que deben perdurar entre las distintas páginas que visite. 

Vamos a mantener una variable de sesión con una instancia de la clase carrito, que contendrá el carro de la compra del visitante. Esta variable de sesión se guardará en $_SESSION["ocarrito"] y se debe crear al acceder a la página, siempre y cuando no se haya creado previamente. Por ello, en cada página se ha de comprobar si hay un carrito creado y, si no es así, se debe instanciar el objeto. 

if (!isset($_SESSION["ocarrito"])){ 
    $_SESSION["ocarrito"] = new carrito(); 
}

Este código lo hemos situado dentro del archivo librería del carrito, después de la declaración de la clase


Fuente:enlace
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

martes, 28 de abril de 2015

Control de ventanas secundarias, o popups

Una de las utilidades más interesantes de Javascript es el control de ventanas secundarias (popups en inglés). Las ventanas secundarias son las que se abren adicionalmente a la ventana principal del navegador. Suelen ser más pequeñas que las ventanas normales y generalmente no tienen los menús del navegador, barra de direcciones, etc. 


Podemos ver lo que es una ventana secundaria pulsando aquí

Con Javascript podemos controlar los popups para hacer cosas como abrirlos, cerrarlos, darles el foco, pasar información de una ventana a otra, etc. En este manual veremos cómo se hacen todas estas cosas con las ventanas secundarias para aprender a controlarlas prefectamente. 


Referencias: En este manual vamos a explorar una característica muy específica de Javascript. Si deseamos seguir con éxito el manual será imprescindible que conozcamos el lenguaje y la manera de trabajar con él. Tenemos varias referencias interesantes que deberíamos controlar:


El índice que vamos a tratar con respecto al tema de las ventanas secundarias o popups es el siguiente: 


Fuente:enlace
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Aprende cómo modificar el valor de la propiedad action.

 Ejemplos de aplicación

Vimos en la introducción de este manual, para que sirve la propiedad action. Ahora, veremos lo que se puede hacer con la misma mediante JavaScript.

Mediante JavaScript, podremos modificar/seleccionar el valor de la propiedad actionsegún las preferencias del usuario.

El ejemplo más típico sería el de un formulario de suscripción a un boletín de novedades, donde el usuario deberá elegir, si desea darse de alta o de baja.

Modificación del valor de la propiedad action

El Script...
<script language="javascript">
function enviar(form)
{
    if ((boletin.alta.checked == true) && (boletin.baja.checked == true))
    { alert("Por favor, marca una sola casilla"); return true; }

    if ((boletin.alta.checked == false) && (boletin.baja.checked == false))
    { alert("Debes indicar si deseas darte de alta o de baja"); return true; }

    if (boletin.alta.checked == true)
    { boletin.action = "ejemplos/alta.asp"; }

    if (boletin.baja.checked == true)
    { boletin.action = "ejemplos/baja.asp"; }

form.submit()
}
</script>

El formulario...
<form name="boletin" method="GET" action="ejemplos/alta.asp" target="_blank">
<b>Suscripción gratuita al boletín de novedades</b><br>
Por favor, introduce tu e-mail:
<input type="text" name="email" size="20"><br>
<input type="checkbox" name="alta" value="ON"> Darme de <b>alta</b> |
<input type="checkbox" name="baja" value="ON"> Darme de baja<br>
<input type="button" onClick="enviar(this.form)" value="Enviar">
</form>

Los resultados...
Por favor, introduce tu e-mail:  Darme de alta |  Darme de baja 

Otro ejemplo muy utilizado, es enviar el mismo formulario a dos páginas diferentes. Veamos un ejemplo:

Duplicando el valor de la propiedad action

El Script...
<script language="javascript">
function Envio1()
{
datos.action = "ejemplos/pagina1.asp";
datos.submit()
}
function Envio2()
{
datos.action = "ejemplos/pagina2.asp";
datos.submit()
}
</script>
 
El Formulario...
<form method="GET" name="datos" action="ejemplos/pagina1.asp" target="_blank">
Tu nombre: <input type="text" name="nombre"><br>
Edad: <input type="text" name="edad" size="2"><br>
<input type="button" value="Enviar" onClick="Envio1(this.form); Envio2(this.form)">
</form>

Los resultados...
Tu nombre: Edad: 

De la misma forma que se puede modificar el valor de la propiedad action, pueden modificarse method y target. Modificar el valor de la propiedad method sería un poco ridículo ya que el método por el cual se envían los datos, puede estar perfectamente definido en el formulario. El valor de target puede llegar a ser más útil, si le damos al usuario la posibilidad de decidir si quiere abrir los resultados enviados en nueva ventana, en la misma página o en un marco de la misma.

Fuente:enlace
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Entradas populares