Publicado el 21 de Junio del 2018
1.880 visualizaciones desde el 21 de Junio del 2018
2,8 MB
30 paginas
Creado hace 14a (12/02/2010)
Desarrollo web con
PHP y MySQL
Ejemplos prácticos
Piero Berni Millet
PID_00155711
CC-BY • PID_00155711
Desarrollo web con PHP y MySQL
Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– a una licencia de Reconocimiento
(BY) v.3.0 España de Creative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéis el
autor y la fuente (FUOC. Fundación para la Universitat Oberta de Catalunya). La licencia completa se puede consultar en
http://creativecommons.org/licenses/by/3.0/es/legalcode.es
CC-BY • PID_00155711
Índice
Desarrollo web con PHP y MySQL
1. Gráfico de barras con PHP y HTML..............................................
2. Web dinámica multilenguaje.........................................................
3. Formulario para enviar los datos a una cuenta Gmail............
4. El formulario anterior con código de seguridad anti
spambots (captcha)............................................................................
5. Geolocalización con GeoIp y Google Maps..................................
5.1. Acceso a la base de datos GeoIP para resolver la IP Address
Look Up de una IP .......................................................................
5.2. Geoposicionar en un mapa de Google la procedencia
geográfica del visitante ...............................................................
5
7
13
21
25
26
27
CC-BY • PID_00155711
5
Desarrollo web con PHP y MySQL
1. Gráfico de barras con PHP y HTML
Combinando PHP con HTML podemos generar fácilmente gráficas estadísticas
de barras para datos porcentuales sin necesidad de recurrir a un plug-in extra
de Flash o a una imagen GIF pregenerada dinámicamente con una librería
específica de PHP.
Vamos a ver cómo se construye un gráfico de barras para una encuesta sobre
navegadores de Internet, valiéndonos simplemente de las propiedades de las
tablas HTML para emular dicho gráfico.
Navegadores
% de votos
Color barra gráfica
MS Internet Explorer
Firefox
Netscape
Opera
40
30
10
20
red
green
blue
black
Programa: encuesta.php
Llamada: http://localhost/encuesta.php
CC-BY • PID_00155711
6
Desarrollo web con PHP y MySQL
CC-BY • PID_00155711
7
Desarrollo web con PHP y MySQL
2. Web dinámica multilenguaje
Combinando PHP con HTML podemos crear sitios web dinámicos multilen-
guaje con un alto grado de productividad. El sitio web de este ejemplo está
pensado para soportar tres o más idiomas: español (es), inglés (en) y catalán
(cat). Los contenidos se encuentran desvinculados de la plantilla web que con-
trola el diseño, la presentación y la navegación, lo que simplifica el manteni-
miento del sitio cuando se modifican o se añaden nuevos temas.
Estructuradelawebmultilenguaje
Elprogramaprincipal(index.php)
Se accede al sitio mediante el script principal index.php. El recorrido por las
diferentes páginas de un idioma determinado se controla con los parámetros
‘pag’ e ‘idm’ que se pasan en la URL.
Por ejemplo:
• http://host/index.php Si no se incluyen los parámetros en la URL se carga
la página principal del sitio en el idioma predeterminado (ver index.php).
CC-BY • PID_00155711
8
Desarrollo web con PHP y MySQL
• http://host/index.php?pag=01&idm=es En este caso, los parámetros indi-
cados cargarán la página de contenido 01 (01_es.html) para el idioma es
(español).
El código del programa principal es el siguiente:
Laplantilla(layer_$idm.html)
La plantilla del sitio se estructura en cuatro secciones:
• Cabecera. Espacio reservado para el título del sitio con su banner. En la
parte inferior izquierda se colocan el enlace de “ir a la página de inicio”,
más los tres enlaces que permiten seleccionar un idioma.
CC-BY • PID_00155711
9
Desarrollo web con PHP y MySQL
• Menúprincipal. La columna de la izquierda está reservada para el menú
de navegación, que se estructura en dos niveles (sección y subsecciones).
Haciendo clic en los enlaces del menú se abren las páginas de contenido
en el espacio central de la plantilla.
• Contenido. Aquí se incrustan dinámicamente los contenidos del sito. Por
ejemplo, los ficheros del sitio en español tienen la siguiente nomenclatura:
0_es.html (página de inicio o de bienvenida), 21_es.html (la página de
contenido del la sección 2.1 del menú 2.
•
Piedepágina. Espacio reservado para los datos de contacto del sitio (di-
rección, correo electrónico).
Puesto que el sitio web soporta tres idiomas, la plantilla deberá triplicarse pa-
ra cada uno de ellos con las nomenclaturas: layer_es.html, layer_en.html, y
layer_cat.html
Incrustarloscontenidosenelcuerpodelaplantilla
El mecanismo que controla las páginas de contenido y las incrusta en la sec-
ción Contenido se basa un pequeño script de PHP que debe residir en esa po-
sición de la plantilla del sito. Este programa comprueba si existe la página de
contenido en el sistema de archivos del servidor web. En caso de no existir,
por ejemplo, el contenido 2.1_es.html, se muestra un mensaje de error.
CC-BY • PID_00155711
10
Desarrollo web con PHP y MySQL
El código completo de la plantilla HTML es el siguiente:
CC-BY • PID_00155711
11
Desarrollo web con PHP y MySQL
CC-BY • PID_00155711
12
Desarrollo web con PHP y MySQL
CC-BY • PID_00155711
13
Desarrollo web con PHP y MySQL
3. Formulario para enviar los datos a una cuenta
Gmail
Generalmente, cuando se rellenan los campos de un formulario HTML y se
envían al servidor mediante un script de PHP, los datos se registran en una
base de datos. En otros casos, lo que se suele hacer es, tras procesarlos desde el
lado del servidor, enviarlos a una cuenta de correo electrónico. Típicamente
para el envío de correo con PHP se utiliza la función mail(), pero esta función
tiene varias limitaciones, por ejemplo, hay que tener una cuenta de usuario
registrada en el servidor que aloja la web y la función mail() no soporta el
envío de adjuntos.
Afortunadamente, los datos recogidos mediante un formulario HTML pueden
ser enviados a su destinatario mediante un servicio de correo externo tipo
Gmail. Para ello, es necesario utilizar una clase de PHP llamada PHPMailer que
facilita el envío de correo, añadiendo funcionalidad en el envío de correos
con adjuntos, en formato HTML y con diferentes codificaciones, soporte para
imágenes embebidas, headers personalizados y además funciona con múltiples
servidores de correo, entre los que se encuentra Gmail.
Para llevar a cabo este ejemplo práctico se necesita tener una cuenta de correo
Gmail y bajarse la clase phpmailer para php5/6 de la página de sus desarro-
lladores.
El código de la aplicación se distribuye en tres ficheros:
•
•
•
form.php. El script de PHP principal que carga el formulario HTML, valida
sus datos y los envía por correo a su destinatario mediante una cuenta
Gmail.
form.html. El archivo con el formulario HTML.
feedback.php. Una sencilla página web con la confirmación de envío y
recepción de los datos.
Lógicadeaplicación:
CC-BY • PID_00155711
14
Desarrollo web con PHP y MySQL
Iniciodelprograma
El programa se arranca desde el scriptform.php. Si no existe una llamada desde
el formulario (si no se ha pulsado el botón “Enviar”), se carga el formulario
vacío (form.htm) por primera vez.
En el ejemplo particular, la validación del formulario tendrá en cuenta las
siguientes reglas:
•
•
•
Todos los campos son de dato obligatorio (no pueden estar vacíos).
El valor de código postal debe ser numérico (desde 00001 a 52999).
El valor del correo electrónico debe ser sintácticamente correcto.
CC-BY • PID_00155711
15
Desarrollo web con PHP y MySQL
Si no se cumple la validación, se devuelve el formulario con la notificación
del error y la memoria de datos.
Si la validación de los datos del formulario es correcta, éstos se envían por
correo mediante la clase phpmailer.
Finalmente, el usuario recibe la confirmación del envío.
Ficheroprincipal(form.php)
CC-BY • PID_00155711
16
Desarrollo web con PHP y MySQL
CC-BY • PID_00155711
17
Desarrollo web con PHP y MySQL
CC-BY • PID_00155711
18
Desarrollo web con PHP y MySQL
FormularioHTML(form.html)
CC-BY • PID_00155711
19
Desarrollo web con PHP y MySQL
Confirmacióndeenvío(feedback.html)
CC-BY • PID_00155711
20
Desarrollo web con PHP y MySQL
CC-BY • PID_00155711
21
Desarrollo web con PHP y MySQL
4. El formulario anterior con código de seguridad anti
spambots (captcha)
Captcha es el acrónimo de Completely Automated Public Turing test to tell Com-
puters and Humans Apart (prueba de Turing pública y automática para diferen-
ciar máquinas y humanos).
Los captchas son utilizados para evitar que robots, también llamados spambots,
puedan utilizar ciertos servicios. Por ejemplo, para que no puedan participar
en encuestas, registrarse para usar cuentas de correo electrónico (o su uso para
envío de correo basura) o, más recientemente, para evitar que correo basura
pueda ser enviado por un robot (el remitente debe pasar el test antes de que
se entregue al destinatario).
La idea básica para crear un captcha es generar primero un texto aleatorio;
luego, basado en este texto, generamos una imagen que se muestra al usua-
rio, y, finalmente, se compara el texto ingresado por el usuario con la palabra
aleatoria generada.
Generarelcaptcha(captcha.php)
El primer paso consiste en crear una imagen con un texto aleatorio mediante el
scriptcaptcha.php, el cual creará automáticamente el texto y salvará su valor
en la variable de sesión $_SESSION[’captcha’].
Lo siguiente es mostrar la imagen generada en el formulario HTML para que el
usuario pueda leerlo e ingresar el texto para ser verificado. Para ello, editamos
el archivo form.html y añadimos al final las siguientes líneas de código.
El formulario HTML con el captcha tendrá el siguiente aspecto:
CC-BY • PID_00155711
22
Desarrollo web con PHP y MySQL
El paso siguiente consiste en
Comentarios de: Desarrollo web con PHP y MySQL (1)