
Recibir un email cuando tengamos disponibilidadPHP y MySQL son conocidas tecnologías de código abierto que resultan muy útiles para diseñar de forma rápida y eficaz aplicaciones Web dirigidas a bases de datos. PHP es un potente lenguaje de secuencia de comandos diseñado específicamente para permitir a los programadores crear aplicaciones Web con distintas prestaciones de forma rápida. MySQL es una base de datos rápida y fiable que se integra a la perfección con PHP y que resulta muy adecuada para aplicaciones dinámicas basadas en Internet.
En este libro veremos cómo utilizar estas herramientas de forma conjunta para obtener aplicaciones Web eficaces e interactivas, desde los formularios de pedidos más sencillos hasta los sitios de comercio electrónico más complejos y seguros. Se describen los fundamentos del lenguaje PHP, se explica cómo configurar y trabajar con una base de datos MySQL, y aprenderá a utilizar PHP para interactuar con la base de datos y el servidor.
Este manual tan práctico y sencillo incluye numerosos ejemplos de tareas habituales como la autenticación de usuarios, la construcción de un carro de la compra, la generación dinámica de documentos PDF e imágenes, el envío y gestión de correo electrónico, la comunicación entre usuarios, la administración de contenidos y la conexión a servicios Web por medio de XML. Se abordan aspectos relacionados con el comercio electrónico y la seguridad mientras desarrollamos un sitio Web real y le mostraremos cómo implementarlos en PHP y MySQL.
Incluye CD-ROM con las versiones completas de PHP, MySQL, Apache, varias bibliotecas gráficas, y los archivos que contienen los listados de código del libro.
Introducción
Razones para leer este libro
Objetivos que puede alcanzar con este libro
Concepto de PHP
Novedades de la versión 4.3 de PHP
Concepto de MySQL
Razones para utilizar PHP y MySQL
Alguna de las cualidades de PHP
Rendimiento
Integración de base de datos
Bibliotecas incorporadas
Coste
Aprendizaje de PHP
Portabilidad
Código fuente
Algunas de las ventajas de MySQL
Rendimiento
Bajo coste
Facilidad de uso
Portabilidad
Código fuente
Cómo está organizado este libro
Finalmente
Parte I. Uso de PHP
1. Curso acelerado de PHP
Uso de PHP
Aplicación de ejemplo: Bob's Auto Parts
El formulario de pedidos
Procesamiento del formulario
Cómo incrustar PHP en HTML
Estilos de etiquetas PHP
Instrucciones de PHP
Espacios en blanco
Comentarios
Cómo agregar contenido dinámico
Llamada de funciones
Función date()
Cómo acceder a las variables de formulario
Variables de formulario
Concatenación de cadenas
Literales y variables
Identificadores
Variables declaradas por el usuario
Asignación de valores a variables
Tipos de variables
Tipos de datos de PHP
Control de tipos
Conversión de tipos
Variables de tipo variable
Constantes
Ámbito de variables
Operadores
Operadores aritméticos
Operadores de cadena
Operadores de asignación
Devolución de valores de asignación
Combinación de operadores de asignación
Incremento y decremento previo y posterior
Referencias
Operadores de comparación
El operador iguales
Otros operadores de comparación
Operadores lógicos
Operadores bit a bit
Otros operadores
Operador ternario
Operador de supresión de error
Operador de ejecución
Uso de operadores: calcular los totales de los formularios
Precedencia y asociatividad: evaluación de expresiones
Funciones de variables
Cómo probar y establecer tipos de variables
Cómo probar el estado de las variables
Reinterpretación de variables
Estructuras de control
Toma de decisiones con estructuras condicionales
Las instrucciones if
Bloques de código
Instrucciones else
Instrucciones elseif
Instrucción switch
Comparación de condiciones diferentes
Iteración: repetición de acciones
Bucles while
Los bucles for y foreach
Bucles do...while
Cómo salir de una estructura de control o una secuencia de comandos
Siguiente paso: guardar el pedido del cliente
2. Almacenamiento y recuperación de datos
Cómo guardar datos para su lectura posterior
Almacenamiento y recuperación de los pedidos de Bob
Introducción al procesamiento de archivos
Cómo abrir un archivo
Modos de archivo
Uso de fopen() para abrir un archivo
Cómo abrir archivos a través de FTP o HTTP
Problemas al abrir el archivo
Cómo escribir en un archivo
Parámetros de fwrite()
Formatos de archivo
Cómo cerrar un archivo
Lectura desde un archivo
Apertura de un archivo para su lectura: fopen()
Cómo saber cuándo parar: feof()
Cómo leer línea a línea: fgets(), fgetss() y fgetcsv()
Lectura de todo el archivo: readfile(), fpassthru(), file()
Lectura de un carácter: fget()+
Lectura de una longitud arbitraria de bytes: fread()
Otras funciones de archivo útiles
Comprobación de la existencia de un archivo: file_exists()
Cómo averiguar el tamaño de un archivo: filesize()
Eliminación de un archivo: unlink()
Navegación dentro de un archivo: rewind(), fseek() y ftell()
Bloqueo de archivos
La opción más acertada: los sistemas de administración de basede datos
Problemas con el uso de archivos planos
Cómo resolver estos problemas
Lecturas adicionales
A continuación
3. Uso de matrices
¿Qué es una matriz?
Matrices indexadas numéricamente
Inicialización de matrices indexadas numéricamente
Acceso a los contenidos de matrices
Uso de bucles para acceder a la matriz
Matrices asociativas
Inicialización de una matriz asociativa
Cómo acceder a elementos de matriz
Uso de bucles con matrices asociativas
Matrices multidimensionales
Cómo ordenar matrices
Uso de sort()
Uso de asort() y ksort() para ordenar matrices asociativas
Inversión del orden
Ordenación de matrices multidimensionales
Ordenaciones definidas por el usuario
Ordenaciones de usuario inversas
Reordenación de matrices
Uso de shuffle()
Uso de array_reverse()
Carga de matrices desde archivos
Otras manipulaciones de cadenas
Navegación dentro de una matriz con each(), current(), reset(),end(), next(), pos(), and prev()
Aplicación de cualquier función a cada elemento de una matriz: array_walk()
Cómo contar elementos de una matriz: count(), sizeof(), and array_count_values()
Conversión de matrices en variables escalares: extract()
Lecturas adicionales
A continuación
4. Manipulación de cadenas y expresiones regulares
Aplicación de ejemplo: Smart Form Mail
Aplicación de formato a cadenas
Limpieza de cadenas: chop(), ltrim() y trim()
Aplicación de formato a cadenas para presentaciones
Uso de formato HTML: la función nl2br()
Aplicación de formato a una cadena para su impresión
Cambio de mayúsculas y minúsculas en una cadena
Aplicación de formato a las cadenas para su almacenamiento:AddSlashes() y StripSlashes()
Cómo combinar y dividir cadenas con funciones de cadena
Uso de explode(), implode() y join()
Uso de strtok()
Uso de substr()
Comparación de cadenas
Ordenación de cadenas:strcmp(),strcasecmp() y strnatcmp()
Comprobación de la longitud de una cadena con strlen()
Cómo buscar subcadenas y reemplazarlas con funciones de cadena
Búsqueda de cadenas en cadenas: strstr(), strchr(), strrchr(), stristr()
Búsqueda de la posición de una subcadena: strpos(), strrpos()
Sustitución de subcadenas: str_replace(), substr_replace()
Introducción a las expresiones regulares
Los fundamentos
Conjuntos y clases de caracteres
Repetición
Subexpresiones
Recuento de subexpresiones
Anclajes al principio o al final de una cadena
Bifurcación
Cómo buscar coincidencias de caracteres especiales
Resumen de los caracteres especiales
Uso de estos elementos en Smart Form
Búsqueda de subcadenas con expresiones regulares
Sustitución de cadenas con expresiones regulares
División de cadenas con expresiones regulares
Comparación de funciones de cadenas y funcionesde expresiones regulares
Lecturas adicionales
A continuación
5. Reutilización de código y creación de funciones
¿Por qué reutilizar código?
Costes
Legibilidad
Uniformidad
Uso de require() e include()
Uso de require()
Extensiones de nombre de archivo y require()
Etiquetas de PHP y require()
Uso de require() para plantillas de sitios Web
Uso de auto_prepend_file y auto_append_file
Uso de include()
Uso de las funciones de PHP
Llamada de funciones
Cómo llamar a una función no definida
Funciones y el uso de mayúsculas y minúsculas
¿Por qué debería crear funciones propias?
Estructura básica de una función
Designación de funciones
Parámetros
Ámbito
Llamadas por referencia frente a llamadas por valor
Final de las funciones
Cómo devolver valores desde funciones
Bloques de código
Recursión
Lecturas adicionales
A continuación
6. PHP orientado a objetos
Conceptos orientados a objetos
Clases y objetos
Polimorfismo
Herencia
Creación de clases, atributos y operaciones en PHP
Estructura de una clase
Constructores
Instanciación
Uso de los atributos de clase
Llamadas a operaciones de clase
Implementación de la herencia en PHP
Reemplazamientos
Herencia múltiple
Diseño de clases
Escritura del código para nuestra clase
A continuación
Parte II. Uso de MySQL
7. Diseño de la base de datos Web
Conceptos de base de datos relacionales
Tablas
Columnas
Filas
Valores
Claves
Esquemas
Relaciones
Cómo diseñar nuestra base de datos Web
Piense en los objetos del mundo real que está modelando
Cómo evitar el almacenamiento de datos redundantes
Uso de valores de columna únicos
Selección de claves lógicas
Reflexiones sobre las preguntas que desea formular a la base de datos
Evite diseños con varios atributos vacíos
Resumen de los tipos de tablas
Arquitectura de base de datos Web
Arquitectura
Lecturas adicionales
A continuación
8. Creación de la base de datos Web
Nota sobre el uso del monitor de MySQL
Cómo registrarse en MySQL
Creación de bases de datos y usuarios
Creación de la base de datos
Usuarios y privilegios
Introducción al sistema de privilegios de MySQL
Principio de asignación del privilegio más bajo
Cómo configurar usuarios: el comando GRANT
Tipos y niveles de privilegio
El comando REVOKE
Ejemplos de uso de GRANT y REVOKE
Cómo configurar un usuario para la Web
Cómo cerrar la sesión como administrador
Uso de la base de datos correcta
Creación de tablas de base de datos
¿Cuál es el significado del resto de las palabras clave?
Tipos de columna
Cómo examinar la base de datos con SHOW y DESCRIBE
Identificadores de MySQL
Tipos de dato de columna
Tipos numéricos
Tipos de fecha y hora
Tipos de cadena
Lecturas adicionales
A continuación
9. Cómo trabajar con la base de datos de MySQL
¿Qué es SQL?
Inserción de datos en la base de datos
Recuperación de datos de la base de datos
Recuperación de datos con criterios específicos
Recuperación de datos desde varias tablas
Combinaciones sencillas de dos tablas
Combinación de varias tablas
Búsqueda de filas que no coincidan
Uso de otros nombres para designar tablas: los alias
Resumen de los tipos de combinación
Recuperación de datos con un orden dado
Agrupación y agregación de datos
Cómo escoger las filas que recuperar
Actualización de registros en la base de datos
Alteración de tablas tras su creación
Eliminación de registros de la base de datos
Eliminación de tablas
Eliminación de una base de datos entera
Lecturas adicionales
A continuación
10. Acceso a la base de datos de MySQL desde la Web con PHP
Funcionamiento de las arquitecturas de base de datos
Pasos básicos para consultar una base de datos desde la Web
Comprobación y filtrado de datos entrantes
Cómo configurar de una conexión
Selección de una base de datos
Cómo consultar la base de datos
Recuperación de resultados de consulta
Desconexión de una base de datos
Cómo colocar nueva información en la base de datos
Otras funciones útiles PHP y MySQL
Liberación de recursos
Creación y eliminación de bases de datos
Otras interfaces de base de datos y PHP
Uso de una interfaz de base de datos genérica: PEAR DB
Lecturas adicionales
A continuación
11. MySQL Avanzado
Análisis detallado del sistema de privilegios
La tabla de usuario
Las tablas db y host
Las tablas tables_priv y columns_priv
Control de acceso: ¿cómo utiliza MySQL las tablas de concesión de privilegios?
Actualización de privilegios: ¿cuándo surten efecto los cambios?
Cómo proteger la bases de datos MySQL
MySQL desde el punto de vista del sistema operativo
Contraseñas
Privilegios de usuario
Aspectos relacionados con la Web
Cómo obtener más información sobre bases de datos
Cómo obtener información con SHOW
Cómo obtener información con DESCRIBE
Compresión del funcionamiento de las consultas con EXPLAIN
Cómo agilizar consultas con índices
Trucos de optimización general
Optimización del diseño
Permisos
Optimización de tablas
Uso de índices
Uso de valores predeterminados
Uso de conexione permanentes
Otras sugerencias
Tipos diferentes de tabla
Carga de datos desde un archivo
Cómo realizar una copia de seguridad de la base de datos MySQL
Restablecimiento de la base de datos MySQL
Lecturas adicionales
A continuación
Parte III. Comercio electrónico y seguridad
12. Creación de un sitio Web de comercio electrónico
¿Cuál es nuestro objetivo?
Tipos de sitios Web comerciales
Medios publicitarios en línea
No suministrar información importante
Mala presentación
No responder a la información generada por el sitio Web
No actualizar el sitio
No realizar el seguimiento del éxito del sitio
Recogida de pedidos de artículos y servicios
Preguntas sin respuesta
Confianza
Facilidad de uso
Compatibilidad
Suministro de servicios y artículos digitales
Cómo añadir valor a los artículos y servicios
Recorte de costes
Riesgos y amenazas
Piratas informáticos
Fracaso en la atracción de suficiente negocio
Fallos de hardware
Fallos de alimentación, comunicación, red y distribución
Competencia
Errores de software
Cambios en las políticas e impuestos gubernamentales
Límites de la capacidad del sistema
Por qué estrategia optar
A continuación
13. Aspectos de seguridad relacionados con el comercio electrónico
Importancia de la información
Amenazas contra la seguridad
Exposición de datos confidenciales
Pérdida o destrucción de datos
Modificación de los datos
Errores en el software
Malas especificaciones técnicas
Suposiciones erróneas hechas por los desarrolladores
Pruebas incompletas
Repudio
Equilibrio entre usabilidad, rendimiento, coste y seguridad
Creación de una política de seguridad
Principios de autenticación
Uso de la autenticación
Fundamentos de la encriptación
Encriptación de clave privada
Encriptación de clave pública
Firmas digitales
Certificados digitales
Servidores Web seguros
Auditorías y registros
Cortafuegos
Copia de seguridad de los datos
Copia de seguridad de los archivos generales
Copia de seguridad y restauración de bases de datos MySQL
Seguridad física
A continuación
14. Implementación de la autenticación con PHP y MySQL
Identificación de visitantes
Implementación del control de acceso
Almacenamiento de contraseñas
Cifrado de contraseñas
Protección de páginas múltiples
Autenticación básica
Uso de la autenticación básica en PHP
Uso de la autenticación básica con los archivos .htaccess de Apache
Autenticación básica con IIS
Uso de la autenticación mod_auth_mysql
Instalación de mod_auth_mysql
¿Funcionó?
Uso de mod_auth_mysql
Creación de su propio sistema de autenticación
Lecturas adicionales
A continuación
15. Implementación de transacciones seguras con PHP y MySQL
Cómo suministrar transacciones seguras
El equipo del usuario
Internet
Su sistema
Uso SSL
Filtrado de la entrada de los usuarios
Suministro de un almacenamiento seguro
¿Por qué almacenar números de tarjeta de crédito?
Uso de encriptación en PHP
Instalación de GPG
Cómo probar GPG
Lecturas adicionales
A continuación
Parte IV. Técnicas avanzadas de PHP
16. Interacción con el sistema de archivos y el servidor
Introducción a la carga de archivos
HTML para la carga de archivos
Un inciso sobre seguridad
Código PHP para procesar la tarea de carga del archivo
Problemas habituales
Uso de las funciones de directorio
Lectura desde directorios
Cómo obtener información sobre el directorio actual
Creación y eliminación de directorios
Interacción con el sistema de archivos
Cómo obtener información de archivo
Cómo cambiar las propiedades de archivo
Creación, eliminación y desplazamiento de archivos
Uso de funciones de ejecución de programas
Interacción con el entorno: getenv() y putenv()
Lecturas adicionales
A continuación
17. Uso de funciones de red y de protocolo
Descripción general de protocolos
Envío y recepción de correos electrónicos
Uso de otro sitio Web
Uso de funciones de búsqueda de red
Uso de FTP
Uso de FTP para realizar una copia o reproducir un archivo
Conexión al servidor FTP remoto
Inicio de sesión en el servidor FTP
Comprobación del momento temporal de la actualizaciónde archivos
Descarga del archivo
Cierre de la conexión
Carga de archivos
Cómo evitar los tiempos de espera
Uso de otras funciones de FTP
Comunicaciones de red genéricas con cURL
Lecturas adicionales
A continuación
18. Administración de la fecha y la hora
Cómo obtener la fecha y la hora en PHP
Uso de la función date()
Marcas de tiempo de Unix
Uso de la función getdate()
Validación de fechas
Conversión entre formatos de fecha de PHP y MySQL
Cálculos de fecha
Uso de funciones de calendario
Lecturas adicionales
A continuación
19. Creación de imágenes
Configuración de compatibilidad de imágenes en PHP
Formatos de imagen
JPEG
PNG
WBMP
GIF
Creación de imágenes
Creación de un lienzo
Dibujo o impresión de texto en la imagen
Generación del gráfico final
Liberación de recursos
Uso de imágenes generadas automáticamente en otras páginas
Uso de texto y fuentes para crear imágenes
Lienzo base
Cómo ajustar el texto sobre el botón
Colocación del texto
Cómo escribir el texto en el botón
Para terminar
Dibujo de figuras y representación gráfica de datos
Otras funciones de imagen
Lecturas adicionales
A continuación
20. Uso del control de sesión en PHP
Qué es el control de sesión
Funcionalidad de sesión básica
Qué es una cookie
Configuración de cookies desde HTTP
Uso de cookies con sesiones
Almacenamiento del Id. de sesión
Implementación de sesiones simples
Inicio de sesión
Registro de variables de sesión
Uso de variables de sesión
Anulación del registro de variables y eliminación de la sesión
Ejemplo de sesión sencilla
Configuración del control de sesión
Implementación de autenticación con el control de sesión
Lecturas adicionales
A continuación
21. Otras características útiles
Uso de comillas mágicas
Evaluación de cadenas: eval()
Finalización de ejecución: die y exit
Serialización
Cómo obtener información sobre el entorno PHP
Cómo saber qué extensiones se han cargado
Identificación del propietario de la secuencia de comandos
Cómo saber cuándo se ha modificado una secuenciade comandos
Carga dinámica de extensiones
Modificación temporal del entorno de ejecución
Cómo resaltar fuentes
A continuación
Parte V. Creación de proyectos PHP y MySQL prácticos
22. Uso de PHP y MySQL en grandes proyectos
Aplicación de ingeniería de software al desarrollo Web
Planificación y ejecución de un proyecto de aplicación Web
Reutilización de código
Cómo escribir código mantenible
Estándares de codificación
Convenciones de nomenclatura
Comentarios de código
Sangrados
División del código
Uso de una estructura de directorios estándar
Cómo documentar y compartir funciones internas
Implementación del control de versión
Selección de un entorno de desarrollo
Documentación de nuestros proyectos
Prototipos
Separación de lógica y contenido
Optimización de código
Uso de optimización sencilla
Uso de productos Zend
Comprobaciones
Lecturas adicionales
A continuación
23. Depuración
Errores de programación
Errores sintácticos
Errores de ejecución
Llamadas a funciones que no existen
Lectura o escritura de archivos
Interacción con MySQL u otras bases de datos
Conexiones a redes de servicios
Comprobación de entrada de datos incorrecta
Errores lógicos
Ayuda de depuración de variables
Niveles de informes de errores
Modificación de los parámetros de informes de error
Cómo desencadenar nuestros propios errores
Procesamiento correcto de errores
A continuación
24. Cómo generar autenticación y personalización de usuarios
El problema
Componentes de la solución
Identificación y personalización de usuarios
Almacenamiento de marcadores
Recomendación de marcadores
Presentación de la solución
Implementación de la base de datos
Implementación del sitio básico
Implementación de la autenticación de usuarios
Registro
Conexión
Desconexión
Modificación de contraseñas
Restablecimiento de contraseñas olvidadas
Implementación del almacenamiento y recuperación de marcadores
Cómo añadir marcadores
Cómo mostrar marcadores
Eliminación de marcadores
Implementación de recomendaciones
Conclusión y posibles ampliaciones
A continuación
25. Construcción de un carro de la compra
El problema
Componentes de la solución
Generación de un catálogo en línea
Cómo realizar el seguimiento de las compras de un usuario mientras compra
Pagos
Interfaz de administración
Presentación de la solución
Implementación de la base de datos
Implementación del catálogo en línea
Enumeración de categorías
Enumeración de libros en una categoría
Cómo mostrar detalles sobre un libro
Implementación del carro de la compra
Uso de la secuencia de comandos show_cart.php
Cómo ver el carro
Cómo añadir artículos al carro
Cómo guardar el carro actualizado
Impresión de un resumen en la barra de encabezado
Cómo salir
Implementación del pago
Implementación de una interfaz de administración
Ampliación del proyecto
Uso de un sistema existente
A continuación
26. Creación de un sistema de administración de contenidos
El problema
Requisitos de la solución
Modificación del contenido
Introducción de contenido en el sistema
FTP
Método de carga de archivos
Cambios en línea
Bases de datos frente a almacenamiento en archivos
Estructura de documentos
Uso de metadatos
Formato del resultado
Manipulación de imágenes
Diseño y presentación de la solución
Diseño de la base de datos
Implementación
Interfaz de usuario
Sistema
Búsquedas
Pantalla del editor
Ampliación del proyecto
A continuación
27. Creación de un servicio de correo electrónico basado en la Web
El problema
Componentes de la solución
Presentación de la solución
Configuración de la base de datos
Arquitectura de secuencias de comandos
Conexión y desconexión
Configuración de cuentas
Creación de una nueva cuenta
Modificación de una cuenta existente
Eliminación de una cuenta
Lectura de correo
Selección de una cuenta
Cómo ver los contenidos del buzón de correo
Lectura de un mensaje de correo
Cómo ver encabezados de mensaje
Eliminación de correo
Envío de correo
Envío de un nuevo mensaje
Cómo responder o reenviar correo
Ampliación del proyecto
A continuación
28. Creación de un gestor de listas de correo
El problema
Componentes de la solución
Definición de una base de datos de listas y suscriptores
Carga de archivos
Envío de correo con archivos adjuntos
Presentación de la solución
Definición de la base de datos
Arquitectura de la secuencia de comandos
Implementación del inicio de sesión
Creación de una nueva cuenta
Conexión
Implementación de funciones de usuario
Cómo ver las listas
Cómo ver información de listas
Cómo ver archivos de listas
Suscripciones y anulación de suscripciones
Modificación de la configuración de una cuenta
Modificación de contraseñas
Desconexión
Implementación de funciones administrativas
Creación de una nueva lista
Carga de un nuevo boletín informativo
Procesamiento de la carga de varios archivos
Vista previa del boletín informativo
Envío del mensaje
Ampliación del proyecto
A continuación
29. Creación de foros Web
El problema
Componentes de la solución
Presentación de la solución
Diseño de la base de datos
Cómo ver el árbol de artículos
Despliegue y repliegue
Cómo mostrar los artículos
Uso de la clase treenode
Cómo ver artículos individuales
Cómo añadir nuevos artículos
Ampliaciones
Uso de un sistema existente
A continuación
30. Generación de documentos personalizados en PDF
El problema
Evaluación de formatos de documento
Papel
ASCII
HTML
Formatos de procesadores de texto
Formato de texto enriquecido
PostScript
Formato de documento portable
Componentes de la solución
Sistema de preguntas
Títulos relacionados con Desarrollo Web con PHP y MySQL