La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Antonio Becerra Terón Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones PHP para bases de datos.

Presentaciones similares


Presentación del tema: "Antonio Becerra Terón Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones PHP para bases de datos."— Transcripción de la presentación:

1 Antonio Becerra Terón abecerra@ual.es Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Lenguajes de Desarrollo. PHP

2 Contenidos 10. Paso de variables entre scripts PHP 11. Formularios en PHP 12. Scripts de autenticación y sesiones 13. Cookies en PHP 14. Gestión de envío de archivos en PHP Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Lenguajes de Desarrollo. PHP

3 Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Lenguajes de Desarrollo. PHP Contenidos 10. Paso de variables entre scripts PHP 11. Formularios en PHP 12. Scripts de autenticación y sesiones 13. Cookies en PHP 14. Gestión de envío de archivos en PHP

4 Paso de variables por URL 10. Paso de variables entre scripts PHP En un sitio Web, las páginas y los scripts utilizados son muy numerosos. Muy a menudo, vamos a necesitar que nuestros distintos scripts estén conectados unos con otros, y, sobretodo, que se sirvan y se pasen variables comunes. Mi enlace Estas variables no tienen el símbolo $ delante Una vez realizado el paso, nuestras variables pertenecen al entorno de la página destino.php Activada/desactivada la opción de configuración register_globals del archivo php.ini

5 Paso de variables por URL 10. Paso de variables entre scripts PHP phporiegenurl.php phporigenurl.php <?PHP $username = "abecerra"; ?> <a href="destino.php?saludo=hola&texto= Esto es una variable texto&username= "> Paso variables saludo y texto a la página destino.php

6 Paso de variables por URL 10. Paso de variables entre scripts PHP destino.php destino.php <? echo "Variable \$saludo: $saludo \n"; echo "Variable \$texto: $texto \n"; echo "Variable \$username: $username \n"; ?> register_globals On en php.ini

7 Paso de variables con $_GET 10. Paso de variables entre scripts PHP destinoget.php destinoget.php <? // Captura de las variables pasadas por la URL $saludo = $_GET['saludo']; $texto = $_GET['texto']; $username = $_GET['username']; echo "Variable \$saludo: $saludo \n"; echo "Variable \$texto: $texto \n"; echo "Variable \$username: $username \n"; ?> register_globals Off en php.ini phporiegenurl.php... <a href="destinoget.php?saludo=hola&texto= Esto es una variable texto&username= ">...

8 Paso de variables con $_GET 10. Paso de variables entre scripts PHP register_globals Off en php.ini destinoget.php destinoget.php <? // Captura de las variables pasadas por la URL $saludo = $_GET['saludo']; $texto = $_GET['texto']; $username = $_GET['username']; echo "Variable \$saludo: $saludo \n"; echo "Variable \$texto: $texto \n"; echo "Variable \$username: $username \n"; ?>

9 Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Lenguajes de Desarrollo. PHP Contenidos 10. Paso de variables entre scripts PHP 11. Formularios en PHP 12. Scripts de autenticación y sesiones 13. Cookies en PHP 14. Gestión de envío de archivos en PHP

10 Procesar variables de formularios en PHP 11. Formularios en PHP Presentar una primera página con el formulario clásico a rellenar Las variables del formularios son recogidas en una segunda página que las procesa script PHP que procesa la información del formulario POST: usuario envía datos GET: usuario recoge datos register_globals Off en php.ini

11 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos">

12 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos">

13 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos">

14 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos">

15 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos"> phpdestino.php phpdestino.php <?PHP $nombre = $_POST['nombre']; $apellidos = $_POST['apellidos']; echo "Variable \$nombre: $nombre \n"; echo "Variable \$apellidos: $apellidos \n" ?>

16 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos"> phpdestino.php phpdestino.php <?PHP $nombre = $_POST['nombre']; $apellidos = $_POST['apellidos']; echo "Variable \$nombre: $nombre \n"; echo "Variable \$apellidos: $apellidos \n" ?>

17 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos"> phpdestino.php phpdestino.php <?PHP $nombre = $_POST['nombre']; $apellidos = $_POST['apellidos']; echo "Variable \$nombre: $nombre \n"; echo "Variable \$apellidos: $apellidos \n" ?>

18 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos"> phpdestino.php phpdestino.php <?PHP $nombre = $_POST['nombre']; $apellidos = $_POST['apellidos']; echo "Variable \$nombre: $nombre \n"; echo "Variable \$apellidos: $apellidos \n" ?>

19 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos"> phpdestino.php phpdestino.php <?PHP $nombre = $_POST['nombre']; $apellidos = $_POST['apellidos']; echo "Variable \$nombre: $nombre \n"; echo "Variable \$apellidos: $apellidos \n" ?>

20 Procesar variables de formularios en PHP 11. Formularios en PHP phpformu1.php phpformu1.php <FORM METHOD="POST" ACTION="phpdestino.php"> Nombre <INPUT TYPE="TEXT" NAME="nombre"> Apellidos <INPUT TYPE="TEXT" NAME="apellidos">

21 Procesar variables de formularios en PHP 11. Formularios en PHP phpdestino.php phpdestino.php <?PHP $nombre = $_POST['nombre']; $apellidos = $_POST['apellidos']; echo "Variable \$nombre: $nombre \n"; echo "Variable \$apellidos: $apellidos \n" ?>

22 Restricción de acceso por edad 11. Formularios en PHP edad.php Restringir por edad Escribe tu edad: edad2.php Restringir por edad <? $edad = $_POST["edad"]; echo "Tu edad: $edad "; if ($edad < 18) { echo "No puedes entrar"; }else{ echo "Bienvenido"; } ?>

23 Restricción de acceso por edad 11. Formularios en PHP

24 Restricción de acceso por edad 11. Formularios en PHP

25 Formulario habitual 11. Formularios en PHP phpformunormal.php Tu nombre <input type="text" name="nombre" size="30" value="antonio becerra"> Tu sistema favorito Linux Unix Macintosh Windows ¿Te gusta el futbol ? <input type="checkbox" name="futbol" value="ON"> ¿Cual es tu sexo? Hombre<input type="radio" value="hombre" checked name="sexo"> Mujer Aficiones <textarea rows="5" name="aficiones" cols="28"> <input type="submit" value="Enviar datos" name="enviar"> <input type="reset" value="Restablecer" name="B2">

26 Formulario habitual 11. Formularios en PHP

27 Formulario habitual 11. Formularios en PHP mis_datos.php <?PHP $enviar = $_POST['enviar']; $nombre = $_POST['nombre']; $sexo = $_POST['sexo']; $edad = $_POST['edad']; $sistema = $_POST['sistema']; $futbol = $_POST['futbol']; $aficiones = $_POST['aficiones']; if ($enviar) { echo "Hola ". $nombre. " que tal estás \n"; echo "Eres ". $sexo. " \n"; echo "Tienes ". $edad. " \n"; echo "Tu sistema favorito es ". $sistema. " \n"; if ($futbol) { echo "Te gusta el futbol \n"; } else { echo "NO te gusta el futbol \n"; } if ($aficiones != "") { echo "Tus aficiones son: \n"; echo nl2br($aficiones); } else { echo "NO tienes aficiones \n"; } echo " "; echo “ VOLVER AL FORMULARIO " ?>

28 Formulario habitual 11. Formularios en PHP

29 Formulario más complejo 11. Formularios en PHP phpformucomplex.php <?php if (isset($_POST['Accion'])) { print ' '; print_r($_POST); echo " Por favor, intentálo de nuevo "; print ' '; } else { ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> Nombre: <input type="text" name="personal[nombre]"> Email: <input type="text" name="personal[email]"> Cerveza: Warthog Guinness Stuttgarter Schwabenbräu <?PHP } ?>

30 Formulario más complejo 11. Formularios en PHP

31 Ejercicio de Formulario 11. Formularios en PHP

32 Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Lenguajes de Desarrollo. PHP Contenidos 10. Paso de variables entre scripts PHP 11. Formularios en PHP 12. Scripts de autenticación y sesiones 13. Cookies en PHP 14. Gestión de envío de archivos en PHP

33 Scripts de autenticación 12. Scripts de autenticación y sesiones en PHP Autenticación basada en contraseñas phpinicio_sesion.php Inicio de sesión <FORM name="form1" method="POST" action="phpautenticacion.php"> Introduzca un nombre de usuario y una contraseña Nombre de usuario: Contraseña

34 Scripts de autenticación 12. Scripts de autenticación y sesiones en PHP

35 Scripts de autenticación 12. Scripts de autenticación y sesiones en PHP phpautenticacion.php Página de autenticación <?PHP $username = $_POST['username']; $password = $_POST['password']; if (empty($password)) { die("No se ha introducido la contraseña"); } if (strlen($password) < 5) { die("La contraseña introducida es demasiado corta"); } if (!(strcmp($password,"antonio"))) { echo "Bienvenido a su página de inicio ". " ". $username. " "; } else { die("No ha introducido la contraseña correcta"); } ?>

36 Scripts de autenticación 12. Scripts de autenticación y sesiones en PHP

37 Autenticación HTTP 12. Scripts de autenticación y sesiones en PHP Sólo disponible cuando PHP se ejecuta como módulo de Apache Función header() Autenticación controlada por variables predefinidas PHP $_SERVER[‘PHP_AUTH_USER’] $_SERVER[‘PHP_AUTH_PW’] $_SERVER[‘AUTH_TYPE’]

38 Autenticación HTTP 12. Scripts de autenticación y sesiones en PHP php-autenticacion.php <?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="Acceso a Zona Restringida"'); header('HTTP/1.0 401 Unauthorized'); echo ' Autorización Requerida '; exit; } else { echo " Hola ". $_SERVER['PHP_AUTH_USER']. ". "; echo " Has introducido ". $_SERVER['PHP_AUTH_PW']. " como contraseña. "; } ?>

39 Autenticación HTTP 12. Scripts de autenticación y sesiones en PHP

40 Autenticación HTTP 12. Scripts de autenticación y sesiones en PHP Ha conseguido el acceso a la zona restringida de php-autenticacion-abecerra.php <?php if (($_SERVER['PHP_AUTH_USER']!="abecerra") || ($_SERVER['PHP_AUTH_PW']!="123")) { header('WWW-Authenticate: Basic realm="Acceso restringido"'); header('HTTP/1.0 401 Unauthorized'); echo ' Authorization Required. '; exit; } ?> Ejemplo de Autenticación HTTP con PHP

41 Autenticación HTTP 12. Scripts de autenticación y sesiones en PHP

42 Control y manejo de sesiones 12. Scripts de autenticación y sesiones en PHP Sesión = intervalo de tiempo empleado por un usuario en recorrer nuestras páginas, hasta que: abandona nuestro sitio, deja de actuar sobre él durante un tiempo prolongado, cierra el navegador PHP nos permite almacenar variables de sesión que, una vez definidas, podrán ser utilizadas durante la actividad del usuario por cualquiera de los scripts de nuestro sitio Web Hemos utilizado variables que sólo existían en el script ejecutado. ¿Cuál es el problema? Cargamos otra página distinta y los valores de estas variables se pierden a menos que pasemos estos valores por la URL, o en un formulario para su posterior explotación

43 Funciones para control de sesiones 12. Scripts de autenticación y sesiones en PHP Inicio y registro de la sesión bool session_start ( void ) bool session_register ( mixed nombre [, mixed...]) register_globals On/Off en php.ini register_globals On en php.ini $_SESSION[‘nombrevarsesion’ ] = valor register_globals Off en php.ini Idetificación de sesión string session_id ( [string id]) register_globals On/Off en php.ini

44 Funciones para control de sesiones 12. Scripts de autenticación y sesiones en PHP Asignación de nombre a la sesión string session_name ( [string nombre]) register_globals On/Off en php.ini <?php // Cambiar el nombre de la sesión a WebsiteID $nombre_anterior = session_name("WebsiteID"); echo "El anterior nombre de la sesión era $nombre_anterior "; echo "Mientras que el nuevo es ". session_name(); ?>

45 Funciones para control de sesiones 12. Scripts de autenticación y sesiones en PHP Comprobación de registro de sesión bool session_is_registered ( string nombre ) register_globals On en php.ini if (isset($_SESSION[‘nombrevarsesion’ ])) register_globals Off en php.ini Borrado de la sesión bool session_destroy ( void ) register_globals On/Off en php.ini

46 Funciones para control de sesiones 12. Scripts de autenticación y sesiones en PHP Eliminar variables de sesión void session_unset ( void ) register_globals On en php.ini unset($_SESSION[‘nombresvarsesion’ ]) register_globals Off en php.ini

47 Ejemplos de control de sesiones 12. Scripts de autenticación y sesiones en PHP phpabecerra.php <?php session_name("abecerra"); session_start(); if (isset($_SESSION['abecerra'])) { // La sesión abecerra está registrada // (i.e. username) $_SESSION['abecerra']++; // No necesito utilizar la función // session_register() echo "Ha visitado esta página ". $_SESSION['abecerra']. " Gracias por su visita"; } else { $_SESSION['abecerra'] = 0; // Registro la sesion como abecerra (i.e. username) echo " Bienvenido! Es la primera vez que visita esta página. "; } ?> Modificando una variable de sesión con $_SESSION

48 Ejemplos de control de sesiones 12. Scripts de autenticación y sesiones en PHP

49 Ejemplos de control de sesiones 12. Scripts de autenticación y sesiones en PHP phpunset.php <?php session_name("abecerra"); session_start(); unset($_SESSION['abecerra']); echo "Acabo de eliminar la variable de sesión ". session_name()." "; ?>

50 Ejemplo de control de autenticación 12. Scripts de autenticación y sesiones en PHP phplogin.php phpsesion.php miinicio.php Proceso de autenticación Definir el entorno de sesión Página de inicio de usuario No inicio de sesión mipagina2.php Segunda página de inicio de usuario No inicio de sesión logout.php Destruir el entorno de la sesión Presentar ejemplo por pantalla

51 Ejemplo de control de autenticación 12. Scripts de autenticación y sesiones en PHP phplogin.php Inicio de sesión <FORM name="form1" method="POST" action="phpsesion.php"> Introduzca un nombre de usuario y una contraseña Nombre de usuario: Contraseña

52 Ejemplo de control de autenticación 12. Scripts de autenticación y sesiones en PHP phpsesion.php <?PHP // Obteniendo las variables externas // del inicio de sesion $username = $_POST['username']; $password = $_POST['password']; // Definición del entorno de sesion session_start(); $_SESSION['username']=$username; // Autenticando la contraseña if (empty($password)) { unset($_SESSION['username']); die("No se ha introducido la contraseña. Vuelva a intentarlo"); } if (strlen($password) < 5) { unset($_SESSION['username']); die("La contraseña introducida es demasiado corta. Vuelva a intentarlo"); } // Enviando a la página de inicio del usuario $url = "Location:miinicio.php"; header($url); ?>

53 Ejemplo de control de autenticación 12. Scripts de autenticación y sesiones en PHP miinicio.php <?PHP // Iniciar la sesión session_start(); // Obtener el entorno de la sesión y comprobar // que esté definido. if (!isset($_SESSION['username'])) { session_destroy(); die ("Por favor, inicie, primero, la sesión"); } ?> Mi página de inicio <TABLE width="330" border="10" align="center" cellpadding="5" cellspacing="2"> Bienvenido a la página de inicio de <?PHP echo $_SESSION['username'];?>... ¡¡ Mi Página de Inicio !!... Página 2... Cerrar la sesión

54 Ejemplo de control de autenticación 12. Scripts de autenticación y sesiones en PHP mipagina2.php <?PHP // Iniciar la sesión session_start(); // Obtener el entorno de la sesión y // comprobar que esté definido. if (!isset($_SESSION['username'])) { session_destroy(); die ("Por favor, inicie, primero, la sesión"); } ?> Mi página 2 <TABLE width="330" border="10" align="center" cellpadding="5" cellspacing="2"> Bienvenido a la zona privada de... ¡¡ Mi Página 2 !!... Página de Inicio de... Cerrar la sesión

55 Ejemplo de control de autenticación 12. Scripts de autenticación y sesiones en PHP logout.php <?PHP // Iniciar la sesión session_start(); // Obtener el entorno de la sesión y // comprobar que esté definido if (isset($_SESSION['username'])) { // Caso de que la sesión esté definida unset($_SESSION['username']); session_destroy(); $url = "Location:phplogin.php"; header($url); } else { die("Sólo los usuarios registrados pueden cerrar la sesión. Inicie primero la sesión"); } ?>

56 Ejercicio de carrito de la compra 12. Scripts de autenticación y sesiones en PHP

57 Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Lenguajes de Desarrollo. PHP Contenidos 10. Paso de variables entre scripts PHP 11. Formularios en PHP 12. Scripts de autenticación y sesiones 13. Cookies en PHP 14. Gestión de envío de archivos en PHP

58 Control y manejo de cookies 13. Cookies en PHP Ingredientes de una cookie Ingredientes de una cookie : nombre valor fecha de caducidad dominio desde el que se puede leer la cookie ruta dentro del servidor seguridad Limitaciones de las cookies Limitaciones de las cookies : 300 cookies en total 4KBytes por cookie 20 cookies por servidor o dominio Pequeños archivos de texto que contienen información para identificar al cliente y personalizar su navegación

59 Creación de cookies bool setcookie ( string nombre, string valor, int expirar, string ruta, string dominio, bool segura) Llamadas a las cookies antes que cualquier salida cabeceras http – antes que y cabeceras http – antes que y 13. Cookies en PHP Ejemplos de cookies <? setcookie("saludo"); ?> <? setcookie("saludo", "hola"); ?> <? // Esta cookie dura una hora. 1 hora = 3600 segundos setcookie("visitas", "1", time()+3600); ?>

60 13. Cookies en PHP Ejemplos de cookies <? // Esta cookie dura un año setcookie("visitas", "1", time()+60*60*24*365); ?> php-setcookie.php <? $valor = "algo desde algun lugar"; setcookie("cookiedeprueba",$valor, time() + 3600); /* expira en una hora */ ?>

61 Lectura de cookies $_COOKIE[‘nombre_cookie’] 13. Cookies en PHP Ejemplos de cookies php-leercookie.php <? // Imprime una cookie echo $_COOKIE['cookiedeprueba']. " "; // Otra forma de depurar las cookies echo " "; print_r($_COOKIE); echo " "; ?>

62 Eliminación de cookies Crear la cookie con valor vacío y tiempo de vida pasado 13. Cookies en PHP Ejemplos de cookies php-borrarcookie.php <? setcookie("cookiedeprueba","", time() - 3600); /* expiró hace una hora */ echo "Acabo de eliminar la cookie cookiedeprueba"; ?>

63 Ejemplo interesante de cookies (restricción de acceso) 13. Cookies en PHP php-accesocookie.php <?php if (!isset($_COOKIE['intentos'])) $intentos = 1; else $intentos = $_COOKIE['intentos'] + 1; setcookie('intentos',$intentos,time() + 60); if ($intentos <= 3) { echo " Eres el intento número: ". $intentos. " "; echo "Por tanto, puedes pasar "; } else echo " Prueba un poco mas tarde, crack "; ?> Un minuto más tarde

64 Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Contenidos 10. Paso de variables entre scripts PHP 11. Formularios en PHP 12. Scripts de autenticación y sesiones 13. Cookies en PHP 14. Gestión de envío de archivos en PHP Lenguajes de Desarrollo. PHP

65 14. Gestión de archivos en PHP php-file.php Ejemplo de envio de archivos en PHP <form enctype="multipart/form-data" action="php-upload.php" method="post"> Enviando este archivo:

66 14. Gestión de archivos en PHP Control de upload $_FILES [‘archivousuario’][‘name’] $_FILES [‘archivousuario’][‘type’] $_FILES [‘archivousuario’][‘size’] $_FILES [‘archivousuario’][‘tmp_name’] $_FILES [‘archivousuario’][‘error’] bool is_uploaded_file ($_FILES [‘archivousuario’][‘tmp_name’]) Funciones de gestión de archivos bool move_uploaded_file (nombre_archivo_servidor, destino)

67 14. Gestión de archivos en PHP Control de upload php-upload.php Ejemplo de envio de archivos en PHP <?php if (is_uploaded_file($_FILES['archivousuario']['tmp_name'])) { echo "He recibido el archivo: ". $_FILES['archivousuario']['name']. " "; echo "Su tamaño es de: ". $_FILES['archivousuario']['size']. " "; echo "Su nombre temporal en el servidor es: “. $_FILES['archivousuario']['tmp_name']. " "; $nombre_archivo = "/temp/uploads/". $_FILES['archivousuario']['name']; move_uploaded_file($_FILES['archivousuario']['tmp_name'], $nombre_archivo); }

68 14. Gestión de archivos en PHP Control de upload php-upload.php else { echo "Possible ataque de carga de archivo. Nombre Archivo: ". $_FILES['archivousuario']['name']. " "; if ($_FILES['archivousuario']['error']==UPLOAD_ERR_INI_SIZE) echo "El tamaño excede lo especificado en el archivo php.ini"; if ($_FILES['archivousuario']['error']== UPLOAD_ERR_FORM_SIZE) echo "El tamaño excede lo especificado para este caso"; if ($_FILES['archivousuario']['error']==UPLOAD_ERR_PARTIAL) echo "El tamaño no ha subido completamente"; } ?>

69 14. Gestión de archivos en PHP Control de upload

70 14. Gestión de archivos en PHP Ejercicio de envío múltiple de archivos

71 Antonio Becerra Terón abecerra@ual.es Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Lenguajes de Desarrollo. PHP


Descargar ppt "Antonio Becerra Terón Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones PHP para bases de datos."

Presentaciones similares


Anuncios Google