Implementación de aplicaciones dinámicas con PHP y bases de datos (2ª Parte)

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Implementación de aplicaciones dinámicas con PHP y bases de datos (2ª Parte)"

Transcripción

1 Implementación de aplicaciones dinámicas con PHP y bases de datos (2ª Parte) Dr. David Lizcano Casas, <dlizcano@fi.upm.es> Curso de técnico en diseño y mantenimiento de sitos y aplicaciones Web

2 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

3 Paso de Variables y Memoria de Estados Base de Datos

4 Paso de Variables y Memoria de Estados En un sitio web, las páginas vistas y los scripts utilizados son numerosos Muy a menudo necesitamos que nuestros distintos scripts estén conectados unos con otros y que se sirvan de variables comunes ó compartan funcionalidad Por otro lado, el usuario interacciona por medio de formularios cuyos campos han de ser procesados para poder dar una respuesta Todo este tipo de factores dinámicos han de ser eficazmente regulados por un lenguaje como PHP

5 Intercomunicación entre varias páginas Librerías: nos permiten agrupar varias funciones en un mismo fichero, de manera que luego podemos incluir esta librería en distintas páginas y disponer de esas funciones fácilmente libreria01.php <?php function CabeceraPagina() {?> <FONT SIZE="+1">Esta cabecera estará en todas las páginas.</font><br> <? } <hr> function PiePagina() {?> <hr> <FONT SIZE="-1">Este es el pie de página.</font><br> Autor: David <? }?>

6 Intercomunicación entre varias páginas Crear 2 páginas que usen la librería definida anteriormente para conseguir que las dos paginas tengan la misma cabecera y pie de pagina. La instrucción para incluir una librería en nuestra página es include("nombre de librería") <html> <head> <title>ejemplo de PHP</title> </head> <body> <?php include("libreria01.php")?> <?php CabeceraPagina();?> Página 1 <BR><BR><BR><BR><BR> Contenido blalbl blalb alb<br><br> más cosas...<br><br> fin<br><br> <?php PiePagina();?> </body> </html> <html> <head> <title>ejemplo de PHP</title> </head> <body> <?php include("libreria01.php")?> <?php CabeceraPagina();?> Esta es otra página<br><br> completamente distinta<br><br> pero comparte el pie y la cabecera con la otra.<br><br> <?php PiePagina();?> </body> </html>

7 Intercomunicación entre varias páginas Esta cabecera estará en todas sus páginas. Esta cabecera estará en todas sus páginas. Página 1 Esta es otra página completamente distinta Contenido blalbl blalb alb más cosas... fin Este es el pie de página. Autor: David pero comparte el pie y la cabecera con la otra. Este es el pie de página. Autor: David

8 Intercomunicación entre varias páginas Con las librerías es sencillo compartir FUNCIONALIDAD entre páginas, e incluso variables Pero, y para compartir datos entre distintas páginas, ficheros php o sitios web?

9 Intercomunicación entre varias páginas Ejercicio: Guardar una variable de cualquier tipo dentro de una librería Por ejemplo, en las funciones anteriores, $year = 2011 Utilizar esa variable en algún lugar de las funciones de la librería Utilizar esa variable desde fuera de la librería, en un.php que ha incluido dicha librería Qué conclusiones se pueden extraer?

10 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

11 Paso de variables por URL Para pasar las variables de una página a otra lo podemos hacer introduciendo dicha variable dentro del enlace hipertexto de la página destino. La sintaxis sería la siguiente: <a href="destino.php?variable1=valor1&variable2=valor2&...">mi enlace</a> Estas variables no poseen el símbolo $ delante. Esto es debido a que en realidad este modo de pasar variables no es específico de PHP sino que es utilizado por otros lenguajes.

12 Paso de variables por URL Ahora nuestra variable pertenece también al entorno de la página destino.php y está lista para su explotación Nota: No siempre se definen automáticamente las variables recibidas por parámetro en las páginas web, depende de una variable booleana de configuración de PHP (en php.ini) : register_globals, que tiene que estar activada para que así sea

13 Paso de variables por URL Ejemplo: Tendremos dos páginas, origen.html y destino.php origen.html <HTML> <HEAD> <TITLE>origen.html</TITLE> </HEAD> <BODY> <a href="destino.php?saludo=hola&texto=esto es una variable texto">paso variables saludo y texto a la página destino.php</a> </BODY> </HTML>

14 Paso de variables por URL destino.php <HTML> <HEAD> <TITLE>destino.php</TITLE> </HEAD> <BODY> <? echo "Variable saludo: ". $saludo. "<br>"; echo "Variable texto: ". $texto. "<br>";?> </BODY> </HTML>

15 Procesar variables de formularios

16 Paso de variables por URL Siempre que se pueda, php.ini debe contener la variable de configuración register_globals a Off Se han producido grandes problemas de seguridad por culpa de la definición automática de variables extraídas de la URL

17 Paso de variables por URL Es posible recopilar en una variable tipo array el conjunto de variables que han sido enviadas al script por este método a partir de la variable de sistema $_GET, que es un array asociativo. Utilizándolo quedaría así: <? echo "Variable saludo: ". $_GET["saludo"]. "<br>"; echo "Variable texto: ". $_GET["texto"]. "<br>";?>

18 Paso de variables por URL Aunque podamos recoger variables con este array asociativo o utilizar directamente las variables que se definen en nuestra página, resulta más seguro utilizar $_GET por dos razones: 1. Así nos aseguramos que esa variable viene realmente de la URL 2. Así nuestro código será más claro cuando lo volvamos a leer, porque quedará especificado que esa variable estamos recibiéndola por la URL 3. register_globals puede estar a Off y el script funcionará

19 Paso de variables por URL Antes de la versión de PHP se utilizaba el array asociativo $HTTP_GET_VARS, que es idéntico a $_GET, aunque un poco más largo de escribir A partir de PHP 5 el array $HTTP_GET_VARS quedó obsoleto

20 Paso de variables por URL Tarea: Volver a poner register_globals a Off y comprobar que el paso de variables por URL funciona gracias a $_GET

21 Paso de variables por URL Caracteres especiales en URL y su codificación con PHP: Hay algunos caracteres raros que no se pueden pasar, tal cual, por la URL Por ejemplo, una URL no puede contener espacios en blanco, por lo que si intentas enviar una variable por URL con un valor que tiene un espacio en blanco, nos dará problemas El signo & crea una nueva variable y puede dar errores El signo "*" no puede figurar en las URLs de muchos sitios web Así pues, tenemos que hacer algo para convertir esos caracteres, de modo que no den problemas en la URL.

22 Paso de variables por URL Ejemplo de problemas con variables en URL origen.php <HTML> <HEAD> <TITLE>origen.html</TITLE> </HEAD> <BODY> <? $saludo=" hola"; $texto="texto & esta parte se pierde :("; echo "<a href=\"destino.php?saludo=".$saludo."&texto=".$texto."\">paso variables saludo y texto a la página destino.php</a>"?> </BODY> </HTML>

23 Procesar variables de formularios

24 Paso de variables por URL La solución en PHP es sencilla, simplemente debemos codificar la variable que tiene caracteres conflictivos a formato URL. Para ello utilizamos la función urlenconde(), que viene en la librería de funciones de PHP. origen.php <HTML> <HEAD> <TITLE>origen.html</TITLE> </HEAD> <BODY> <? $saludo=urlencode(" hola"); $texto=urlencode("texto & esta parte se pierde :("); echo "<a href=\"destino.php?saludo=".$saludo."&texto=".$texto."\">paso variables saludo y texto a la página destino.php</a>"?> </BODY> </HTML>

25 Procesar variables de formularios

26 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

27 Procesar variables de formularios El lenguaje PHP nos proporciona una manera sencilla de manejar formularios, permitiéndonos de esta manera procesar la información que el usuario ha introducido. Al diseñar un formulario debemos indicar la página PHP que procesará el formulario, así como en método por el que se le pasará la información a la página.

28 Procesar variables de formularios <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</h1> Introduzca su nombre: <FORM ACTION="procesa.php" METHOD="GET"> <INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

29 Procesar variables de formularios

30 Procesar variables de formularios Al pulsar el botón Enviar el contenido de cuadro de texto es enviado a la página que indicamos en el atributo ACTION de la etiqueta FORM. En versiones anteriores a PHP se creaba una variable por cada elemento del FORM Esta variable creada tenía el mismo nombre que el cuadro de texto de la página anterior y el valor que habíamos introducido Por razones de seguridad a partir de entonces para acceder a las variables del formulario hay que usar el array de parámetros $_POST[] o $_GET[] dependiendo del método usado para enviar los parámetros. En este ejemplo se ha creado una entrada en el array $_GET[] con el índice 'nombre' y con el valor que haya introducido el navegante En PHP no existe ninguna instrucción para recibir los datos, tan solo hay que hacer referencia al nombre del objeto que se quiere recibir En ASP se tenían que usar dos métodos Request: Request.Form( nombre_variable ) para envíos con POST Request.QueryString( nombre_variable ) para envíos con GET

31 Procesar variables de formularios procesa.php <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</h1> El nombre que ha introducido es: <?php echo $_GET['nombre']?> <br> </body> </html>

32 Procesar variables de formularios

33 Método GET y POST Hemos comentado que los datos de un formulario se envían mediante el método indicado en el atributo METHOD de la etiqueta FORM, los dos métodos posibles son GET y POST. La diferencia entre estos dos métodos radica en la forma de enviar los datos a la página, mientras que el método GET envía los datos usando la URL, el método POST los envía por la entrada estándar STDIO

34 Método GET y POST ejemploget.php <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</h1> <FORM ACTION="procesa2.php" METHOD="GET"> Introduzca su nombre:<input TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<input TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

35 Método GET y POST ejemplopost.php <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</h1> <FORM ACTION="procesa2.php" METHOD="POST"> Introduzca su nombre:<input TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<input TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

36 Método GET y POST procesa2.php <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</h1> El nombre que ha introducido por GET es: <?php echo $_GET['nombre']," ",$_GET['apellidos']?><br> El nombre que ha introducido por POST es: <?php echo $_POST['nombre']," ",$_POST['apellidos']?> <br> </body> </html>

37 Procesar variables de formularios

38 Procesar variables de formularios

39 Procesar variables de formularios Brainstorming Por qué dos métodos distintos? Cuál se usará en cada caso? Ventajas? Inconvenientes?

40 Método GET y POST Con ambos métodos HTTP se pueden lograr los mismos objetivos pero una incorrecta elección entre ellos puede conducir a resultados inesperados y potencialmente perjudiciales. GET es más utilizado: 1. Las solicitudes GET pueden ser cacheadas 2. Las solicitudes GET pueden permanecer en el historial del navegador 3. Las solicitudes GET pueden ser guardas en los favoritos 4. Las solicitudes GET pueden ser distribuidas y compartidas

41 Método GET y POST El método GET es bueno para recuperar información de los sitios favoritos o en la optimización del motor de búsqueda y la indexación. POST es bueno en los formularios donde se envían datos una sola vez. No se suele usar GET en formularios excepto los formularios de búsqueda en los que desea que el usuario pueda guardar la URL de consulta en sus favoritos.

42 Método GET y POST Regla 1 - Utilice POST cuando se trata de datos sensibles Las cadenas de datos de una consulta se trasmiten abiertamente en las solicitudes GET, debemos considerar nuestra seguridad y la de nuestros usuarios cuando se trata de datos sensibles como contraseñas o números de tarjetas de crédito. Si no se quiere exponer la información a través de la URL con método GET será necesario que la petición se realice a través de una conexión segura SSL

43 Método GET y POST Regla 2 - Usar POST cuando se trata de grandes peticiones A pesar de que la RFC no establece ninguna directriz relacionada con la longitud, Internet Explorer, en su insistencia en encontrar maneras de ponernos las cosas difíciles, impone un máximo de URL de caracteres de longitud.

44 Método GET y POST Regla 3 - Utilice GET en entornos AJAX Cuando se utiliza XMLHttpRequest, los navegadores implementan el POST como un proceso de dos pasos (el envío de los encabezados y a continuación el envío de los datos). Esto significa que las solicitudes GET son más rápidas, siendo esto algo que se necesita en entornos AJAX

45 Procesar variables de formularios Ejercicio: restricción de acceso por edad Vamos a realizar una página que solicite la edad del visitante y, dependiendo de dicha edad, permita o no visualizar el contenido de la web. A los mayores de 18 años se les permite ver la página y a los menores no.

46 Procesar variables de formularios origen.php <html> <head> <title>restringir por edad</title> </head> <body> <form action="destino.php" method="post"> Escribe tu edad: <input type="text" name="edad" size="2"> <input type="submit" value="entrar"> </form> </body> </html> destino.php <html> <head> <title>restringir por edad</title> </head> <body> <? $edad = $_POST["edad"]; echo "Tu edad: $edad<p>"; if ($edad < 18) { echo "No puedes entrar"; }else{ echo "Bienvenido"; }?> </body> </html>

47 Manejo de formularios función mail(): nos ofrece la posibilidad de enviar s de una manera sencilla y fácil <?php mail(destinatario, tema, texto del mensaje);?> En el parámetro destinatario pondremos la dirección de a donde se enviará el mensaje, en el parámetro tema el tema o subject del mensaje y el parámetro texto del mensaje el cuerpo del mensaje en formato texto plano

48 Manejo de formularios función Existe una sintaxis extendida de la instrucción mail( ) que nos permite añadir información adicional a la cabecera del mensaje <?php mail(destinatario, tema, texto del mensaje, información adicional de cabecera);?> En la información de cabecera podremos incluir parámetros adicionales al mensaje como Reply-To:, From:, Content-type:... que nos permiten tener un mayor control sobre el mensaje

49 Método GET y POST Ejercicio Realizar un pequeño sitio web que permita enviar a una dirección de correo un mensaje en texto plano o en HTML La página principal tomará los datos y no puede contener código PHP alguno. Los datos se enviarán a un recurso llamado .php que será el encargado de realizar el envío

50 Método GET y POST

51 Manejo de formularios función Posible interfaz visual HTML <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de envio de </h1> Introduzca direccion de de destino: <FORM ACTION=" .php" METHOD="GET"> <INPUT TYPE="text" NAME="direccion"><BR> Introduzca el asunto del mensaje:<br> <INPUT TYPE="text" NAME="asunto"><BR> Introduzca el texto a enviar:<br> <INPUT TYPE="text" NAME="texto"><BR><BR> Formato: <BR> <INPUT TYPE="radio" NAME="tipo" VALUE="plano" CHECKED> Texto plano<br> <INPUT TYPE="radio" NAME="tipo" VALUE="html"> HTML<BR><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

52 Manejo de formularios función .php <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de envio de </h1> <? $direccion=$_get['direccion']; $asunto=$_get['asunto']; $texto=$_get['texto']; $tipo=$_get['tipo']; if ($direccion!=""){ if ($tipo=="plano"){ // Envio en formato texto plano mail($direccion,$asunto,$texto,"from: Pruebas } else { // Envio en formato HTML mail($direccion,$asunto,"<html><head><title>aprendiendo PHP con David</title></head><body>".$texto."</body></html>","Content-type: text/html\n", "FROM: Pruebas <webmaster@hotmail.com>\n"); } echo "Se ha enviado un a la direccion: ",$direccion," en formato <b>",$tipo,"</b>."; }?> <br> </body> </html>

53 Manejo de formularios función Se requiere un servidor de correo SMTP en localhost, por ejemplo, MercuryMail

54 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

55 Autollamada de páginas Al incluir un formulario en una página, se debe indicar a través del atributo action el nombre del archivo PHP al que enviaremos los datos escritos en el formulario De este modo, para un esquema de envío de datos por formulario, pueden participar dos páginas: una que contiene el formulario y otra que recibe los datos de dicho formulario Lo mismo ocurre cuando enviamos variables por una URL: tenemos una página que contendrá el enlace y otra página que recibirá y tratará esos datos para mostrar unos resultados.

56 Autollamada de páginas Ahora vamos a ver cómo se pueden enviar y recibir datos de un formulario con una única página Asimismo, veremos como en la misma página podemos tener enlaces con paso de variables por URL y además, podemos recoger y tratar esos datos con la misma página A este efecto se le llama "autollamada de páginas", también se le suele llamar como "Formularios reentrantes" o términos similares Es muy interesante conocer el modo de funcionamiento de estos scripts, porque serán muy habituales en nuestras páginas PHP y ayudan mucho a tener los códigos ordenados

57 Autollamada de páginas En ambos casos, para formularios o envío de datos por la URL, se debe seguir un esquema como este: Comprobar si recibo datos por URL o por formulario a) Si no recibo datos Muestro el formulario o los enlaces que pasan variables. b) Si recibo datos Entonces tengo que procesar el formulario o las variables de la URL

58 Autollamada de páginas Para un formulario: <html> <head> <title>me llamo a mi mismo...</title> </head> <body> <? if (!$_POST){?> <form action="auto-llamada.php" method="post"> Nombre: <input type="text" name="nombre" size="30"> <br> Empresa: <input type="text" name="empresa" size="30"> <br> Telefono: <input type="text" name="telefono" size=14 value="+34 " > <br> <input type="submit" value="enviar"> </form> <? }else{ echo "<br>su nombre: ". $_POST["nombre"]; echo "<br>su empresa: ". $_POST["empresa"]; echo "<br>su Teléfono: ". $_POST["telefono"]; }?> </body> </html>

59 Autollamada de páginas

60 Autollamada de páginas El primer paso es conocer si se están recibiendo o no datos por un formulario. Para ello se comprueba con un enunciado if si existe o no una variable $_POST. En concreto if (!$_POST) querría decir algo como "Si no existen datos venidos de un formulario". En caso de que no existan, muestro el formulario. En caso de que sí existan, recojo los datos y los imprimo en la página.

61 Autollamada de páginas Para paso de variables por URL : la idea es la misma. Comprobar con un enunciado if si se reciben o no datos desde una URL Si no hay datos, es necesario interactuar con el usuario para que nos dé información, decida que hacer, etc. Ejercicio: Crear una página que muestre una serie de enlaces para ver las tablas de multiplicar de el 1 hasta el 10. Cada uno de los enlaces muestra una tabla de multiplicar. Pulsando el primer enlace podemos ver la tabla del 1 a través de una llamada reentrante a la página, pulsando el segundo enlace se verá la tabla del 2, etc.

62 Autollamada de páginas

63 Autollamada de páginas <html> <head> </head> <title>tablas de multiplicar</title> <body> <? if (!$_GET){ for ($i=1;$i<=10;$i++){ echo "<br><a href='ver_tabla.php?tabla=$i'>ver la tabla del $i</a>\n"; } } else { $tabla=$_get["tabla"];?> <table align=center border=1 cellpadding="1"> <? for ($i=0;$i<=10;$i++){ echo "<tr><td>$tabla X $i</td><td>=</td><td>". $tabla * $i. "</td></tr>\n"; }?> </table> <? }?> </body> </html>

64 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

65 Uso de cookies en PHP En Internet visitamos gran cantidad de páginas, muchas de ellas bastante complicadas que implementan distintos servicios Estas páginas tienen que guardar distintas informaciones acerca de un usuario, por ejemplo su nombre, su edad o su color preferido Para ello cuentan con una serie de mecanismos en el servidor como bases de datos u otro tipo de contenedores, pero hay un mecanismo interesante para guardar esa información en el propio ordenador del usuario sin usar recursos del servidor: las cookies

66 Uso de cookies en PHP

67 Uso de cookies en PHP En nuestros ordenadores se guardan muchos datos que necesitan conocer las páginas web cada vez que entramos en la página Estas pequeñas informaciones son cookies: estados de variables que se conservan de una visita a otra en el ordenador del cliente Como es un poco peligroso que las páginas web a las que accedemos se dediquen a introducir cosas en nuestro ordenador, las cookies están altamente restringidas

68 Uso de cookies en PHP Restricciones: Solamente podemos guardar en ellas textos, nunca programas, imágenes, etc Además, los textos nunca podrán ocupar más de 1KB, de modo que nadie podría inundarnos el ordenador a base de cookies Es necesario poner una fecha de caducidad a las cookies para que estas se guarden solo de forma temporal Estas restricciones hacen que el aceptar cookies no signifique un verdadero problema para la integridad de los sistemas cliente

69 Uso de cookies en PHP Ejemplos comunes de cookies: Un ejemplo típico de las cookies podría ser un contador de las veces que accede un usuario a una página. Podríamos poner una cookie en el ordenador del cliente donde tendríamos una variable que lleva la cuenta de las veces que ha accedido a la página y cada vez que se accede se incrementa en uno Una cookie puede guardar la personalización de un usuario de la página visitada. Si el usuario puede elegir un color de visualización, para que el color elegido se conserve de visita en visita se utilizan cookies Otro ejemplo típico es el que guarda el perfil del usuario. Si el usuario accede a contenidos determinados podemos enviarle una cookie que le marca como interesado en un tema. A medida que va accediendo a distintos sitios le vamos encasillando como joven, adulto, hombre, mujer, o lo que proceda. Conociendo el perfil de un usuario se le pueden ofrecer un tipo de productos o servicios orientados a sus gustos o necesidades.

70 Uso de cookies en PHP Para trabajar con cookies tenemos que utilizar un lenguaje de programación avanzado como Javascript, ASP, PHP, etc. No podemos trabajar con cookies si solamente nos dedicamos a utilizar el HTML, que ya sabemos que es un poco limitado para cosas que se salgan de mostrar contenido en páginas estáticas La utilidad principal de las cookies es por tanto la de poder identificar al navegador una vez éste visita el sitio por segunda vez y así, en función del perfil del cliente dado en su primera visita, el sitio puede adaptarse dinámicamente a sus preferencias lengua utilizada colores de pantalla formularios rellenados total o parcialmente redirección a determinadas páginas...

71 Uso de cookies en PHP Polémica: Existe un problema con estas galletitas y es que nos cortan nuestra intimidad Lo que señalábamos anteriormente acerca de guardar el perfil de un usuario puede llegar a ser un problema para nosotros, por que nos están vigilando y apuntando cada uno de nuestros movimientos, lo que puede convertirse en un abuso de información que no tiene por qué pertenecer a nadie más que nosotros Las empresas que más utilizan esta clasificación del personal son los AD-Servers (servidores de banners) como el de Doubleclick

72 Uso de cookies en PHP Es posible ver estos archivos Para abrirlos hay que ir a directorio C:WindowsCookies para los usuarios de IE 4+ C:...NetscapeUsersdefaultuser para usuarios de Netscape C:\Documents and Settings\(Administrador)\Datos de programa\mozilla\firefox\profiles\(tu perfil) para los usuarios de Firefox Como podréis comprobar, en la mayoría de los casos la información que se puede obtener es indescifrable

73 Uso de cookies en PHP Para crear cookies con PHP, modificar o generar una nueva cookie lo podemos hacer a partir de la función SetCookie: setcookie("nombre_de_la_cookie",valor,expiracion);

74 Uso de cookies en PHP Ejemplo: Imaginemos que queremos introducir en una variable cookie el nombre del visitante El nombre ha podido ser previamente recogido por un formulario tal y como hemos visto Esa variable queremos que se llame persona y que expire dentro de 1 año a partir de su creación Nota: el valor expiración debe ser de tipo timestamp, es decir, un número entero de segundos transcurridos desde el tiempo epoch, es decir, medianoche del 1 de enero de 1970 (Greenwich Mean Time) setcookie("persona",$nombre,time()+86400*365); 24 horas * 60 minutos * 60 segundos

75 Uso de cookies en PHP De este modo hemos creado una cookie php llamada persona que tiene como valor el contenido de la variable $nombre y tendrá una duración de 1 año a partir de su creación Es importante que la creación de la cookie sea previa a la apertura del documento HTML. En otras palabras, las llamadas a la función setcookie() deben ser colocadas antes de la etiqueta HTML Definir una cookie ya existente implica el borrado de la antigua Del mismo modo, el crear una primera cookie conlleva la generación automática del archivo texto

76 Uso de cookies en PHP Para utilizar el valor de la cookie en nuestros scripts tan sólo tendremos que llamar la variable que define la cookie Hay que tener cuidado sin embargo de no definir variables en nuestro script con el mismo nombre que las cookies PHP privilegiará el contenido de la variable local con respecto a la cookie NO dará un mensaje de error Esto nos puede conducir a errores realmente difíciles de detectar. Es posible recopilar en una variable tipo array el conjunto de cookies almacenadas en el disco duro del internauta mediante la variable de servidor $_COOKIE Las cookies son una herramienta fantástica para personalizar una página pero hay que ser cautos: No todos los navegadores las aceptan Se puede deliberadamente impedir al navegador la creación de cookies Resultan un complemento y no una fuente de variables infalible para nuestro sitio

77 Uso de cookies en PHP Practicando con el ejemplo anterior origen.php <html> <head> </head> <title>identificación</title> <body> <FORM METHOD="post" ACTION="destino.php"> <p> Quién eres?<input type="text" name="nombre" size="30"</p> <INPUT TYPE="submit" VALUE="Enviar"> </body> </html>

78 Uso de cookies en PHP Practicando con el ejemplo anterior destino.php <? if ($_POST) { setcookie("persona",$_post['nombre'],time()+86400); }?> <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de Acceso a una Cookie</H1> <? echo "tu nombre es ". $_COOKIE['persona'];?> <br> </body> </html>

79 Uso de cookies en PHP Practicando con el ejemplo anterior post cliente persona=david

80 Uso de cookies en PHP Practicando con el ejemplo anterior Reiniciamos el navegador y accedemos directamente a post cliente persona=david

81 Uso de cookies en PHP setcookie() recibe varios parámetros, entre ellos, el nombre de la cookie, el valor y la caducidad El único parámetro obligatorio es el primero, el nombre de la cookie, los demás son opcionales Veamos la lista entera de parámetros de setcookie() con sus explicaciones: Nombre o Un string con el nombre que queremos darle a la cookie a guardar. Puede ser cualquiera que deseemos. Valor o Una cadena de caracteres que es el valor que va a tener la cookie. Caducidad o Es un timestamp con el valor de la fecha en la que caducará la cookie. Lo normal es utilizar la función time(), que genera el timestamp actual y sumarle el número de segundos que quedamos que dure la cookie

82 Uso de cookies en PHP Ruta o El camino o ruta donde la cookie se podrá utilizar dentro del dominio o Por defecto, la cookie se podrá utilizar en el directorio donde se ha creado y sus subdirectorios o Si indicamos "/" la cookie tendrá validez dentro de todo el dominio Dominio o Es el subdominio donde se podrá acceder a la cookie o Las cookies sólo se pueden generar y utilizar para el dominio de la página donde está colocado el script, pero podemos hacerlo visible para todos los subdominios del dominio de la web por medio de ".midominio.com Seguro o Es un boleano que, si es true, indica que la cookie sólo puede ser transmitida por shttp (http seguro) Sólo http o Esto es otro boleano que sirve para indicar que la cookie sólo puede ser accedida por medio de las cabeceras del http, lo que la haría inalcanzable para lenguajes de script en el cliente como Javascript o Este parámetro fue añadido en PHP 5.2.0

83 Uso de cookies en PHP La function setcookie() de PHP genera y envía la cookie al navegador y devuelve un boleano, si es true indica que se pudo incluir en el navegador del usuario y si es false indica que no ha podido colocarla en el sistema Pero este valor no indica que luego el visitante la haya aceptado o no, puesto que puede haber configurado el navegador para no aceptar cookies y esto no lo puede detectar setcookie() directamente Por ejemplo, estas serían diferentes llamadas a setcookie(): setcookie("migalleta", "mivalor"); setcookie("cookie2", "mivalor2", time() ); setcookie("otracookie", "valorfinal", time() , "/", ".midominio.com");

84 Uso de cookies en PHP Atención: Para enviar una cookie al navegador se debe hacer antes de haber enviado las cabeceras del http al cliente, es decir, antes de haber escrito cualquier texto en la página Si no, PHP podrá lanzar un error de headers already sent (cabeceras ya enviadas) destino.php <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de Acceso a una Cookie</H1> <? if ($_POST) { setcookie("persona",$_post['nombre'],time()+86400); } echo "tu nombre es ". $_COOKIE['persona'];?> <br> </body> </html>

85 Uso de cookies en PHP Error debido a que la cookie no se envió antes de las cabeceras HTTP post post

86 Uso de cookies en PHP Para recibir las cookies que el navegador del usuario pueda tener creadas en el sistema se utiliza el array asociativo $_COOKIE En este array están todas las cookies que tiene disponible la página PHP en el dominio y el directorio donde está colocado Por medio del nombre de la cookie accedemos a su valor: $_COOKIE["migalleta"]; $_COOKIE["cookie2"];

87 Uso de cookies en PHP Ejercicio 1 Vamos a crear una página que puede configurarse con distintos estilos CSS El usuario es quien decide qué aspecto desea que tenga la página, por medio de un formulario Luego la página es capaz de recordar, entre los distintos accesos que realice el usuario, el aspecto que había elegido para mostrar la web

88 Uso de cookies en PHP estilo=verde, rosa ó negro cliente

89 Uso de cookies en PHP El formulario HTML para seleccionar el estilo <form action="taller-cookies-php.php" method="post"> Aquí puedes seleccionar el estilo (color de fondo) que deseas la página: <br> <select name="estilo"> <option value="verde">verde <option value="rosa">rosa <option value="negro">negro </select> <input type="submit" value="actualizar el estilo"> </form>

90 Uso de cookies en PHP Recibir el formulario y crear la cookie: si recibimos un valor del formulario tendríamos que crear una cookie para recordar qué estilo desea el usuario para visualizar la página //Veo si recibo datos del formulario if(isset($_post["estilo"])){ //es que estoy recibiendo un estilo nuevo, lo tengo que meter en las cookies $estilo = $_POST["estilo"]; //meto el estilo en una cookie setcookie("estilo", $estilo, time() + (60 * 60 * 24 * 90)); }

91 Uso de cookies en PHP La cookie la guardamos con el nombre "estilo" y con el valor captado del formulario. Hemos configurado la cookie para que permanezca en el ordenador del usuario 90 días Ahora, si la página no ha recibido por post el estilo con el que se debe mostrar, tendremos que acceder al array $_COOKIE para ver si está creada la correspondiente galletita y saber el estilo que el visitante había configurado en anteriores accesos }else{ //si no he recibido el estilo que desea el usuario en la página, miro si hay una cookie creada if (isset($_cookie["estilo"])){ //es que tengo la cookie $estilo = $_COOKIE["estilo"]; } }

92 Uso de cookies en PHP En cualquier caso, el estilo lo hemos guardado en una variable global al script PHP $estilo, que la vamos a utilizar para crear el enlace con la hoja de estilos CSS deseada if (isset($estilo)){ echo '<link rel="stylesheet" type="text/css" href="'. $estilo. '.css">'; } Si hay un estilo definido en $estilo, hacemos la inclusión del mismo con la correspondiente etiqueta HTML

93 Uso de cookies en PHP verde.css Finalmente, es necesario definir los distintos estilos body{ background-color: Green; color: #ffffff; font: 10pt Verdana, Geneva, Arial, Helvetica, sans-serif; } rosa.css body{ } negro.css background-color: #ffdddd; color: #666666; font: 10pt "Times New Roman", Times, serif; body{ background-color: #000000; color: #ffffff; font: 12pt Garamond, arial; }

94 Uso de cookies en PHP ejemplo_cookie.php <? if(isset($_post["estilo"])){ $estilo = $_POST["estilo"]; setcookie("estilo", $estilo, time() + (60 * 60 * 24 * 90)); }else{ if (isset($_cookie["estilo"])){ $estilo = $_COOKIE["estilo"]; } }?> <html> <head> <title>cookies en PHP</title> <? if (isset($estilo)){ echo '<link rel="stylesheet" type="text/css" href="'. $estilo. '.css">'; }?> </head> <body> Ejemplo de uso de cookies en PHP para almacenar la hoja de estilos css que queremos utilizar <p> <form action="ejemplo_cookie.php" method="post"> Aquí puedes seleccionar el estilo (color de fondo) que deseas la página: <br> <select name="estilo"> <option value="verde">verde <option value="rosa">rosa <option value="negro">negro </select> <input type="submit" value="actualizar el estilo"> </form> </body> </html>

95 Uso de cookies en PHP Comprobar el funcionamiento de ejemplo_cookie.php, seleccionando una opción y accediendo tras cerrar el navegador a la misma página Se ha almacenado la selección de css? Investigue cómo rechazar cookies en el navegador, y pruebe de nuevo a sobreescribir la cookie Ha logrado impedir que se guarde la nueva cookie? Finalmente, modifique el campo caducidad de la cookie a unos pocos segundos Ha podido verificar que la cookie desaparecía del lado cliente y se perdía la selección realizada?

96 Uso de cookies en PHP Ejercicio 2 Vamos a crear una cookie contador que lleve la cuenta en el lado cliente del número de veces que se ha accedido a la página contador.php Si es la primera vez que se accede, la página dará la bienvenida al usuario Si ya se ha accedido antes, la página hará uso de la cookie para mostrar el número de veces que se ha visitado dicha página

97 Uso de cookies en PHP

98 Uso de cookies en PHP contador.php <?php if (isset($_cookie['visitas'])) { $visitas = $_COOKIE['visitas'] + 1; setcookie("visitas",$visitas,time() +3600*24*365); } else { $visitas = 1; }?> <html> <body> <?php if ($visitas > 1) { echo "Esta es tu visita número ". $_COOKIE['visitas']; } else { echo "Bienvenido, esta es la primera vez que visitas esta pagina"; }?> </body> </html>

99 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

100 Uso de Sesión en PHP Hasta ahora, cuando cargámos otra página distinta, los valores de las variables se pierden a menos que nos tomemos la molestia de pasarlos por la URL o inscribirlos en las cookies o en un formulario para su posterior explotación Estos métodos, aunque útiles, no son todo lo prácticos que podrían en determinados casos en los que la variable que queremos conservar ha de ser utilizada en varios scripts diferentes y distantes los unos de los otros

101 Uso de Sesión en PHP Podríamos pensar que ese problema puede quedar resuelto con las cookies ya que se trata de variables que pueden ser invocadas en cualquier momento El problema es que las cookies no son aceptadas ni por la totalidad de los usuarios ni por la totalidad de los navegadores Eso implica que una aplicación que se sirviera de cookies para pasar variables de un archivo a otro no sería 100% infalible Es importante a veces pensar en "la inmensa minoría", sobre todo en aplicaciones de comercio electrónico donde debemos captar la mayor cantidad de clientes posibles y nuestros scripts deben estar preparados ante cualquier eventual deficiencia del navegador del cliente

102 Uso de Sesión en PHP Resulta pues necesario poder declarar ciertas variables que puedan ser reutilizadas tantas veces como queramos dentro de una misma sesión Sesión = intervalo de tiempo empleado por un usuario en recorrer la secuencia de páginas de un sitio web, hasta que abandona dicho sitio o deja de actuar sobre él durante un tiempo prolongado, o bien, sencillamente, cierra el navegador Imaginemos un sitio multilingüe en el que cada vez que queremos imprimir un mensaje en cualquier página necesitamos saber en qué idioma debe hacerse Podríamos introducir un script identificador de la lengua del navegador en cada uno de los archivos O bien declarar una variable que fuese válida para toda la sesión y que tuviese como valor el idioma reconocido en un primer momento

103 Uso de Sesión en PHP Pensemos también en un carrito de la compra de una tienda virtual donde el cliente va navegando por las páginas del sitio y añadiendo Este carrito podría ser perfectamente una variable de tipo array (tabla) que almacena para cada referencia la cantidad de artículos contenidos en el carrito Esta variable debería ser obviamente conservada continuamente a lo largo de todos los scripts (páginas web) Este tipo de situaciones son solventadas a partir de las variables de sesión

104 Uso de Sesión en PHP PHP nos permite almacenar variables llamadas de sesión que, una vez definidas, podrán ser utilizadas durante este lapso de tiempo por cualquiera de los scripts de nuestro sitio Estas variables serán específicas del usuario: Varias variables sesión del mismo tipo con distintos valores pueden estar coexistiendo para cada usuario, gracias a cada una de las sesiones que están teniendo lugar simultáneamente Estas sesiones tienen además su propio identificador que será único y específico Desde PHP4 existen multitud de facilidades de manejo de estas variables

105 Uso de Sesión en PHP Las sesiones son, por tanto, una manera de guardar información específica para cada usuario, durante toda su visita Cada usuario que entra en un sitio abre una sesión, que es independiente de la sesión de otros usuarios En la sesión de un usuario podemos almacenar todo tipo de datos, como su nombre, productos de un hipotético carrito de la compra, preferencias de visualización o trabajo, páginas por las que ha pasado, etc.

106 Uso de Sesión en PHP Para cada usuario PHP genera un identificador de sesión único, que sirve para saber las variables de sesión que pertenecen a cada usuario Para conservar el identificador de sesión durante toda la visita de un usuario a una página, el módulo PHP almacena la variable de sesión en una cookie, o bien la propaga a través de la URL Esto se puede configurar desde el archivo php.ini

107 Uso de Sesión en PHP Es necesario identificar: 1. Cómo inicializar sesión 2. Cómo crear variables de sesión 3. Cómo recuperar dichas variables

108 Uso de Sesión en PHP Cómo inicializar sesión Cuando queremos utilizar variables de sesión en una página tenemos que iniciar la sesión con la siguiente función: session_start () ; Inicia una sesión para el usuario o continúa la sesión que pudiera tener abierta en otras páginas Al hacer session_start() PHP internamente recibe el identificador de sesión almacenado en la cookie o el que se envíe a través de la URL. Si no existe tal identificador se sesión, simplemente lo crea

109 Uso de Sesión en PHP Nota: Si en el php.ini se ha definido la variable session.auto_start = 1 se inicializa automáticamente la sesión en cada página que visita un usuario, sin que se tenga que hacer el session_start() Tarea: comprobraren qué estado se encuentra la configuración del php.ini del servidor web desde el que se está realizando el curso

110 Uso de Sesión en PHP Una vez inicializada la sesión con session_start() podemos utilizar variables de sesión, es decir, almacenar datos para ese usuario, que se conserven durante toda su visita o recuperar datos almacenados en páginas que haya podido visitar La sesión se tiene que inicializar antes de escribir cualquier texto en la página Esto es importante y de no hacerlo así corremos el riesgo de recibir un error, porque al iniciar la sesión se deben leer las cookies del usuario, algo que no se puede hacer si ya se han enviado las cabeceras del HTTP Nota: si se intenta abrir una sesión después de haber enviado texto de la página al cliente se puede obtener el siguiente mensaje: Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at )

111 Uso de Sesión en PHP Una vez iniciada la sesión podemos utilizar variables de sesión a través de $_SESSION, que es un array asociativo, donde se accede a cada variable a partir de su nombre, de este modo: $_SESSION["nombre_de_variable"]; Nota: Para versiones de PHP antiguas (<4) se empleaba $HTTP_SESSION_VARS, que es también un array asociativo, aunque no es de ámbito global. Si $HTTP_SESSION_VARS tampoco funciona tendremos que registrar cada variable por separado con la función session_register(), enviándo por parámetro los nombres de las variables de sesión que desea utilizar desde PHP

112 Uso de Sesión en PHP Existen otras dos configuraciones del php.ini que afectan al trabajo con variables de sesión, que son track_vars y register_globals Por defecto track_vars está activado y register_globals está desactivado Este es el caso normal y el que se supone tendrá el servidor web Si esas variables cambian podrían necesitarse modificaciones al código, como tener que registrar las variables explícitamente con session_register()

113 Uso de Sesión en PHP Ejemplo de uso de sesión: <? session_start();?> <html> <head> <title>generar variable de sesión</title> </head> <body> <? $_SESSION['variable'] = "Hola este es el valor de la variable de session";?> <a href="siguiente.php">continuar navegando</a> </body> </html>

114 Uso de Sesión en PHP Como se puede ver, es importante inicializar la sesión antes de hacer otra cosa en la página Luego podremos definir variables de sesión en cualquier lugar del código PHP de la página Para leer una variable de sesión se hace a través del mismo array asociativo $_SESSION Es tan sencillo como haríamos para utilizar cualquier otra variable. Requisitos: Haber inicializado la sesión previamente Que la variable a la que deseamos acceder exista previamente

115 Uso de Sesión en PHP destino.php <? session_start();?> <html> <head> <title>leo variable se sesión</title> </head> <body> Muestro esa variable: <? echo $_SESSION['variable'];?> </body> </html> Muestro esa variable: Hola este es el valor de la variable de session

116 Uso de Sesión en PHP Como se puede ver, al inicio del código hemos inicializado la sesión y luego en cualquier parte del código podríamos acceder a las variables de sesión que tuviésemos creadas Nota: si intentamos acceder a una variable de sesión con $_SESSION que no ha sido creada obtendremos otro mensaje de error: Notice: Undefined index: variable2 in C:\xampp\htdocs\php\siguiente.php on line 11

117 Uso de Sesión en PHP Ejercicio: Implementar un script que indique el número de veces que se ha cargado/recargado una página Se desea que la cuenta de recargas se lleve a cabo en variables de sesión La página tendrá un link de carga a la propia página, y en link se añadirá el numero de recargas que se han hecho hasta ahora Prueba de contador 0 Prueba de contador 1

118 Uso de Sesión en PHP ejercicio.php <? session_start();?> <html> <head> <title>programa que sirve para declarar registros de sesiones</title> </head> <body> <? if (isset($_session['contador'])==0) {$_SESSION['contador']=0;} echo "<a href=\"ejerficio.php\">prueba de contador ".$_SESSION['contador']."</a>"; ++$_SESSION['contador'];?> </body> </html> La condición if tiene en cuenta la posibilidad de que la variable contador no haya sido todavía inicializada: isset se encarga de dar un valor cero cuando una variable no ha sido inicializada

119 Uso de Sesión en PHP Otra solución: <?php session_start(); if (isset($_session['contador'])==0) {$_SESSION['contador']=0;} echo '<a href="'.$_server['php_self'].'">contador vale: '.++$_SESSION['contador']. '</a>';?>

120 Uso de Sesión en PHP Otras funciones útiles para la gestión de sesiones son: Función session_id() session_destroy() Session_unset() Descripción Nos devuelve el identificador de la sesión Da por abandonada la sesión eliminando variables e identificador. Libera todas las variables de sesión registradas Visitar

121 Uso de Sesión en PHP Ejercicio: Crear un script que inicialice sesión y muestre el id único de la sesión <?php session_start(); echo 'La sesión actual es: '.session_id();?>

122 Uso de Sesión en PHP Ejercicio: Vamos a crear un conjunto de páginas un poco más complejo que el anterior que lleve un conteo de número de páginas visitadas Si el usuario entra a una página del sitio por 1ª vez, contamos que ha visto una página Luego con cada página adicional que visite, seguiremos acumulando 1 en la cuenta de páginas vistas dentro del sitio Del mismo modo, si se recarga una página o se vuelve a la misma página que ya se estuvo, también haremos que se acumule 1 en su cuenta Emplearemos dos páginas php: cuenta1.php y cuenta2.php

123 Uso de Sesión en PHP Resultado esperado: contador1.php Desde que entraste has visto 1 páginas Ver otra página contador2.php Has visto 2 páginas, contando actualizaciones de paginas Contar páginas vistas por un usuario en toda su sesión ++ contador a cada recarga de HTML

124 Uso de Sesión en PHP contador1.php <? session_start(); if (!isset($_session["cuenta_paginas"])){ $_SESSION["cuenta_paginas"] = 1; }else{ $_SESSION["cuenta_paginas"]++; }?> <html> <head> <title>contar páginas vistas por un usuario en toda su sesión</title> </head> <body> <? echo "Desde que entraste has visto ". $_SESSION["cuenta_paginas"]. " páginas";?> <br> <br> <a href="contador2.php">ver otra página</a> </body> </html>

125 Uso de Sesión en PHP contador2.php <? session_start(); if (!isset($_session["cuenta_paginas"])){ $_SESSION["cuenta_paginas"] = 1; }else{ $_SESSION["cuenta_paginas"]++; } echo "Has visto ". $_SESSION["cuenta_paginas"]. " páginas, contando actualizaciones de paginas";?> <HTML> <BODY> <p> <a href="contador1.php"> Contar páginas vistas por un usuario en toda su sesión </a> </p> </BODY> <HTML>

126 Uso de Sesión en PHP Ejercicio: Se desea crear una página web que emplee un sencillo carrito de la compra La página web deberá iniciar sesión y registrar una variable carrito Esta variable será un array de nombres de productos y cantidad comprada de ese producto La página en sí consistirá en un formulario que permitirá añadir productos (con un nombre dado) y una cantidad (número entero) El formulario llamará a la propia página y abajo del formulario mencionado se listará todo el contenido del carrito, con los productos y cantidades comprados hasta ahora

127 Uso de Sesión en PHP

128 Uso de Sesión en PHP carrito.php <?php session_start(); if (isset($_post['item'])) $item=$_post['item']; if (isset($_post['cantidad'])) $cantidad=$_post['cantidad']; if (isset($_session['carrito'])) $itemsencesta=$_session['carrito']; if (isset($item)){ if (!isset($itemsencesta)){ $itemsencesta[$item]=$cantidad; $_SESSION['carrito']=$itemsEnCesta; }else{ foreach($itemsencesta as $k => $v){ if ($item==$k){ $itemsencesta[$k]+=$cantidad; $encontrado=1; } } if (!isset($encontrado)) $itemsencesta[$item]=$cantidad; $_SESSION['carrito']=$itemsEnCesta; } }?>

129 Uso de Sesión en PHP continuación <html> <body> <tt> <form action="<?echo $_SERVER['PHP_SELF'];?>" method="post"> Dime el producto <input type="text" name="item" size="20"><br> Cuantas unidades <input type="text" name="cantidad" size="20"><br> <input type="submit" value="añadir a la cesta"><br> </form> <? if (isset($itemsencesta)){ echo'el contenido de la cesta de la compra es:<br>'; foreach($itemsencesta as $k => $v){ echo 'Artículo: '.$k.' ud: '.$v.'<br>'; } }?> </tt> </body> </html>

130 Uso de Sesión en PHP Reflexiones Las posibilidades de un sistema de almacenamiento de información de las características de las sesiones son enormes No se necesitan ficheros, ni bases de datos, ni hay que pasar valores de una página a otra PHP va gestionando estos datos por nosotros, hasta el momento en que decidamos almacenar la información donde más nos interese

131 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

132 Trabajar con Bases de Datos en PHP Una de las principales ventajas que presenta el trabajar con PHP es el poder almacenar los contenidos de las aplicaciones servidor en bases de datos De esta forma, podemos organizarlos, actualizarlos y buscarlos de una manera mucho más simple El lenguaje PHP ofrece interfaces para El acceso a la mayoría de las bases de datos comerciales Por ODBC a todas las bases de datos posibles en sistemas Microsoft A partir de las interfaces de BBDD podremos editar el contenido de nuestro sitio con absoluta sencillez

133 Trabajar con Bases de Datos en PHP Esta interacción se realiza con: Funciones que PHP nos propone para cada tipo de base de datos Gracias a un diálogo a partir de un idioma universal: SQL (Structured Query Language) común a todas las bases de datos Para este curso hemos elegido MySQL, sin duda la base de datos más extendida en combinación con PHP Por qué? Gratuita Eficaz Simple

134 Trabajar con Bases de Datos en PHP Operaciones sobre MySQL Instrucción Show databases; Use nombre_de_la_base Create Database nombre_de_la_base; Descripción Muestra el conjunto de bases de datos presentes en el servidor Determina la base de datos sobre la que vamos a trabajar Crea una nueva bd con el nombre especificado Drop Database nombre_de_la_base; Show tables; Describe nombre_de_la_tabla; Drop Table nombre_de_la_tabla; Load Data Local Infile "archivo.txt" Into Table nombre_de_la_tabla; Quit Elimina la base de datos del nombre especificado Muestra las tablas presentes en la base de datos actual Describe los campos que componen la tabla Borra la tabla de la base de datos Crea los registros de la tabla a partir de un fichero de texto en el que separamos por tabulaciones todos los campos registro Salir de MySQL

135 Trabajar con Bases de Datos en PHP Una vez instalado MySQL y antes de poder comenzar con a trabajar con PHP, será necesario llevar a cabo las siguientes operaciones: Crear la base de datos sobre la que actuará la aplicación Seleccionar la base de datos creada como la base a utilizar Crear las tablas, definiendo los atributos de los registros

136 Trabajar con Bases de Datos en PHP Ejemplo: Nuestra primera aplicación PHP con BD va a servir para llevar un registro de clientes, guardando sus nombres y teléfonos 1. Crear la BD create database ejemplo; 2. Seleccionarla como BD actual use ejemplo 3. Crear sus Tablas create table clientes ( nombre varchar(100), telefono varchar(100) );

137 Trabajar con Bases de Datos en PHP Ahora ya disponemos de nuestra tabla vacía Sólo queda comenzar a llenarla con los datos que iremos insertando ejemplo [nombre,tlfno]

138 Trabajar con Bases de Datos en PHP Tarea : Crear una primera página, llamada insertar.html que implemente el formulario anterior, y mande los datos por método post a un script llamado insertar.php

139 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

140 Trabajar con Bases de Datos en PHP insertar.html <HTML> <HEAD> <TITLE>Insertar.html</TITLE> </HEAD> <BODY> <div align="center"> <h1>insertar un registro</h1> <br> <FORM METHOD="POST" ACTION="insertar.php"> Nombre<br> <INPUT TYPE="TEXT" NAME="nombre"><br> Teléfono<br> <INPUT TYPE="TEXT" NAME="telefono"><br> <INPUT TYPE="SUBMIT" value="insertar"> </FORM> </div> </BODY> </HTML>

141 Trabajar con Bases de Datos en PHP Llegados a la página destino del formulario (insertar.php), lo primero que habrá que hacer es establecer un vínculo entre el programa y la base de datos Esta conexión se lleva a cabo con la función mysql_connect En siguiente lugar hay que seleccionar la BD, con mysql_select_db A continuación, deberemos generar una orden de inserción del registro en lenguaje SQL Esta orden será ejecutada por medio de la función mysql_query En esta función especificaremos primeramente la base de datos sobre la que queremos actuar y a continuación introduciremos la sentencia SQL

142 Trabajar con Bases de Datos en PHP insertar.php <HTML> <HEAD> <TITLE>Insertar.php</TITLE> </HEAD> <BODY> <? //Conexion con el sistema gestor de base de datos mysql_connect("localhost","root",""); Obtener datos de nuestra configuración (p.ej. phpmyadmin) //selección de la base de datos con la que vamos a trabajar mysql_select_db("ejemplo");

143 Trabajar con Bases de Datos en PHP continuación //Ejecucion de la sentencia SQL if (isset($_post['nombre']) && (isset($_post['telefono']))){ $nombre = $_POST['nombre']; $telefono = $_POST['telefono']; mysql_query("insert into clientes (nombre,telefono) values ('$nombre','$telefono')");?> <h1><div align="center">registro Insertado</div></h1> <? } else {?><h1><div align="center">falta algún campo!!!</div></h1> <?}?> <div align="center"><a href="insertar.html">insertar más registros de clientes</a></div> <div align="center"><a href="lectura.php">visualizar el contenido de la base</a></div> </BODY> </HTML>

144 Trabajar con Bases de Datos en PHP Antes de seguir, al trabajar con BBDD suele ser recomendable comprobar la ejecución de la inserción con un ejemplo La manera más sencilla es a través de phpmyadmin, Adminer o similar

145 Trabajar con Bases de Datos en PHP

146 Trabajar con Bases de Datos en PHP Una vez verificado que se insertan registros, vamos a continuar con el ejemplo revisando y listando los registros existentes Utilizaremos el comando Select de SQL para crear una selección de nuestra tabla y mostrar todos los datos en pantalla por medio de un bucle

147 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

148 Trabajar con Bases de Datos en PHP Claves para leer de bases de datos en PHP: Es necesario igualmente conectarse y seleccionar la base de datos El resultado de una sentencia SQL de Select es una tabla de resultado La tabla contiene varios registros o filas Para obtener un registro de una tabla resultado se realiza la operación mysql_fetch_array (), que devuelve el siguiente registro o NULL si no hay más registros Cada registro es un array con nombres de campo iguales a los campos de la tabla resultado La tabla resultado se guarda en la memoria del servidor, donde ejecuta el script php, y tras su explotación se debe liberar/borrar con mysql_free_result()

149 Trabajar con Bases de Datos en PHP lectura.php <HTML> <HEAD> <TITLE>lectura.php</TITLE> </HEAD> <BODY> <h1><div align="center">lectura de la tabla</div></h1> <br> <br> <? //Conexion con la base mysql_connect("localhost","tu_user","tu_password"); //selección de la base de datos con la que vamos a trabajar mysql_select_db("mi_base_datos"); //Ejecutamos la sentencia SQL $result=mysql_query("select * from clientes");?> De nuevo, obtener datos de nuestra configuración

150 Trabajar con Bases de Datos en PHP continuación <table align="center"> <tr> <th>nombre</th> <th>teléfono</th> </tr> <? //Mostramos los registros while ($row=mysql_fetch_array($result)) { echo '<tr><td>'.$row["nombre"].'</td>'; echo '<td>'.$row["telefono"].'</td></tr>'; } mysql_free_result($result)?> </table> <div align="center"> <a href="insertar.html">añadir un nuevo registro</a><br> <a href="actualizar.php">actualizar un registro existente</a><br> <a href="borrar.php">borrar un registro</a><br> </div> </BODY> </HTML>

151 Uso de Sesión en PHP

152 Trabajar con Bases de Datos en PHP Los pasos seguidos para la consulta de BD son: En un principio, los vistos para la inserción de un registro 1. Conexión a la base 2. Ejecución de la sentencia La información de dicha ejecución se almacena en una variable ($result) El siguiente paso es plasmar en pantalla la información recogida en $result La función mysql_fetch_array devuelve una variable array con los contenidos de un registro a la vez que se posiciona sobre el siguiente El bucle while nos permite leer e imprimir secuencialmente cada uno de los registros La función mysql_free_result se encarga de liberar la memoria utilizada para llevar a cabo la consulta No se exige su utilización, pero resulta altamente aconsejable

153 Trabajar con Bases de Datos en PHP Una vez que sabemos listar registros, vamos a continuar con el ejemplo creando dos funcionalidades adicionales: Modificación de registro Borrado de registro Cada operación se llevará a cabo por varios scripts PHP independientes: actualizar.php y actualizar2.php borrar.php y borrar2.php

154 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

155 Trabajar con Bases de Datos en PHP Actualizar un registro requerirá usar la sentencia update de SQL Se van a generar un par de scripts (actualizar.php y actualizar2.php) que permitan cambiar el numero de teléfono de las distintas personas presentes en nuestra BD El nombre de estas personas, así como el nuevo numero de teléfono, serán recogidos por medio de un formulario El formulario va a ser esta vez un script PHP en el que efectuaremos una llamada a nuestra base de datos para construir un menú desplegable donde aparezcan todos los nombres

156 Uso de Sesión en PHP Menú desplegable con todos nuestros clientes, generado dinámicamente ACTION nos llevará a un script auxiliar sin interfaz que cambie la BD

157 Trabajar con Bases de Datos en PHP actualizar.php <HTML> <HEAD> <TITLE>actualizar.php</TITLE> </HEAD> <BODY> <div align="center"> <h1>actualizar un registro</h1> <br> <? //Conexion con la base mysql_connect("localhost","tu_user","tu_password"); //selección de la base de datos con la que vamos a trabajar mysql_select_db("mi_base_datos"); echo '<FORM METHOD="POST" ACTION="actualizar2.php">Nombre<br>'; //Creamos la sentencia SQL y la ejecutamos $ssql="select nombre From clientes Order By nombre"; $result=mysql_query($ssql);

158 Trabajar con Bases de Datos en PHP continuación echo '<select name="nombre">'; //Generamos el menu desplegable while ($row=mysql_fetch_array($result)) {echo '<option>'.$row["nombre"];}?> </select> <br> Teléfono<br> <INPUT TYPE="TEXT" NAME="telefono"><br> <INPUT TYPE="SUBMIT" value="actualizar"> </FORM> </div> </BODY> </HTML>

159 Trabajar con Bases de Datos en PHP La manera de operar para construir el menú desplegable es la misma que para visualizar la tabla De nuevo empleamos un bucle while en combinación con la función mysql_fetch_array lo que nos permite mostrar cada una de las opciones El script de actualización (actualizar2.php) será muy parecido al de inserción, pero usando la sentencia UPDATE

160 Trabajar con Bases de Datos en PHP actualizar2.php <? if (isset($_post['telefono']) && isset($_post['nombre'])) {?> <HTML> <HEAD> <TITLE>actualizar2.php</TITLE> </HEAD> <BODY> <? //Conexion con la base mysql_connect("localhost", "tu usuario", "tu password"); //selección de la base de datos con la que vamos a trabajar mysql_select_db("tu bd");

161 Trabajar con Bases de Datos en PHP continuación //Creamos la sentencia SQL y la ejecutamos $telefono =$_POST['telefono']; $nombre = $_POST['nombre']; $ssql="update Clientes Set telefono='$telefono' Where nombre='$nombre'"; mysql_query($ssql);?> <h1><div align="center">registro Actualizado</div></h1> <div align="center"><a href="lectura.php">visualizar el contenido de la base</a></div> </BODY> </HTML> <? }?>

162 Trabajar con Bases de Datos en PHP Con el par de scripts descritos, es posible actualizar la base de datos, y más concretamente, el número de teléfono de un cliente Nos resta poder borrar clientes, por si se introdujo mal su nombre o simplemente por que no los queremos en la base de datos

163 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

164 Trabajar con Bases de Datos en PHP Para borrar un registro, SQL dispone de sentencias del tipo Delete Vamos a emplear de nuevo dos scripts para borrar registros de la base de datos: Primero debemos seleccionar el registro que se desea borrar, mediante un formulario con menú desplegable dinámico Luego realizar el borrado propiamente dicho Para ello crearemos un menú desplegable dinámico, donde se podrá seleccionar el elemento que se desea borrar y luego se pasará a una página PHP una referencia al elemento seleccionado, para borrarlo de la base de datos

165 Uso de Sesión en PHP Menú desplegable con todos nuestros clientes, generado dinámicamente ACTION nos llevará a un script auxiliar sin interfaz que borre de la BD ejemplo [nombre,tlfno]

166 Trabajar con Bases de Datos en PHP borrar.php <HTML> <HEAD> <TITLE>borrar.php</TITLE> </HEAD> <BODY> <div align="center"> <h1>borrar un registro</h1> <br> <? //Conexion con la base mysql_connect("localhost","tu_user","tu_password"); //selección de la base de datos con la que vamos a trabajar mysql_select_db("mi_base_datos"); echo '<FORM METHOD="POST" ACTION="borrar2.php">Nombre<br>'; //Creamos la sentencia SQL y la ejecutamos $ssql="select nombre From clientes Order By nombre"; $result=mysql_query($ssql);

167 Trabajar con Bases de Datos en PHP continuación echo '<select name="nombre">'; //Mostramos los registros en forma de menú desplegable while ($row=mysql_fetch_array($result)) {echo '<option>'.$row["nombre"];} mysql_free_result($result)?></select> <br> <INPUT TYPE="SUBMIT" value="borrar"> </FORM> </div> </BODY> </HTML>

168 Trabajar con Bases de Datos en PHP El siguiente paso es hacer efectiva la operación a partir de la ejecución de la sentencia SQL que construimos a partir de los datos del formulario Es necesario protegerse de llamadas al script php borrar2 que no procedan de formulario, o simplemente que no tengan definidos los campos necesarios en el POST

169 Trabajar con Bases de Datos en PHP borrar2.php <? if(isset($_post['nombre'])) {?> <HTML> <HEAD> <TITLE>borrar2.php</TITLE> </HEAD> <BODY> <? //Conexion con la base mysql_connect("localhost","tu_user","tu_password"); //selección de la base de datos con la que vamos a trabajar mysql_select_db("mi_base_datos"); //Creamos la sentencia SQL y la ejecutamos $nombre = $_POST['nombre']; $ssql="delete From Clientes Where nombre='$nombre'"; mysql_query($ssql);?> <h1><div align="center">registro Borrado</div></h1> <div align="center"><a href="lectura.php">visualizar el contenido de la base</a></div> </BODY> </HTML> <? }?>

170 Trabajar con Bases de Datos en PHP Una vez completada esta última parte del ejemplo, contamos con un sitio web muy básico que permite almacenar clientes y sus teléfonos, modificarlos, borrarlos, etc. PHP permite por tanto encapsular sentencias SQL y así manejar una base de datos Pero, qué ocurre si la sentencia SQL es errónea?

171 Trabajar con Bases de Datos en PHP Vamos a probar el efecto de un error SQL provocando uno en el script denominado insertar.php visto anteriormente insertar.php <HTML> <HEAD> <TITLE>Insertar.php</TITLE> </HEAD> <BODY> <? mysql_connect("localhost","root",""); mysql_select_db("ejemplo"); if (isset($_post['nombre']) && (isset($_post['telefono']))){ $nombre = $_POST['nombre']; $telefono = $_POST['telefono']; mysql_query("insert into clientes (nombre,teléfono) values ('$nombre','$telefono')");?> <h1><div align="center">registro Insertado</div></h1> <? } else {?><h1><div align="center">falta algún campo!!!</div></h1> <?}?> <div align="center"><a href="insertar.html">insertar más registros de clientes</a></div> <div align="center"><a href="lectura.php">visualizar el contenido de la base</a></div> </BODY> </HTML>

172 Trabajar con Bases de Datos en PHP Si con el código anterior realizamos una inserción, todo parece ir bien, pero nuestra BD no cambia El motivo, es que hay un error SQL En concreto, el campo telefono de la base de datos clientes no lleva tilde, y el insert intenta acceder a un campo teléfono inexistente El hecho de que el script no nos informe de nada es inadmisible si queremos manejar páginas web serias Es necesario proteger la sentencia y mostrar el error

173 Trabajar con Bases de Datos en PHP Primera mejora: avisar si algo va mal <HTML> <HEAD> <TITLE>Insertar.php</TITLE> </HEAD> <BODY> <? mysql_connect("localhost","root",""); mysql_select_db("ejemplo"); if (isset($_post['nombre']) && (isset($_post['telefono']))){ $nombre = $_POST['nombre']; $telefono = $_POST['telefono']; if(!mysql_query("insert into clientes (nombre,teléfono) values ('$nombre','$telefono')")) { echo 'Ha habido un error!!!'; }?> <h1><div align="center">registro Insertado</div></h1> <? } else {?><h1><div align="center">falta algún campo!!!</div></h1> <?}?> <div align="center"><a href="insertar.html">insertar más registros de clientes</a></div> <div align="center"><a href="lectura.php">visualizar el contenido de la base</a></div> </BODY> </HTML>

174 Trabajar con Bases de Datos en PHP Se recomienda proteger TODAS las sentencias SQL insertadas entre código PHP No obstante, el error sigue siendo bastante críptico, y no sabemos qué ha ocurrido, sólo dónde se ha producido Para depurar el error, existe una función llamada mysql_error, que recibe como parámetro la conexión con la base de datos que manejamos Esta llamada produce un string que debe ser mostrado explícitamente por la pantalla

175 Trabajar con Bases de Datos en PHP Segunda mejora: depuración de errores SQL <HTML> <HEAD> <TITLE>Insertar.php</TITLE> </HEAD> <BODY> <? $conexion= mysql_connect("localhost","root",""); mysql_select_db("ejemplo"); if (isset($_post['nombre']) && (isset($_post['telefono']))){ $nombre = $_POST['nombre']; $telefono = $_POST['telefono']; if(!mysql_query("insert into clientes (nombre,teléfono) values ('$nombre','$telefono')")) { echo 'Ha habido un error: '. mysql_error($conexion); }?> <h1><div align="center">registro Insertado</div></h1>

176 Trabajar con Bases de Datos en PHP Este mecanismo nos permite comprobar algo mejor qué ha ocurrido En el desarrollo web profesional esta tarea es vital, y se suele complementar con capas de visualización especial

177 Trabajar con Bases de Datos en PHP Tercera mejora, ayudar a visualizar correctamente errores $conexion= mysql_connect("localhost","root",""); mysql_select_db("ejemplo"); if (isset($_post['nombre']) && (isset($_post['telefono']))){ $nombre = $_POST['nombre']; $telefono = $_POST['telefono']; $sentencia = "insert into clientes (nombre,teléfono) values ('$nombre','$telefono')"; if(!mysql_query($sentencia)) { echo "<div style='border: 1px red solid; padding: 10px;'>"; echo "La sentencia: ". $sentencia. " ha provocado el error: "; echo mysql_error($conexion); echo "</div>"; }

178 Trabajar con Bases de Datos en PHP El resultado es mucho más visible y depurable Tarea: Retomar el ejemplo de scripts para el manejo de una agenda de clientes y proteger todas las sentencias SQL facilitando su depuración Para ello, cada sentencia y conexión se guardará en variables Cada sentencia se verificará con un if y si produce error, se extraerá ese error en un div similar al visto anteriormente por salida estándar

179 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

180 Ejercicios de Consolidación Vamos a ver algunos ejemplos de consolidación donde se manejan juntos los distintos aspectos de php vistos hasta ahora En concreto, vamos a realizar las siguientes tareas: Tratar técnicas de paginación de resultados de consultas hechas sobre MySQL Programar un pequeño buscador, en php, para una base de datos Enfrentaros al desarrollo de un sitio web completo, tipo e- commerce, con: o Una base de datos de productos y/o servicios o Un sistema de compra simultánea (tipo carro de la compra) o Búsquedas, paginación de resultados o Gestión de usuarios y contraseñas

181 Paginación de Resultados En muchas ocasiones, cuando se presentan en una página web registros de una base de datos, se deberían mostrar demasiados registros como para colocarlos todos en una única página En estas ocasiones se suelen paginar los resultados en distintas páginas con conjuntos de registros mucho menos numerosos Por ejemplo, podríamos presentar los resultados en páginas de 10 ó 20 elementos, dependiendo de nuestras intenciones y el tipo de datos que se estén presentando Este efecto lo habremos podido observar repetidas veces en los buscadores

182 Paginación de Resultados Vamos a explicar una posibilidad basada en la utilización de una base de datos MySQL y sentencias SQL a las que indicaremos el conjunto de registros que queremos mostrar en cada página SELECT tiene una cláusula llamada LIMIT, con la que podemos indicar los registros a mostrar, por ejemplo, 10 registros empezando por el registro 180: select * from clientes limit 180,10 Como vemos LIMIT tiene dos argumentos, el primero es el registro por el que empezar los resultados y el segundo el número de resultados a recoger en el conjunto de registros resultante Así pues, en este ejercicio de paginación la cláusula LIMIT será la clave para mostrar los registros en grupos del tamaño deseado

183 Paginación de Resultados Lo primero es saber qué página se desea mostrar En principio se mostraría la primera página de resultados, pero si un visitante selecciona con los enlaces de abajo otra página distinta de la primera, habrá que mostrarla también El índice de la página a mostrar, si es que no es la primera vez que se accede, se puede recibir por parámetro en la URL, por cookie (con el peligro que conlleva) o sesión //Limito la busqueda $TAMANO_PAGINA = 10; //examino la página a mostrar y el inicio del registro a mostrar if (!isset($_get["pagina"])) { $inicio = 0; $pagina=1; } else { $inicio = ($_GET["pagina"]- 1) * $TAMANO_PAGINA; }

184 Paginación de Resultados Hemos definido el tamaño de la página Si no se recibió nada, se entiende que la página a mostrar es la primera, luego la variable $inicio, que guarda el primer registro a mostrar (para indicarlo en la sentencia SQL en el apartado LIMIT), será cero Si habíamos recibido algo como página, calculamos el inicio con una simple multiplicación de la página a mostrar por el tamaño de página definido antes Es habitual en estas páginas de resultados informar un poco sobre la cantidad de registros encontrados y los datos de la página que estamos viendo

185 Paginación de Resultados //miramos el nº total de campos que hay en la tabla con esa búsqueda $ssql = "select * from clientes ". $criterio; $rs = mysql_query($ssql,$conn); $num_total_registros = mysql_num_rows($rs); //calculo el total de páginas $total_paginas = ceil($num_total_registros / $TAMANO_PAGINA); //pongo el número de registros total, el tamaño de página y la página que se muestra echo "Número de registros encontrados: ". $num_total_registros. "<br>"; echo "Se muestran páginas de ". $TAMANO_PAGINA. " registros cada una<br>"; echo "Mostrando la página ". $pagina. " de ". $total_paginas. "<p>";

186 Paginación de Resultados

187 Paginación de Resultados Lo primero es hacer una búsqueda en la base de datos por el criterio que se esté utilizando para saber cuantos registros se obtienen en total sin la paginación (luego veremos de donde sale la variable $criterio) A continuación puedo calcular el número total de páginas de resultados que genera la búsqueda La función ceil() redondea números en coma flotante o reales hacia arriba, así pues, devuelve el entero por arriba más próximo Las siguientes líneas, donde se utiliza echo, tienen como objeto mostrar los datos en la página Ahora veremos el código que realiza la búsqueda en la base de datos, extrayendo y mostrando solamente aquellos registros que corresponden con la página a mostrar

188 Paginación de Resultados //construyo la sentencia SQL $ssql = "select * from clientes ". $criterio. " limit ". $inicio. ",". $TAMANO_PAGINA; $rs = mysql_query($ssql); while ($fila = mysql_fetch_object($rs)){ echo $fila->nombre_pais. "<br>"; } //cerramos el conjunto de resultado y la conexión con la base de datos mysql_free_result($rs); mysql_close($conn);

189 Paginación de Resultados Se construye la sentencia SQL para extraer los datos con el criterio, que veremos luego de donde sale, pero que en principio lo podemos tomar como una cadena vacía También se utiliza LIMIT, como ya se indicó: poniendo los valores definidos antes como inicio y tamaño de página El resto es un recorrido típico por un conjunto de registros, en este caso los clientes de nuestra base de datos, donde se van mostrando todos los elementos desde el principio hasta el final Finalizando este recorrido no vamos a realizar ninguna acción más con la base de datos, así que podemos cerrar el resultado de la búsqueda y la conexión con la base de datos Ahora podemos ver el código que muestra en la parte de abajo: los numeros de todas las páginas que genera la búsqueda, para que el visitante pueda seleccionar una página y moverse entre los resultados

190 Paginación de Resultados //mostramos los distintos índices de las páginas, si es que hay varias páginas if ($total_paginas > 1){ for ($i=1;$i<=$total_paginas;$i++){ if ($pagina == $i) //si muestro el índice de la página actual, no coloco enlace echo $pagina. " "; else //si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página echo "<a href='index.php?pagina=". $i. "&criterio=". $txt_criterio. "'>". $i. "</a> "; } }

191 Paginación de Resultados La primera línea comprueba si realmente hay varias páginas de resultados, pues, si no es así no tendría que mostrar nada Si efectivamente hay varias páginas para mostrar se recorren todas y para cada una se muestra el índice El índice a mostrar puede que sea el de la página que se está visualizando en ese momento y en ese caso simplemente pondríamos el número, pero no el enlace para ir a ese documento, pues es en el que estamos En caso de que sea una página de resultados distinta, se muestra un enlace para moverse a dicha página, donde se incluye pasando por parámetro tanto el índice de la página que se desea ver como el criterio de la búsqueda que se estaba realizando Hasta aquí el código imprescindible para la paginación

192 Búsqueda de Resultados Para hacer un ejercicio un poco más completo y poder ofrecer una página de muestra con funcionalidades de búsqueda, vamos a crear la posibilidad de añadir un criterio para encontrar tan sólo elementos relacionados con él Después de todo, los códigos de paginación suelen utilizarse en situaciones en las que se están realizando búsquedas en la base de datos El criterio se podrá definir en una caja de texto y habrá un botón de buscar que llame a la misma página pero pasando el texto con las palabras a buscar en la base de datos

193 Búsqueda de Resultados <form action="index.php" method="get"> Criterio de búsqueda: <input type="text" name="criterio" size="22" maxlength="150"> <input type="submit" value="buscar"> </form> El método por el que pasamos este formulario es GET Usando WHERE se buscan elementos, en este caso clientes, cuyo nombre contenga por algún sitio las letras que se han recibido como texto del criterio. //inicializo el criterio y recibo cualquier cadena que se desee buscar $criterio = ""; if (isset($_get["criterio"])){ $txt_criterio = $_GET["criterio"]; $criterio = " where nombre like '%". $txt_criterio. "%'"; }

194 Búsqueda de Resultados Resultado final 1. Copiar el fichero busqueda.php en cualquier directorio del servidor web 2. Crear una base de datos llamado 'tpv' (si es diferente, deberíais cambiar el código) 3. Cambiar los datos de conexión si son diferentes 4. Inicializar BD CREATE TABLE comercios ( co_id varchar(10) NOT NULL default '', co_nombre varchar(30) NOT NULL default '', co_pais varchar(30) NOT NULL default '', UNIQUE KEY co_id (co_id) ) TYPE=MyISAM;

195 Búsqueda de Resultados INSERT INTO comercios VALUES ('ESGR000002', 'PRUEBA 2', 'ESPAÑA'); INSERT INTO comercios VALUES ('ESGR000001', 'PRUEBA 1', 'ESPAÑA'); INSERT INTO comercios VALUES ('516', 'JUAN PEREZ', 'MEXICO'); INSERT INTO comercios VALUES ('984', 'ANTONIO RODRIGUEZ', 'MEXICO'); INSERT INTO comercios VALUES ('996', 'INDALECIO TRAVIANNI', 'ARGENTINA'); INSERT INTO comercios VALUES ('975', 'ABELARDO SAINZ', 'PERU'); INSERT INTO comercios VALUES ('111', 'JOSE TOLTACA', 'PERU'); INSERT INTO comercios VALUES ('332', 'RAIMUNDO ALONSO', 'ARGENTINA'); INSERT INTO comercios VALUES ('123', 'JUN JUANES', 'BRASIL'); INSERT INTO comercios VALUES ('585', 'JOAO PAMINHIO', 'BRASIL'); INSERT INTO comercios VALUES (' ', 'JOAQUIN DIAZ', 'ESPAÑA');

196 Búsqueda de Resultados Código disponible en:

197 Búsqueda de Resultados Ejercicio a desarrollar Crear un sitio web, tipo e-commerce, para una hipotética Agencia de Viajes El sitio debe ofrecer disintos viajes, alquileres, hoteles, etc. En primer lugar es deseable crear un modelo de datos estable y generar las tablas en MySQL El sitio debe permitir almacenar usuarios y contraseñas para hacer log in La sesión debe mantener el carro de la compra del usuario, y debe ser posible guardar dicho carro en BD Los resultados deben paginarse El sitio debe contener formularios estables: o Se debe verificar el formato de los datos que introduzca el usuario o Se debe ofrecer seguridad frente a ataques

198 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

199 Subir una aplicación web PHP a un servidor Vamos a tratar la puesta en marcha de una aplicación, programada en local, en un servidor de hosting Implica subir todos los archivos PHP y la base de datos a un espacio en el servidor web contratado en un proveedor de alojamiento Puede resultar un tema algo complejo, y a menudo implica varios pasos Subir archivos a un servidor Saber colocar archivos php fuera del directorio de aplicación Subir una base de datos al servidor de internet, ya sea una BD vacía o una con estructura y datos preparados

200 Subir una aplicación web PHP a un servidor Subir archivos a un servidor Nuestro servidor web debe tener un directorio para la publicación de las páginas web Ese sería el lugar donde hay que subir los archivos.php Dependiendo del proveedor con el que trabajemos, el directorio de publicación puede variar Generalmente, cuando contratamos un alojamiento, nos proporcionan una cuenta de FTP con la que conectarnos al servidor web y transferir los archivos de nuestro sitio, además de unos datos para la conexión o nombre del servidor o el usuario y contraseña para el acceso al FTP

201 Subir una aplicación web PHP a un servidor Al conectarnos al servidor con los datos del FTP accederemos a un directorio Este directorio podría ser el de publicación, aunque generalmente suele ser un subdirectorio llamado "HTML" o "docs" o similar, que cuelga del directorio de inicio en nuestra conexión FTP Los archivos se deben subir al directorio de publicación, o a cualquier subdirectorio de este Si tuviésemos un archivo llamado hola.php y nuestro alojamiento se ha contratado para el dominio deberíamos subir ese archivo al directorio de publicación y accederíamos al archivo escribiendo: Si creamos subdirectorios dentro del directorio de publicación podremos acceder a ellos escribiendo el nombre del dominio o URL de nuestro alojamiento Por ejemplo, si creamos un subdirectorio llamado paginas y tenemos dentro un archivo llamado pag1.php, podríamos acceder a él de la siguiente manera.

202 Subir una aplicación web PHP a un servidor Hay otro concepto interesante que deberíamos conocer llegados a este punto, que es el "documento por defecto Éste no es más que el archivo que se envía al navegador si en la URL accedida no se especificaba ningún archivo Suele llamarse index.html o index.php (o index.asp si nuestro servidor soporta programación en ASP) Puede variar de un proveedor a otro

203 Subir una aplicación web PHP a un servidor En algunos casos, colocar archivos fuera del directorio de publicación tiene sentido y utilidad Cualquier cosa que pongamos fuera del directorio de publicación no podrá ser accedida a través del navegador Es decir, si creamos un directorio que se llame funciones_php en el mismo nivel que el directorio de publicación (fuera de éste) no podremos acceder con el explorador a los archivos que coloquemos dentro Esto es así porque la URL de inicio de nuestro alojamiento corresponde con ese directorio y no podemos movernos hacia debajo de ese directorio con las URLs, que son la manera de especificar al navegador los recursos a los que se quiere acceder

204 Trabajar con Bases de Datos en PHP No sería posible salir del directorio de publicación con una URL como esta, por mucho que utilicemos el operador.. Sin embargo, colocar algunos contenidos fuera del directorio de publicación puede ser muy útil Por ejemplo, podríamos colocar allí copias de seguridad de algunos archivos o documentos que simplemente queremos guardar en el servidor para acceder a ellos por FTP Otras veces utilizamos en nuestros programas trozos de código repetidamente, por ejemplo, para abrir y cerrar bases de datos, para mostrar la cabecera de nuestro portal, para comprobar que un escrito en un formulario es correcto, etc Es muy útil separar estos trozos de código en un archivo a parte y llamar a este archivo con las funciones PHP include() o require() Así, si un día modificamos la cabecera de nuestro portal, sólo lo tendremos que modificar en un archivo, o, si cambia la base de datos que utilizamos sólo tendríamos que modificar el archivo que hace la conexión a la base de datos una vez, en lugar de ir cambiándolo en todas las páginas PHP que abrían las bases de datos

205 Trabajar con Bases de Datos en PHP Estos archivos no son páginas independientes, sino trozos Si los ejecutamos por separado no mostrarían ningún resultado válido, incluso podrían dar mensajes de error Por esta razón merece la pena colocarlos en un lugar donde nadie pueda tener acceso: fuera del directorio de publicación Con PHP si que podremos acceder a ese directorio para incluir esos archivos Solamente deberíamos utilizar las funciones PHP include() o require() indicando la ruta para acceder a los archivos. Imaginad una página llamada hola.php en el directorio de publicación y un archivo, abre_base_datos.php, en el directorio funciones_php, que está fuera del directorio de publicación Si quisiéramos acceder desde hola.php al archivo que abre la base de datos lo haríamos así: include("../funciones_php/abre_base_datos.php")

206 Trabajar con Bases de Datos en PHP Conclusión: desde PHP sí que podemos acceder a los archivos que se encuentran fuera del directorio de publicación Cabe señalar que, tanto PHP como el servidor donde trabajemos, pueden tener configuraciones distintas y puede que algún detalle de la programación de nuestras páginas no funcione correctamente Por ejemplo, nuestro PHP puede declarar o no automáticamente las variables que llegan a través de un formulario Si en local si que estaba configurado para hacer esto y en remoto no, deberíamos localizar los lugares donde recogemos las variables y utilizar las variables de entorno correctas

207 Trabajar con Bases de Datos en PHP Nota: el siguiente script calcula el nivel de directorio de los scripts que queremos incluir en la página actual // Hallamos el nivel de directorio en que está ubicada la página 1. Se hace un recuento de los caracteres que contiene el nombre del script actual. - $Chars = count_chars($php_self,1); - 2. Exploramos la tabla de los caracteres devueltos buscando el carácter ('/' Código 47 ) de directorio (carpeta) que devuelve Apache. - foreach ($Chars as $Char=>$nChars){ if ($Char==47) {$n=$nchars;break;} } - 3. Generamos una cadena de n-1 veces con la subcandena "../" que nos da el nivel de directorio en que se encuentra el script. - if ($n==0) $PathString=""; else $PathString=str_pad("",($n-1)*3,"../");

208 Trabajar con Bases de Datos en PHP El segundo paso para subir una aplicación PHP al servidor consiste en colocar la base de datos en él Las BBDD con las que trabaja PHP son muy variadas y se puede utilizar una u otra, por lo que los modos de subir la base de datos varían Nos vamos a centrar en MySQL La base de datos MySQL no se puede subir por FTP, como que se hacía con los archivos del código PHP Vamos a distinguir entre tres casos distintos en los que nos podríamos encontrar en este momento: 1. La BD que pretendemos subir está vacía: Tan sólo hemos creado las tablas, pero no hemos introducido datos en ellas 2. La BD que queremos subir está completa y es una base de datos MySQL 3. La BD está completa pero no es una base de datos MySQL: En este caso estaríamos haciendo una migración de un sistema gestor a otro

209 Trabajar con Bases de Datos en PHP Subida de la BD vacía La opción más interesante es crear otra vez las tablas que tenemos en local en la base de datos remota Para ello tenemos dos posibilidades a) Si tenemos pocas tablas y bastante sencillas: Las podemos crear en remoto con alguna herramienta como PhpMyAdmin o MyCC b) Si tiene muchas tablas y/o muy complicadas: La recomendación sería hacer un backup de la estructura en local y restaurarla en remoto. Esto nos evitará tener que volver a crear todas las tablas y definir todos sus campos y sus tipos Para hacer el backup de la estructura en local podemos utilizar alguna herramienta como PhpMyAdmin, o bien utilizar el comando mysqldump desde línea de comandos

210 Trabajar con Bases de Datos en PHP Lo que tenemos que hacer en este caso es un backup de la estructura de la base de datos, es decir, los "create tables" o sentencias SQL para crear las tablas CREATE TABLE comentario ( id_comentario int(5) unsigned NOT NULL auto_increment, id_articulo int(4) DEFAULT '0' NOT NULL, nombre_comentario varchar(100) DEFAULT 'Nombre no especificado' NOT NULL, _comentario varchar(100) DEFAULT ' sin especificar' NOT NULL, tipo tinyint(1) unsigned DEFAULT '1' NOT NULL, PRIMARY KEY (id_comentario) );

211 Trabajar con Bases de Datos en PHP Para restaurar estas sentencias lo que tenemos que hacer es ejecutar estas sentencias en el servidor MySQL remoto En PhpMyAdmin tenemos un campo para introducir sentencias SQL y también otro campo para seleccionar un archivo de texto con todas las sentencias SQL, para ejecutarlas una detrás de otra

212 Trabajar con Bases de Datos en PHP Con esto, se habrá logrado subir la estructura de la BD al servidor Si la base de datos está llena de información, tenemos que realizar un backup de la BD y restaurarlo en remoto Tendremos que seleccionar la opción que indica que el backup contenga la estructura y los datos Toda la BD se volcará en un fichero de texto con una serie de sentencias SQL para crear las tablas y los insert necesarios para introducir cada uno de los datos Para restaurar la base de datos lo haremos tal como se ha relatado para el caso de que la base de datos estuviera vacía Si tenemos problemas para subir el fichero de backup de la base de datos es posible que en nuestro proveedor de alojamiento nos pueda ayudar a subir el fichero y restaurarlo Si nuestro proveedor no puede ayudarnos, seguramente disponga y nos indique algún mecanismo para realizar la tarea sin lugar a errores

213 Trabajar con Bases de Datos en PHP El último caso en el que nos podemos encontrar a la hora de subir una BD a nuestro proveedor de alojamiento es que la base de datos la tengamos creada en local, pero en un sistema gestor distinto del que vamos a utilizar en remoto En remoto suponemos siempre que vamos a utilizar la base de datos MySQL En local podríamos disponer de una base de datos Access, SQL Server o de otro sistema de base de datos El proceso de la migración puede ser bastante complejo y, como hay tantas bases de datos distintas, es difícil de dar una receta que funcione en todos los casos Campos con fechas, numeraciones, migración de keys, etc

214 Trabajar con Bases de Datos en PHP Recomendaciones para migrar de Access a MySQL MySQL dispone de un driver ODBC para sistemas Windows, que nos permite conectar Access con el propio MySQL y pasar información fácilmente A menudo la idea es instalar MySQL en local y realizar la migración desde Access en local a MySQL en local, para luego hacer un backup de la base de datos local y subirla a remoto, tal y como se ha relatado antes Recomendaciones para migrar desde SQL Server a MySQL Access permite seleccionar una base de datos SQL Server y trabajar desde la propia interfaz de Access La idea es que Access también permite trabajar con MySQL y haciendo un puente entre estos dos sistemas gestores podemos exportar datos de SQL Server a MySQL

215 Trabajar con Bases de Datos en PHP Otras bases de datos u otras técnicas Si la base de datos origen dispone de un driver ODBC no habrá problema para conectarla con Access, de manera similar a como se conecta con MySQL Se podría utilizar Access para exportar los datos, porque desde allí se podrían acceder a los dos sistemas gestores de bases de datos Si no tenemos Access, o la base de datos original no tiene driver ODBC, o bien no nos funciona correctamente el proceso y no sabemos cómo arreglarlo, otra posibilidad es exportar los datos a ficheros de texto, separados por comas Muchas bases de datos tienen herramientas para exportar los datos de las tablas a ficheros de texto, los cuales se pueden luego introducir en nuestro sistema gestor destino (MySQL) con la ayuda de alguna herramienta como PhpMyAdmin Para ello, en la página de propiedades de la tabla encontraremos una opción para hacer el backup de la tabla y para introducir ficheros de texto dentro de una tabla (Insert textfiles into table en inglés)

216 Trabajar con Bases de Datos en PHP Accediendo a ese enlace podremos ver un formulario donde introducir las características del fichero de texto, como el carácter utilizado como separador de campos, o el terminador de líneas, etc., junto con el propio archivo con los datos, y PhpMyAdmin se encargará de todo el trabajo de incluir esos datos en la tabla

217 Trabajar con Bases de Datos en PHP Como se habrá supuesto, es necesario tener creada la tabla en remoto para que podamos introducirle los datos del fichero de texto

218 Trabajar con Bases de Datos en PHP Cambios de un formato de datos a otro Toda la migración tiene que tener en cuenta las maneras que tenga cada base de datos de guardar la información, es decir, del formato de sus tipos de datos Tenemos que contar siempre con la posible necesidad de transformar algunos datos como pueden ser los campos boleanos, fechas, campos memo (texto con longitud indeterminada), etc En algunos casos posiblemente tengamos que realizar algún script que realice los cambios necesarios en los datos Ejemplo: localizar los valores boleanos guardados como true/false y cambiarlos a valores enteros 0/1 (como en MySQL) También las fechas pueden sufrir cambios de formato, mientras que en Access aparecen en castellano (dd/mm/aaaa) en MySQL aparecen en el formato aaaa-mm-dd PHP puede ayudarnos en la tarea de hacer este script

219 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

220 Expresiones Regulares en PHP Las expresiones regulares son una serie de carácteres que forman un patrón, normalmente representativo de otro grupo de carácteres mayor, de tal forma que podemos comparar el patrón con otro conjunto de carácteres para ver las coincidencias Las expresiones regulares estan disponibles en casi cualquier lenguaje de programación Su sintaxis es relativamente uniforme Pero cada lenguaje usa su propio dialecto. <? am // este es nuestro patrón. Si lo comparamos con: am // coincide panorama // coincide ambicion // coincide campamento // coincide mano // no coincide?>

221 Expresiones Regulares en PHP Si sabemos de antemano la cadena exacta a buscar, no es necesario quebrarse con un patrón complicado, podemos usar como patrón la cadena exacta que buscamos Así, si en una lista de nombres buscamos los datos del usuario pepe podemos usar pepe como patrón Pero si además de pepe nos interesa encontrar ocurrencias de pepa y pepito los literales no son suficientes El poder de las expresiones regulares radica precisamente en la flexibilidad de los patrones, que pueden ser confrontados con cualquier palabra o cadena de texto que tenga una estructura conocida De hecho normalmente no es necesario usar funciones de expresiones regulares si vamos a usar patrones literales. Existen otras funciones (las funciones de cadena) que trabajan mas eficaz y rápidamente con literales

222 Expresiones Regulares en PHP Nuestro patrón puede estar formado por un conjunto de caracteres (un grupo de letras, números o signos) o por meta caracteres que representan otros caracteres, o permiten una búsqueda contextual Los meta-caracteres reciben este nombre porque no se representan a ellos mismos, sino que son interpretados de una manera especial He aquí la lista de meta caracteres mas usados. *? + [ ] ( ) { } ^ $ \

223 Expresiones Regulares en PHP Meta caracteres de posicionamiento o anclas Los signos ^ y $ sirven para indicar dónde debe estar situado nuestro patrón dentro de la cadena para considerar que existe una coincidencia Cuando usamos el signo ^ queremos decir que el patrón debe aparecer al principio de la cadena de caracteres comparada Cuando usamos el signo $ estamos indicando que el patrón debe aparecer al final del conjunto de caracteres

224 Expresiones Regulares en PHP <? ^am // nuestro patrón am // coincide cama // no coincide ambidiestro // coincide Pam // no coincide caramba // no coincide am$ am // coincide salam // coincide ambar // no coincide Pam // coincide ^am$ am // coincide salam // no coincide ambar // no coincide?>

225 Expresiones Regulares en PHP Escapando caracteres: Puede suceder que necesitemos incluir en nuestro patrón algún meta carácter como signo literal, es decir, por sí mismo y no por lo que representa Para indicar esta finalidad usaremos un carácter de escape, la barra invertida \ Así, un patrón definido como 12\$ no coincide con una cadena terminada en 12, y sí con 12$ Ejemplo: Patrón A: 100$ Patrón B: 100\$ La hamburguesa cuesta 100$ En el primero no hay coincidencia, porque se interpreta "busca una secuencia consistente en el número 100 al final de la cadena Como regla general, la barra invertida \ convierte en normales caracteres especiales, y hace especiales caracteres normales

226 Expresiones Regulares en PHP El punto. representa cualquier carácter excepto nueva línea Si lo que queremos buscar en la cadena es precisamente un punto, deberemos escaparlo: \. Meta caracteres cuantificadores Los meta caracteres que hemos visto ahora nos informan si nuestro patrón coincide con la cadena a comparar Pero y si queremos comparar con nuestra cadena un patrón que puede estar una o mas veces, o puede no estar? Para esto usamos un tipo especial de meta caracteres: los multiplicadores Estos meta caracteres que se aplican al caracter o grupo de caracteres que les preceden indican en que número deben encontrarse presentes en la cadena para que haya una ocurrencia Por ello se llaman cuantificadores o multiplicadores. Los mas usados son *? +

227 Expresiones Regulares en PHP <? * // coincide si el caracter (o grupo de caracteres) que le // precede esta presente 0 o mas veces // ab* coincide con "a", "ab", "abbb", etc. //ejemplo: cant*a // coincide con canta, cana, cantttta? // coincide si el carácter (o grupo de caracteres) que precede // esta presente 0 o 1 vez // ab? coincide con "a", "ab", no coincide con "abb" // ejemplo: cant?a // coincide con canta y cana d?el // coincide con del y el (ala)?cena // coincide con cena y alacena + // coincide si el carácter (o grupo) que le precede está // presente al menos 1 o mas veces. // ab+ coincide con "ab", "abbb", etc. No coincide con "a" //ejemplo: cant+a // coincide con canta, canttttta, NO coincide con // cana?>

228 Expresiones Regulares en PHP <? {x,y} // coincide si la letra (o grupo) que le precede esta presente // un minimo "x" veces y como máximo "y" veces // "ab{2}" coincide con "abb": exactamente dos ocurrencias de "b" // "ab{2,}" coincide con "abb", "abbbb"... Como mínimo dos // ocurrencias de b, máximo indefinido // "ab{3,5}" coincide con "abbb", "abbbb", o "abbbbb": Como minimo // dos ocurrencias, como máximo 5 a{2,3} // coincide con casaa, casaaa a{2, } // coincide con cualquier palabra que tenga al // menos dos "a" o mas: casaa o casaaaaaa, no con casa a{0,3} // coincide con cualquier palabra que tenga 3 o // menos letras "a". // NOTA: puedes dejar sin especificar el valor máximo. NO // puedes dejar el valor inicial vacío a{5} // exactamente 5 letras "a"?>

229 Expresiones Regulares en PHP Metacaracteres de rango Los corchetes [] incluidos en un patrón permiten especificar el rango de caracteres válidos a comparar Basta que exista cualquiera de ellos para que se de la condición Una cuestión a recordar es que las reglas de sintaxis de las expresiones regulares no se aplican igual dentro de los corchetes Por ejemplo, el metacarácter ^ no sirve aquí de ancla, sino de caracter negador Tampoco es necesario escapar todos los metacaracteres con la barra invertida. Solo será necesario escapar los siguientes metacaracteres: ] \ ^ -

230 Expresiones Regulares en PHP <? [abc] // El patrón coincide con la cadena si en esta hay // cualquiera de estos tres carácteres: a, b, c [a-c] // coincide si existe una letra en el rango ("a", "b" o "c") c[ao]sa // coincide con casa y con cosa [^abc] // El patrón coincide con la cadena si en esta NO hay // ninguno de estos tres carácteres: a, b, c // Nota que el signo ^ aqui tiene un valor excluyente c[^ao]sa // Coincide con cesa, cusa, cisa (etc); no coincide // con casa ni cosa [0-9] // Coincide con una cadena que contenga cualquier // número entre el 0 y el 9 [^0-9] // Coincide con una cadena que NO contenga ningun // número [A-Z] // Coincide con cualquier carácter alfabetico, // en mayúsculas. No incluye numeros. [a-z] // Como el anterior, en minúsculas [a-z] // Cualquier carácter alfabético, mayusculas o minusculas?>

231 Expresiones Regulares en PHP Como los patrones se usan una y otra vez, hay atajos <? // atajo equivale a significado \d [0-9] // numeros de 0 a 9 \D [^0-9] // el contrario de \d \w [0-9A-Za-z] // cualquier numero o letra \W [^0-9A-Za-z] // contrario de \w, un carácter que no // sea letra ni numero \s [ \t\n\r] // espacio en blanco: incluye espacio, // tabulador, nueva linea o retorno \S [^ \t\n\r] // contrario de \s, cualquier carácter // que no sea espacio en blanco

232 Expresiones Regulares en PHP Meta caracteres de alternancia y agrupadores <? (xyz) // coincide con la secuencia exacta xyz x y // coincide si esta presente x ó y (Don Doña) // coincide si precede "Don" o "Doña"?> Los paréntesis sirven no solamente para agrupar secuencias de caracteres, sino también para capturar subpatrones que luego pueden ser devueltos al script (backreferences)

233 Expresiones Regulares en PHP Un ejemplo típico sería una expresión regular cuyo patrón capturase direcciones url válidas y con ellas generase links al vuelo: <? $text = "una de las mejores páginas es $text = ereg_replace(" net org))", "\1", $text); print $text;?>

234 Expresiones Regulares en PHP El anterior ejemplo produciría un enlace usable, donde la url se tomaría de la retro-referencia \0 y la parte visible de la retroreferencia \1 una de las mejores páginas es Fíjate que en el ejemplo anterior usamos dos grupos de paréntesis (anidados), por lo que se producirían dos capturas: La retro-referencia \0 coincide con la coincidencia buscada Para capturarla no es preciso usar paréntesis La retro-referencia \1 coincide en este caso con " y es capturada por el paréntesis (.*\.(com net org)) La retro-referencia \2 coincide con "net" y se corresponde con el paréntesis anidado (com net org) Esta característica de capturar ocurrencias y tenerlas disponibles para retro-referencias consume recursos del sistema Si quieres usar paréntesis en tus expresiones regulares, pero sabes de antemano que no vas a reusar las ocurrencias, y puedes prescindir de la captura, coloca despues del primer parentesis?

235 Expresiones Regulares en PHP Aplicando esto al ejemplo anterior <? text = ereg_replace(" net org))", "<a href=\"\0\">\1</a>", $text);?> Al escribir (?:com net org) el subpatrón entre paréntesis sigue agrupado, pero la coincidencia ya no es capturada Como nota final sobre el tema, PHP puede capturar hasta 99 sub patrones a efectos de retro-referencia, o hasta 200 (en total) si buscamos sub patrones sin capturarlos

236 Expresiones Regulares en PHP Ejemplo práctico Uno de sus usos más típicos es el de validar entradas de datos que los visitantes de una página puedan mandarnos a través de formularios html El ejemplo más corriente es el de una dirección Imaginemos que queremos filtrar las direcciones introducidas por los visitantes, para evitar introducir en la base de datos la típica dirección basura ghghghghghghg Todos sabemos la estructura de una dirección , formada por: o cadena nombreusuario o el o cadena nombredominio Tambien sabemos que nombredominio esta formado por dos subcadenas: o 'nombredomino' o un '. ' o un sufijo 'com', 'net', 'es' o similar Por tanto la solución a nuestro problema es idear una expresión regular que identifique una dirección valida típica, y confrontarla con la cadena (dirección ) pasada por el visitante

237 Expresiones Regulares en PHP La expresión regular sería: <? <? ^ // queremos decir que el primer carácter que buscamos // debe estar al principio de la cadena a comparar. [^@ ] // ese primer signo no debe ser ni el // ni un espacio + // y se repite una o mas // luego buscamos el [^@ ]+ // Seguido de otro signo que no es ni un // espacio y se repite una o mas veces. // Seguido de un. [^@.] // Seguido de un carácter que no sea // ni espacio ni punto +$ // Que se repite una o mas veces y el último esta // al final de la cadena?>

238 Expresiones Regulares en PHP Y para comprobarlo en la práctica, usamos una de las funciones de php relacionadas con las expresiones regulares, ereg() ereg (string pattern, string string) Busca en string las coincidencias con la expresión regular pattern La búsqueda diferencia entre mayúsculas y minúsculas Devuelve un valor verdadero si se encontró alguna coincidencia, o falso in no se encontraron coincidencias u ocurrió algún error

239 Expresiones Regulares en PHP <? if (!isset($_post[' '])) {?> <form action=expresion.php method=post> <strong>tu </strong><br /> <input type=text name=" " value="" size="25" /> <input type=submit name="submit" value="enviar" /> </form> <? } else { if (preg_match("/^[^@ ]+@[^@ ]+.[^@.]+$/", $_POST[' ']) ) { echo "<BR>Esta dirección es correcta: ". $_POST[' ']; } else {echo $_POST[' ']." no es una dirección valida";} }?>

240 Expresiones Regulares en PHP Funciones PHP: PHP tiene dos conjuntos distintos de funciones relacionadas con expresiones regulares, llamadas POSIX y PCRE Las funciones "PCRE" son "PERL Compatible", es decir, similares a las funciones nativas Perl, aunque con ligeras diferencias Son bastante mas poderosas que las funciones POSIX, y correlativamente mas complejas preg_filter Realiza una búsqueda y sustitución de una expresión regular preg_grep Devuelve entradas de matriz que coinciden con el patrón preg_last_error Devuelve el código de error de la última ejecución de expresión regular PCRE

241 Expresiones Regulares en PHP preg_match_all Realiza una comparación global de una expresión regular preg_match Realiza una comparación con una expresión regular preg_quote Escapar caracteres en una expresión regular preg_replace_callback Realiza una búsqueda y sustitución de una expresión regular usando una llamada de retorno preg_replace Realiza una búsqueda y sustitución de una expresión regular preg_split Didive una cadena mediante una expresión regular

242 Expresiones Regulares en PHP Ejercicio: Crear comprobaciones mediante expresiones regulares para validar los datos introducidos en un formulario en los campos o Código Postal o NIF o Teléfono móvil o Prefijo + Teléfono fijo o Fecha de nacimiento según estilo deseado por cada uno o Número de tarjeta de crédito

243 Índice Creación de aplicaciones web simples: paso de variables y memoria de estados Paso de variables por URL Procesar variables de formularios Autollamada de páginas Uso de cookies en PHP Sesiones Aplicaciones integradas con bases de datos Trabajar con bases de datos en PHP Introducir nuevos registros con PHP Sesión y lectura de registros Actualizar un registro Borrado de un registro Ejercicios de consolidación Anexo: Pasos para subir una aplicación web PHP a un servidor Anexo II: Expresiones Regulares en PHP Anexo III: Seguridad en aplicaciones PHP con MySQL

244 Seguridad PHP/MySQL Las aplicaciones PHP suelen encapsular sentencias SQL que se alimentan de campos rellenados por usuarios Estos mecanismos pueden implicar graves problemas de seguridad tanto para el servidor como para la base de datos que emplea Ejemplo: Vamos a añadir echo $sentencia para ver más fácil lo que va a ocurrir Vamos a volver sobre el ejemplo inicial de manejo de bases de datos, concretamente, sobre insertar.php $conexion= mysql_connect("localhost,", ); mysql_select_db("ejemplo"); if (isset($_post['nombre']) && (isset($_post['telefono']))){ $nombre = $_POST['nombre']; $telefono = $_POST['telefono']; $sentencia = "insert into clientes (nombre,teléfono) values ('$nombre','$telefono')"; if(!mysql_query($sentencia)){

245 Seguridad PHP/MySQL Imaginad de nuestro servicio web está funcionando, y que un usuario mal intencionado hace lo siguiente: Nombre Teléfono Hacker '); delete from clientes where 1=1 or username=' datos valiosos

246 Seguridad PHP/MySQL La consulta SQL que se ejecuta es la siguiente: Eso borraría todos los datos de nuestra BD, siempre y cuando lo permita el SGBD MySQL no lo permite en sus últimas versiones, pero no podemos depender de ello Existe una función, llamada mysql_real_escape_string() que nos permite luchar contra estos ataques

247 Seguridad PHP/MySQL Protegiendo la sentencia SQL con mysql_real_escape_string() Protegemos el script del ataque tipo SQL injection if (isset($_post['nombre']) && (isset($_post['telefono']))){ $nombre = $_POST['nombre']; $telefono = $_POST['telefono']; $sentencia = "insert into clientes (nombre,telefono) values ('".$_POST['nombre']."','".$_POST['telefono']."')"; echo "sentencia original: $sentencia <br>"; $nombre_seguro = mysql_real_escape_string($_post['nombre']); $telefono_seguro = mysql_real_escape_string($_post['telefono']); $sentencia_segura = "insert into clientes (nombre,telefono) values ('$nombre_seguro','$telefono_seguro')"; echo "sentencia segura: $sentencia_segura"; if(!mysql_query($sentencia_segura)) {

248 Seguridad PHP/MySQL Resultado para una inserción normal: Resultado para una inserción maliciosa:

249 Seguridad PHP/MySQL De esta forma nuestra base de datos está segura: El SQL injection queda de manifiesto dentro de un campo de la BD

Este tipo de situaciones son solventadas a partir de las variables de sesión.

Este tipo de situaciones son solventadas a partir de las variables de sesión. INDICE 1.- Concepto de Sesión 2.- Variables de Sesión 3.- Iniciando sesiones 4.- Creando variables de sesión 1.- Concepto de Sesión En los programas que hemos visto hasta ahora, hemos utilizado variables

Más detalles

Cookies: qué son y para qué sirven

Cookies: qué son y para qué sirven Cookies: qué son y para qué sirven Desde hace un tiempo las webs nos indican con mensajes que utilizan cookies propias de terceros. Muchos usuarios aceptan el mensaje sin más por el simple hecho de que

Más detalles

Introducción al desarrollo web (idesweb)

Introducción al desarrollo web (idesweb) Introducción al desarrollo web (idesweb) Práctica 8: PHP 2 (cookies y sesiones) 1. Objetivos Conocer el concepto de cookie y sus posibles usos. Aprender a utilizar las cookies con PHP. Conocer el concepto

Más detalles

Manual CMS Mobincube

Manual CMS Mobincube Manual CMS Mobincube CMS Mobincube Qué es? El CMS (Sistema de Gestión de Contenidos) es un completo website que permite la creación y actualización de contenido remoto. De esta forma, una vez creada una

Más detalles

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

AGREGAR COMPONENTES ADICIONALES DE WINDOWS INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución

Más detalles

Índice: Tema 4.3 4.3 Aplicaciones basadas en Sesiones

Índice: Tema 4.3 4.3 Aplicaciones basadas en Sesiones Índice: Tema 4.3 4.3 Aplicaciones basadas en Sesiones 4.3.1 Manejo de Cookies 4.3.2 Manejo de Sesiones 4.3.3 Aplicación basada en sesiones Índice: Tema 4.3 4.3 Aplicaciones basadas en Sesiones 4.3.1 Manejo

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10 CONCEPTOS BASICOS Febrero 2003 Página - 1/10 EL ESCRITORIO DE WINDOWS Se conoce como escritorio la zona habitual de trabajo con windows, cuando iniciamos windows entramos directamente dentro del escritorio,

Más detalles

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La puesta en marcha de WordPress es muy sencilla,

Más detalles

Manual hosting acens

Manual hosting acens Manual hosting acens Contenido Acceso al panel de control de cliente... 3 Asociar un dominio a mi Hosting... 5 Acceso al panel de administración del hosting... 7 INICIO - Visión general del estado de nuestro

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón. 11. RECIBOS. Desde esta opción de Menú vamos a completar el proceso de gestión de los diferentes tributos, generando recibos, informes de situación, impresiones, etc. 11.1. GENERACIÓN DE RECIBOS. Una vez

Más detalles

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS HERRAMIENTA DE APROVISIONAMIENTO... 3 1. QUÉ ES LA HERRAMIENTA DE APROVISIONAMIENTO... 3 HERRAMIENTA

Más detalles

MANUAL SINCRONIZADOR LEKOMMERCE FACTUSOL

MANUAL SINCRONIZADOR LEKOMMERCE FACTUSOL MANUAL SINCRONIZADOR LEKOMMERCE FACTUSOL www.tiendaonlinegratis.es Página 1 Bienvenido! Bienvenido, y gracias por confiar en nosotros para convertir tu empresa de Factusol en una completa y eficiente tienda

Más detalles

Unidad Didáctica 12. La publicación

Unidad Didáctica 12. La publicación Unidad Didáctica 12 La publicación Contenido 1. Desarrollar y explotar 2. Definición del Sitio 3. Alojar nuestra primera página Web 4. Configurar la conexión FTP U.D. 12 La publicación 1. Desarrollar y

Más detalles

5. Composer: Publicar sus páginas en la web

5. Composer: Publicar sus páginas en la web 5. Composer: Publicar sus páginas en la web Si nuestras páginas existen únicamente en el disco duro local, sólo nosotros podremos navegar por ellas, pero nadie más podrá hacerlo. Composer nos permite publicarlas

Más detalles

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

Gestión de Retales WhitePaper Noviembre de 2009

Gestión de Retales WhitePaper Noviembre de 2009 Gestión de Retales WhitePaper Noviembre de 2009 Contenidos 1. Introducción 3 2. Almacén de retales 4 3. Propiedades de los materiales 6 4. Alta de retales 8 5. Utilización de retales en un lote de producción

Más detalles

Instalar y configurar W3 Total Cache

Instalar y configurar W3 Total Cache Instalar y configurar W3 Total Cache en WordPress Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La velocidad de carga de una web influye mucho a la hora de mejorar el

Más detalles

15 CORREO WEB CORREO WEB

15 CORREO WEB CORREO WEB CORREO WEB Anteriormente Hemos visto cómo funciona el correo electrónico, y cómo necesitábamos tener un programa cliente (Outlook Express) para gestionar los mensajes de correo electrónico. Sin embargo,

Más detalles

El e-commerce de Grupo JAB es una herramienta que permite a los clientes del Grupo, realizar un amplio conjunto de servicios de consulta, petición y

El e-commerce de Grupo JAB es una herramienta que permite a los clientes del Grupo, realizar un amplio conjunto de servicios de consulta, petición y El de Grupo JAB es una herramienta que permite a los clientes del Grupo, realizar un amplio conjunto de servicios de consulta, petición y compra en los diversos almacenes del Grupo JAB. En concreto podremos:

Más detalles

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento Qué es AT-Encrypt nos permitirá dotar de contraseña a cualquier documento o carpeta. Este documento o carpeta sólo será legible por aquel que conozca la contraseña El funcionamiento del cifrado (o encriptación)

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER Centros educativos de la Comunidad de Madrid que deseen ser centros de prácticas de los alumnos del Máster en Profesorado de ESO y Bachillerato,

Más detalles

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo

Más detalles

Manual para la utilización de PrestaShop

Manual para la utilización de PrestaShop Manual para la utilización de PrestaShop En este manual mostraremos de forma sencilla y práctica la utilización del Gestor de su Tienda Online mediante Prestashop 1.6, explicaremos todo lo necesario para

Más detalles

19 4.1.1.0 4 04/05/2009

19 4.1.1.0 4 04/05/2009 Soluciones Informáticas Descripción: Como utilizar la Agenda de Visitas Objetivos: Al finalizar este tutorial el usuario será capaz de utilizar la Agenda de Visitas con sus diferentes opciones: asignar

Más detalles

Cómo ingresar a la Intranet?

Cómo ingresar a la Intranet? Tutorial para ingresar a la Intranet 2 Cómo ingresar a la Intranet? Podemos acceder a la nueva Intranet de SSMA Perú de dos diferentes formas: 1. Pueden acceder directamente a la intranet mediante este

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

MANUAL DE AYUDA MODULO TALLAS Y COLORES

MANUAL DE AYUDA MODULO TALLAS Y COLORES MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3

Más detalles

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes.

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes. Tutorial DC++ Para compartir, lo mejor es usar el DC++, que es un programa de intercambio P2P (como el emule) pero optimizado para usarlo en redes locales. Usarlo es muy sencillo y configurarlo también,

Más detalles

Manual de usuario Noticias y Accesos Directos en Facultades ÍNDICE

Manual de usuario Noticias y Accesos Directos en Facultades ÍNDICE Manual de usuario Noticias y Accesos Directos en Facultades ÍNDICE 1. PARA QUÉ SIRVE ESTA APLICACIÓN? 2. QUIÉN PUEDE HACER USO DE ELLA? 3. CÓMO SE UTILIZA? 1. PARA QUE SIRVE ESTA APLICACIÓN? El objeto

Más detalles

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente. PLANTILLAS EN PHP El concepto de plantilla, es un criterio del desarrollo web que propone optimizar la cantidad de documentos HTML que se usan en el desarrollo de un sitio web. A lo largo de la navegación

Más detalles

Curso Internet Básico - Aularagon

Curso Internet Básico - Aularagon Antes de empezar es necesario que tengas claro algunas cosas: para configurar esta cuenta de correo, debes saber que el POP y el SMTP en este caso son mail.aragon.es; esta cuenta de correo hay que solicitarla

Más detalles

Edición de Ofertas Excel Manual de Usuario

Edición de Ofertas Excel Manual de Usuario Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE

Más detalles

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid MANUAL DE EMPRESA Modo de entrar en ÍCARO Para comenzar a subir una oferta de empleo, el acceso es a través del siguiente enlace: http://icaro.uam.es A continuación, aparecerá la página de inicio de la

Más detalles

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS Nuestra empresa es una pequeña editorial que maneja habitualmente su lista de ventas en una hoja de cálculo y desea poder realizar un análisis de sus

Más detalles

Oficina Online. Manual del administrador

Oficina Online. Manual del administrador Oficina Online Manual del administrador 2/31 ÍNDICE El administrador 3 Consola de Administración 3 Administración 6 Usuarios 6 Ordenar listado de usuarios 6 Cambio de clave del Administrador Principal

Más detalles

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE ÍNDICE ACCESO A LA APLICACIÓN... 2 1.- HOMOLOGACIÓN DE CURSOS... 4 1.1.- INICIAR EXPEDIENTE... 4 1.2.- CONSULTA DE EXPEDIENTES... 13 1.3.- RENUNCIA A LA HOMOLOGACIÓN... 16 2.- MECÁNICA DE CURSOS... 19

Más detalles

Traslado de Copias y Presentación de Escritos. Manual de Usuario V.3.1

Traslado de Copias y Presentación de Escritos. Manual de Usuario V.3.1 Traslado de Copias y Presentación de Escritos Manual de Usuario V.3.1 Página: 2 45 INDICE INTRODUCCIÓN... 3 1 ACCESO A LA APLICACIÓN... 3 2 PROCESO DE FIRMA... 4 3 TRASLADOS PENDIENTES DE ACEPTAR POR EL

Más detalles

Manual de usuario de Windows Live Writer

Manual de usuario de Windows Live Writer Manual de usuario de Windows Live Writer Índice 0.- Introducción. 3 1.- Descarga e Instalación. 4 2.- Conexión a un blog. 7 3.- Interfaz de Windows Live Writer. 12 4.- Creación de un Post. 13 5.- Creación

Más detalles

Dirección Alumnos. Av. Benjamín Aráoz 800 - C.P. 4000 - Tucumán - Argentina Tels.: 0054 (0381) 4847355 Fax: 4310171 - Internet: www.filo.unt.edu.

Dirección Alumnos. Av. Benjamín Aráoz 800 - C.P. 4000 - Tucumán - Argentina Tels.: 0054 (0381) 4847355 Fax: 4310171 - Internet: www.filo.unt.edu. Perfil docente Interfaz en general para el perfil docente Inicio de sesión Al ingresar el docente tiene la opción de Ver mensajes que haya enviado la unidad académica a todos los docentes o alguno propio

Más detalles

APRENDE A CREAR UNA PÁGINA WEB CON HTML

APRENDE A CREAR UNA PÁGINA WEB CON HTML APRENDE A CREAR UNA PÁGINA WEB CON HTML Introducción a PHP INTRODUCCIÓN PHP es una lenguaje de programación del lado del servidor. En este curso, lo usaremos para recibir los datos de un formulario, realizar

Más detalles

Herramienta Encuestas. MiAulario

Herramienta Encuestas. MiAulario Herramienta Encuestas MiAulario Introducción... 2 Menú de la herramienta... 3 Panel de encuestas... 3 Mis encuestas... 4 Añadir encuesta... 4 Mis plantillas... 7 Añadir elemento: pregunta o cabecera...

Más detalles

FOROS. Manual de Usuario

FOROS. Manual de Usuario FOROS Manual de Usuario Versión: 1.1 Fecha: Septiembre de 2014 Tabla de Contenidos 1. INTRODUCCIÓN... 4 1.1 Propósito... 4 1.2 Definiciones, acrónimos y abreviaturas... 4 2. ESPECIFICACIONES TÉCNICAS...

Más detalles

MEJORAR EL RENDIMIENTO DEL EXPLORADOR DE INTERNET

MEJORAR EL RENDIMIENTO DEL EXPLORADOR DE INTERNET MEJORAR EL RENDIMIENTO DEL EXPLORADOR DE INTERNET Internet Explorer almacena en archivos temporales las páginas Web y sus archivos relacionados que carga de Internet, lo que significa que la primera vez

Más detalles

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP Práctica 9 GESTIÓN Y UTILIZACIÓN DE REDES LOCALES Curso 2001/2002 TCP/IP: protocolo TCP Introducción Como se ha comentado en la práctica anterior, el protocolo UDP es muy sencillo de implementar, pero

Más detalles

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario 14 CORREO SEGURO. Hay aplicaciones de correo que permiten enviar y recibir correos cifrados y firmados digitalmente utilizando criptografía. Estas operaciones garantizan el intercambio seguro de información,

Más detalles

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII GUIA DISPONIBLE EN: http://preparadorivan.blogspot.com/ - http://preparadormssi.50webs.com/inicio.html La World Wide Web o la Web, es una de las múltiples

Más detalles

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009) JOOMLA! ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009) Es necesario comentar que este manual ha sido diseñado en su mayor parte por comunidadjoomla.org. Este manual es una

Más detalles

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico Acceso al correo electrónico Pasamos ahora a lo que sería usar la cuenta de correo que nos hicimos en la clase anterior. Lo primero que hacemos es entrar en la página web de Yahoo y localizar el icono

Más detalles

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico

Más detalles

Curso de PHP con MySQL Gratis

Curso de PHP con MySQL Gratis Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este

Más detalles

Hostaliawhitepapers. Redirección 301. Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199. www.hostalia.com

Hostaliawhitepapers. Redirección 301. Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199. www.hostalia.com Redirección 301 Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com Redirección 301 Alguna vez te has planteado cambiar tu aplicación web que tienes en marcha a otra dirección

Más detalles

Curso PHP Módulo 1 R-Luis

Curso PHP Módulo 1 R-Luis Lenguaje PHP Introducción Archivos HTML y PHP: Crear un archivo php es tan sencillo como cambiarle la extensión a un archivo html, por ejemplo podemos pasar de index.html a index.php sin ningún inconveniente.

Más detalles

Person IP CRM Manual MOBILE

Person IP CRM Manual MOBILE Manual MOBILE División Informática BuscPerson Telecomunicaciones : Manual MOBILE 0.- Introducción 3 0.1 Configuración de los terminales 3 0.2 Acceso de Usuarios 3 1.- Funcionalidades CRM 5 1.1 Agenda del

Más detalles

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

Servicio Webmail. La fibra no tiene competencia

Servicio Webmail. La fibra no tiene competencia Servicio Webmail La fibra no tiene competencia Contenido 1. INTERFAZ WEBMAIL 3 2. BARRA SUPERIOR 3 3. CORREO 3 3.1. Barra de herramientas de correo 4 3.2. Sección carpetas de correo 9 3.3. Sección de contenidos

Más detalles

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico) MANUAL DE AYUDA SAT Móvil (Movilidad del Servicio Técnico) Fecha última revisión: Abril 2015 INDICE DE CONTENIDOS INTRODUCCION SAT Móvil... 3 CONFIGURACIONES PREVIAS EN GOTELGEST.NET... 4 1. INSTALACIÓN

Más detalles

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora Plataforma e-ducativa Aragonesa Manual de Administración Bitácora ÍNDICE Acceso a la administración de la Bitácora...3 Interfaz Gráfica...3 Publicaciones...4 Cómo Agregar una Publicación...4 Cómo Modificar

Más detalles

Funcionamiento del sistema de autentificación en PHP

Funcionamiento del sistema de autentificación en PHP Sistema de autentificación PHP Cómo realizar un sistema de autentificación en PHP, en el que los usuarios deban introducir nombre y contraseña para que puedan visualizar las páginas de una aplicación con

Más detalles

GENERACIÓN DE ANTICIPOS DE CRÉDITO

GENERACIÓN DE ANTICIPOS DE CRÉDITO GENERACIÓN DE ANTICIPOS DE CRÉDITO 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de anticipos de crédito permite generar fácilmente órdenes para que la Caja anticipe el cobro de créditos

Más detalles

Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape

Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape Introducción y objetivos De modo muy resumido Internet es una red que interconecta redes de ordenadores. Conectándose

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

INSTALACIÓN DE MEDPRO

INSTALACIÓN DE MEDPRO 1 Estimado Cliente: Uno de los objetivos que nos hemos marcado con nuestra nueva plataforma de gestión, es que un cliente pueda instalar MedPro y realizar su puesta en marcha de forma autónoma. Siga paso

Más detalles

Para poder navegar en Internet debes primeramente elegir el navegador que vas a utilizar, que puede ser:

Para poder navegar en Internet debes primeramente elegir el navegador que vas a utilizar, que puede ser: Módulo 2 Herramientas para la búsqueda virtual en Internet Navegadores Web Para establecer conexiones con los servidores electrónicos y obtener la información y los servicios que éstos prestan, el usuario

Más detalles

Sitios remotos. Configurar un Sitio Remoto

Sitios remotos. Configurar un Sitio Remoto Sitios remotos Definir un sitio remoto significa establecer una configuración de modo que Dreamweaver sea capaz de comunicarse directamente con un servidor en Internet (por eso se llama remoto) y así poder

Más detalles

Internet como herramientas de comunicación: El correo electrónico

Internet como herramientas de comunicación: El correo electrónico Internet como herramientas de comunicación: El correo electrónico 1. El correo electrónico Objetivo del tema: Aprender a manejar el correo electrónico y los medios de comunicación existentes en Internet.

Más detalles

G R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo

G R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo INDICE Cómo crear una cuenta en ARQA? 4 Cómo tener un grupo en ARQA? 5 Secciones y funcionalidades de los grupos 6 Muro del Grupo 6 Compartir Textos 8 Compartir Imágenes 9 Compartir videos 10 Compartir

Más detalles

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha 2006-08

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha 2006-08 PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet Revisión 1.1 Fecha 2006-08 Índice 1. Acceder 2. Menú 3. Gestión Básica 3.1 Añadir 3.2 Editar 3.3 Eliminar 3.4 Eliminación de registros

Más detalles

MS ACCESS BÁSICO 6 LOS INFORMES

MS ACCESS BÁSICO 6 LOS INFORMES 2010 MS ACCESS BÁSICO 6 LOS INFORMES 93 LOS INFORMES Los informes son una herramienta de Access para elaborar información, sobre los datos que deseemos, preparada para ser impresa. A partir de una base

Más detalles

GENERACIÓN DE TRANSFERENCIAS

GENERACIÓN DE TRANSFERENCIAS GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base

Más detalles

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático Programa de Almacenamiento y Recuperación de Datos Automático CONSEJERÍA DE EDUCACIÓN Dirección General de Participación e Innovación Educativa Centro de Gestión Avanzado de Centros TIC Fecha: 20/04/10

Más detalles

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007 MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007 Servicio de Informática y Comunicaciones Para poder diseñar un formulario y que éste nos envíe los resultados a nuestro correo electrónico, necesitamos

Más detalles

PRESENTACIÓN DEL PRODUCTO

PRESENTACIÓN DEL PRODUCTO PRESENTACIÓN DEL PRODUCTO esernet, s.l. Sebastián Elcano, 32 Planta 1 Oficina 22 28012 Madrid Teléfono: 91 433 84 38 -- Fax. 91 141 21 89 www.esernet.com -- esernet@esernet.com 1. Introducción 2. Descripción

Más detalles

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio Aplicateca Manual de Usuario: Ilion Factura Electrónica Espíritu de Servicio Índice 1 Introducción... 4 1.1 Qué es Ilion Factura electrónica?... 4 1.2 Requisitos del sistema... 4 1.3 Configuración del

Más detalles

Guía de referencia para mytnt. mytnt. C.I.T Tecnología Aplicada al Cliente cit.es@tnt.com - 902111248

Guía de referencia para mytnt. mytnt. C.I.T Tecnología Aplicada al Cliente cit.es@tnt.com - 902111248 mytnt Índice A mytnt B Acceder a MyTNT por primera vez B.1 Registro en mytnt B.1.1 Registro en mytnt con cuenta TNT B.1.2 Registro en mytnt sin cuenta TNT C Menú principal de MyTNT 1 MODIFICAR CONFIGURACIÓN

Más detalles

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la

Más detalles

Manual de uso de Moodle para alumnos

Manual de uso de Moodle para alumnos Manual de uso de Moodle para alumnos Versión adaptada para Eureka FACULTAD DE PSICOLOGÍA - UNIVERSIDAD DE GRANADA Granada, Septiembre 2011 1. Primeros pasos...3 I. Registro de alumnos...3 II. Olvidó su

Más detalles

Tips Price Surfer Frontend

Tips Price Surfer Frontend Tips Price Surfer Frontend Estimados clientes, a continuación encontrarán pequeños tips, explicaciones y detalles a tener en cuenta cuando estén realizando una búsqueda. Entendemos que leer y comprender

Más detalles

MANUAL DE LA CONFIGURACIÓN Y USO DEL MÓDULO DE ASM PARA PRESTASHOP

MANUAL DE LA CONFIGURACIÓN Y USO DEL MÓDULO DE ASM PARA PRESTASHOP MANUAL DE LA CONFIGURACIÓN Y USO DEL MÓDULO DE ASM PARA PRESTASHOP Contacto Para las dudas con la instalación: Integración de Clientes (iclientes.inf@asmred.es) Para el contacto comercial: 91 327 28 80

Más detalles

Escribiendo el HTML. Un formulario se declara entre estos dos tags:

Escribiendo el HTML. Un formulario se declara entre estos dos tags: Formularios Un formulario HTML sirve como principal punto de interacción con el usuario: mediante ellas, podemos hacer posible la interacción de nuestra página Web para con el usuario que visita nuestro

Más detalles

(Soluciones ADSL e-comercio) GUIA DE USUARIO Versión 2.0

(Soluciones ADSL e-comercio) GUIA DE USUARIO Versión 2.0 GUIA DE USUARIO Versión 2.0 Parte 1 Manual del servicio Crea tu Tienda de Telefónica Net, ver 2.0 1 - INDICE - 1. INTRODUCCION 3 2. COMO CREAR UNA TIENDA 4 2.1 PASO 1: ACCEDA AL SERVICIO CREA TU TIENDA

Más detalles

Sesiones (I) Requisitos de configuración. Iniciando y propagando sesiones. 1 de 5. Qué son las sesiones? Funciones de sesión

Sesiones (I) Requisitos de configuración. Iniciando y propagando sesiones. 1 de 5. Qué son las sesiones? Funciones de sesión 1 de 5 Ver índice Sesiones (I) Qué son las sesiones? Suponemos que habrás estado alguna vez en un hotel y que recuerdas que al inscribirnos como huéspedes nos facilitan una tarjetita identificativa que

Más detalles

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7 MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Índice Pasos previos a la visualización del programa: Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7 Conceptos e información

Más detalles

SERVICIO CREA TU WEB TELEFÓNICA NET. (Manual de usuario)

SERVICIO CREA TU WEB TELEFÓNICA NET. (Manual de usuario) SERVICIO CREA TU WEB TELEFÓNICA NET (Manual de usuario) 1 ÍNDICE 1. INTRODUCCIÓN... 3 2. CÓMO CREAR UNA TIENDA... 4 Paso 1: registro nuevo comerciante... 4 Paso 2: datos básicos web.... 5 Paso 3: diseño

Más detalles

GESTOR DE DESCARGAS. Índice de contenido

GESTOR DE DESCARGAS. Índice de contenido GESTOR DE DESCARGAS Índice de contenido 1. Qué es DocumentosOnLine.net?...2 2. Qué es el Gestor de Descargas?...3 3.Instalación / Configuración...5 4.Descarga de Documentos...9 5.Búsqueda / Consulta de

Más detalles

Portal Del Emisor MANUAL DEL USUARIO. Plataforma de Facturación Electrónica

Portal Del Emisor MANUAL DEL USUARIO. Plataforma de Facturación Electrónica Portal Del Emisor MANUAL DEL USUARIO Plataforma de Facturación Electrónica 1. Índice 1. Índice... 2 2. Descripción General... 3 2.1. Alcance... 3 2.2. Flujo de navegación... 4 2.3. Perfil del Usuario...

Más detalles

MANUAL DE USO DE LA APLICACIÓN

MANUAL DE USO DE LA APLICACIÓN MANUAL DE USO DE LA APLICACIÓN ÍNDICE 1. Acceso a la aplicación 2. Definición de funciones 3. Plantillas 4. Cómo crear una nueva encuesta 5. Cómo enviar una encuesta 6. Cómo copiar una encuesta 7. Cómo

Más detalles

Guía nuevo panel de clientes Hostalia

Guía nuevo panel de clientes Hostalia Guía nuevo panel de clientes Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com 1. Estructura del panel de administración El panel de control presenta un diseño

Más detalles

Sistema Integrado de Control de Presencia Dactilar

Sistema Integrado de Control de Presencia Dactilar Sistema Integrado de Control de Presencia Dactilar Índice Índice... 1 Ventana Principal de la aplicación... 2 Zona de Administración... 7 Mantenimiento de trabajadores... 9 Parámetros... 12 1 Ventana Principal

Más detalles

Instalación y Registro Versiones Educativas 2013

Instalación y Registro Versiones Educativas 2013 Instalación y Registro Versiones Educativas 2013 Octubre 2012 Instalación y Registro Online página 2 Índice Introducción... 4 Instalación Versión Educativa Aula... 6 1. Setup... 6 2. Instalación... 7 3.

Más detalles

Manual de iniciación a

Manual de iniciación a DOCUMENTACIÓN Picasa y otras nubes Manual de iniciación a DROPBOX 1 Últimamente se ha hablado mucho de la nube y de cómo es el futuro de la Web. También se han presentado servicios y aplicaciones que ya

Más detalles

Trey-SAT Pag. 1. Manual de usuario

Trey-SAT Pag. 1. Manual de usuario Trey-SAT Pag. 1 Manual de usuario Trey-SAT Pag. 2 Modulo SAT : Servicio de asistencia técnica TREY-SAT es un potente módulo para el servicio de asistencia técnica, completamente integrado a la Gestión

Más detalles

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS En este manual aprenderemos a introducir un Ticket de Soporte (Incidencia Informática) y ver todo el proceso hasta que se resuelve. Para poder escribir Tickets

Más detalles

GUÍA DE USUARIO DEL CORREO

GUÍA DE USUARIO DEL CORREO REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN DIRECCIÓN GENERAL DE LA OFICINA DE ADMINISTRACIÓN Y SERVICIOS DIVISIÓN DE SOPORTE TÉCNICO Y FORMACIÓN AL USUARIO GUÍA DE

Más detalles

MANUAL COPIAS DE SEGURIDAD

MANUAL COPIAS DE SEGURIDAD MANUAL COPIAS DE SEGURIDAD Índice de contenido Ventajas del nuevo sistema de copia de seguridad...2 Actualización de la configuración...2 Pantalla de configuración...3 Configuración de las rutas...4 Carpeta

Más detalles

Introducción a PHP. * No es necesario declarar previamente las variables.

Introducción a PHP. * No es necesario declarar previamente las variables. Introducción a PHP La programación de sitios web cada día está más orientada al desarrollo de páginas dinámicas y aplicaciones, o sea sitios donde el usuario pueda interactuar con la web. Dentro de los

Más detalles