Agradecimientos
Sobre los autoresPrefacio
1. Introducción
1.1. De los sitios Web estáticos a los dinámicos
1.1.1. Sitios Web estáticos
1.1.2. Sitios Web dinámicos
1.1.3. ¿Qué es el código abierto?
1.2. Sobre PHP
1.2.1. Dónde conseguir PHP y su documentación
1.3. Sobre MySQL
1.3.1. Dónde conseguir MySQL y su documentación
1.3.2. Características de MySQL
1.3.3. Cómo instalar MySQL y PHP
1.3.4. Ventajas de MySQL y PHP
Alto rendimiento
Librerías incorporadas
Extensibilidad
Bajo coste
Portabilidad
Comunidad de desarrollo
Facilidad de aprendizaje
1.4. Resumen del capítulo
1.4.1. Qué debería saber
1.4.2. Qué viene a continuación
2. Empezando
2.1. El ciclo de vida de una página Web
2.1.1. Análisis de una página Web
Los actores
Los pasos
2.2. Anatomía de un script PHP
2.2.1. Pasos para escribir un script PHP
Encontrar un editor de texto
Nombrando el archivo PHP. La extensión .php
Etiquetas PHP
Etiquetas PHP adicionales
Dónde guardar el script
El contenido del script
Las comillas en las cadenas de caracteres
Imprimir cadenas
Ejecutar el script
2.3. Algunas cosas a tener en cuenta
2.3.1. PHP y HTML son lenguajes diferentes
2.3.2. Sentencias, espacios en blanco y saltos de línea
2.3.3. Comentarios
2.3.4. Uso de las funciones PHP
2.4. Resumen
2.4.1. PHP en la línea de comandos
2.4.2. Conocer la versión de PHP
2.4.3. Ejecución de scripts desde la línea de comandos
2.4.4. Ejecutar PHP de forma interactiva
2.4.5. Opciones PHP para la línea de comandos
2.4.6. El archivo php.ini
2.5. Resumen del capítulo
2.5.1. Qué debería saber
2.5.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 2
3. Inicio rápido en PHP
3.1. Inicio rápido, referencia rápida
3.1.1. Nota para programadores
3.1.2. Nota para no programadores
3.1.3. Sintaxis y operadores de PHP
3.2. Resumen del capítulo
3.2.1. ¿Qué viene a continuación?
4. Los ladrillos del edificio: tipos de datos, literales, variables y constantes
4.1. Tipos de datos
4.1.1. Literales numéricos
4.1.2. Cadenas de caracteres y comillas
Here documents: una forma especial de entrecomillar
Secuencias de escape
4.1.3. Literales booleanos
4.1.4. Tipos especiales de datos
Null
Recurso
La función gettype()
4.2. Variables
4.2.1. Definición y asignación
4.2.2. Nombres válidos
4.2.3. Declarar e inicializar variables
Comillas dobles, comillas simples y comillas hacia atrás en las sentencias de asignación
4.2.4. Visualizar las variables
Los constructores echo y print
Etiquetas cortas
4.2.5. Variables y tipos de datos mezclados
Conversión de tipos
4.2.6. Concatenación y variables
4.2.7. Referencias
4.2.8. Variables dinámicas
4.2.9. Alcance de las variables
Variables locales
Variables globales y de entorno
4.2.10. Manejar variables
La función isset()
La función empty()
La función unset()
4.2.11. Introducción a las variables de formulario
El archivo php.ini y register_globals
Cómo maneja PHP la entrada de los formularios
Extraer los datos por petición
Variables predefinidas
4.3. Constantes
4.3.1. ¿Qué es una constante?
4.3.2. Crear constantes con la función define()
4.3.3. La función constant()
4.3.4. Constantes predefinidas y mágicas
4.4. Resumen del capítulo
4.4.1. Qué debería saber
4.4.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 4
5. Operadores
5.1. Operadores y expresiones PHP
5.1.1. Asignación
5.1.2. Precedencia y asociatividad
5.1.3. Operadores aritméticos
5.1.4. Operadores de asignación
5.1.5. Operadores de autoincremento y autodecremento
La asignación y el autoincremento/autodecremento
5.1.6. Algunas funciones matemáticas de utilidad
5.1.7. Operadores de conversión
5.1.8. El operador de concatenación
5.1.9. Operadores de comparación
¿Qué es igual?
¿Qué es idéntico?
5.1.10. Comparar números
5.1.11. Comparar cadenas de caracteres
5.1.12. Operadores lógicos
El operador lógico AND &&
El operador OR ||
Diferencia entre &&/|| y las palabras and/or
El operador lógico XOR
El operador !
5.1.13. El operador condicional
5.1.14. Operadores a nivel de bit
Sobre los bits
Operadores a nivel de bit
Operadores de desplazamiento a nivel de bit
5.1.15. Operadores de ejecución
5.1.16. Operador de control de errores
Añadir el operador @
5.1.17. Operadores de tipo
5.2. Resumen del capítulo
5.2.1. Qué debería saber
5.2.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 5
6. Cadenas de caracteres
6.1. ¿Qué es una cadena?
6.1.1. Comillas
Errores con las comillas
Comillas dobles
6.1.2. Operadores de cadenas
Concatenación
Igual e idéntico
6.2. Funciones de cadena
6.2.1. Impresión y formato de cadenas
La función printf()
La función sprintf()
La función fprintf()
6.2.2. Aplicar formato a los números y al dinero
La función number_format()
La función money_format()
6.2.3. Longitud de una cadena
La función strlen()
6.2.4. Número de palabras en una cadena
La función str_word_count()
6.2.5. Cambiar mayúsculas y minúsculas en una cadena
Las funciones strtoupper() y strtolower()
Las funciones ucfirst() y ucwords()
La función mb_convert_case()
6.2.6. Comparar cadenas
La función strcmp()
La función strcasecmp()
La función strncasecmp()
La función strnatcmp()
La función strspn()
La función strcspn()
6.2.7. Encontrar parecidos en las cadenas
Las funciones soundex() y metaphone()
Las funciones similar_text() y levenshtein()
6.2.8. Dividir cadenas
La función strtok()
6.2.9. Repetir una cadena
6.2.10. Recortar y rellenar cadenas
Las funciones trim(): trim(), ltrim(), chop(), rtrim()
La función str_pad()
6.2.11. Búsqueda y sustitución
Las funciones str_replace() y stri_replace()
6.2.12. Encontrar una posición en una cadena
La función strpos()
Las funciones strrpos() y strripos()
6.2.13. Extraer porciones de una cadena: subcadenas
Las funciones strchr() y strichr()
La función substr()
La función substr_replace()
La función substr_count()
6.2.14. Caracteres especiales y cadenas
Caracteres individuales y uso de llaves
Saltos de línea con las funciones nl2br() y wordwrap()
La función chr() y los caracteres ASCII
Caracteres ASCII y la función ord()
Trasladar caracteres y la función strstr()
Las barras y las funciones addslashes() y addcslashes()
Las barras y la función stripslashes()
6.2.15. Trabajar con caracteres especiales HTML
La función htmlspecialchars()
La función htmlentities()
6.3. Otras funciones de cadena
6.4. Resumen del capítulo
6.4.1. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 6
7. Condicionales y bucles
7.1. Estructuras de control, bloques y sentencias compuestas
7.1.1. Condicionales
if/else
if/elseif
La sentencia switch
7.2. Bucles
7.2.1.El bucle while
7.2.2. El bucle do/while
7.2.3. El bucle for
El bucle for y campos del formulario repetitivos
7.2.4. El bucle foreach
7.2.5. Control de bucle con break y continue
Bucles anidados
7.3. Resumen del capítulo
7.3.1. Qué debe saber
7.3.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 7
8. Arrays
8.1. ¿Qué es un array?
8.1.1. Crear y nombrar un array
La función array ()
El identificador de array []
La función range ()
La función array_fill()
8.1.2. Acceder a los elementos de un array (valores)
Elementos de un array numérico
Elementos de un array asociativo
¡Cuidado con las comillas!
Mezclar elementos en un array
8.1.3. Imprimir un array
La función print_r()
La función var_dump()
8.1.4. Utilizar bucles para acceder a los elementos de un array
El bucle for
El bucle while
El bucle foreach
Modificar un valor por referencia con el bucle foreach
8.1.5. Comprobar si existe un array
8.1.6. Crear cadenas a partir de arrays y arrays a partir de cadenas
La función implode()
La función explode ()
8.1.7. Averiguar el tamaño de un array
Las funciones count() y sizeof ()
La función array_count_values()
8.1.8. Extraer claves y valores de arrays
La función array_keys()
La función array_values()
La función each
8.1.9. Crear variables a partir de elementos de un array
La función list() y los arrays numéricos
La función extract() y los arrays asociativos
8.1.10. Arrays multidimensionales
Averiguar el tamaño de un array multidimensional
8.1.11. Clasificar arrays
Clasificación alfabética de arrays indexados numéricamente
Clasificación alfabética
Clasificación numérica
Clasificación inversa
Clasificar un array asociativo según los valores
Clasificar según el valor en orden inverso
Clasificar un array asociativo según la clave
8.1.12. Seleccionar un array de forma aleatoria
Seleccionar las claves de forma aleatoria
Barajar un array numérico (seleccionando valores aleatorios)
8.2. Modificar arrays (desconfigurar, eliminar, agregar y modificar elementos)
8.2.1. Eliminar un array y sus elementos
Eliminar un array entero
Eliminar el último elemento de un array
Eliminar el primer elemento de un array
Eliminar valores duplicados de un array
8.2.2. Agregar elementos a un array
Agregar elementos al principio de un array
Agregar elementos al final de un array
Ensamblar un array - Eliminar y agregar elementos
8.2.3. Copiar elementos de un array
La función "array_slice()
8.2.4.Combinar y fusionar arrays
La función array_combine()
La función array_merge ()
Combinar arrays indexados numéricamente
Combinar arrays asociativos
La función array_merge_recursive():
8.2.5. Operadores de arrays
El operador de unión
Los operadores de igualdad e identidad
8.2.6. Más funciones de array
8.3. Resumen del capítulo
8.3.1. Qué debe saber
8.3.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 8
9. Funciones definidas por el usuario
9.1. ¿Qué es una función?
9.1.1. Declaración de funciones, definición e invocación
Dónde poner las funciones
Cómo definir una función
Cómo llamar a una función
9.1.2. Pasar argumentos
¿Qué son los argumentos y los parámetros?
Paso por valor
Pérdida de argumentos
Número de argumentos
Definir parámetros por defecto
Paso por referencia
Llamadas dinámicas a funciones
9.1.3. Valores de retorno
Devolver un valor
Retornos condicionales
Devolver varios valores
9.1.4. Usar funciones callback
La función array_map()
La función array_walk_recursive()
9.1.5. Alcance
Alcance local
Alcance global
La matriz $GLOBALS[]
Variables estáticas
9.1.6. Funciones anidadas
9.1.7. Funciones recursivas
9.1.8. Librerías de funciones: requerir e incluir
Los constructores include() y require()
9.2. Resumen del capítulo
9.2.1. Qué debería saber
9.2.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 9
10. Más sobre los formularios PHP
10.1. Introducción
10.2. Resumen de los formularios HTML
10.2.1. El papel del navegador
El método GET
El método POST
10.2.2. El papel del servidor
10.2.3. Crear formularios HTML
Los pasos para crear un formulario
El atributo method
El atributo action
10.3. PHP y los formularios
10.3.1. La directiva register_globals
10.3.2. Matrices superglobales para recuperar los datos del formulario
10.3.3. El método de petición
10.3.4. Caracteres extraños en el nombre de los campos del formulario y en la entrada del usuario
Puntos y espacios en los nombres de los dispositivos de entrada HTML
Eliminar las barras
10.3.5. La matriz $_REQUEST
La función extract()
10.3.6. El estilo medio y los parámetros del formulario
La matriz $_GET
Seguridad
La matriz $_POST
10.3.7. El estilo largo (antiguo)
10.3.8. Procesar formularios con selecciones múltiples
Crear el formulario con listas y casillas de verificación
Procesar el formulario con varias selecciones
10.3.9. Formularios que utilizan un botón de imagen
10.3.10. Formularios que se autoprocesan
Comprobar si el formulario se ha enviado
10.3.11. Utilizar campos ocultos
10.3.12. Redireccionar al usuario
La cabecera de localización
Usar el URL correcto para la redirección
10.3.13. Subir archivos
Atributos de la etiqueta y el elemento archivo
La matriz $_FILES
Mover el archivo enviado
10.3.4. Formularios con memoria
10.3.15. Dónde encontrar información de las matrices superglobales
La función phpinfo()
10.3.16. Cómo obtener información del servidor
10.3.17. Cómo obtener información del entorno
10.4. Resumen del capítulo
10.4.1. Qué debería saber
10.4.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 10
11. Archivos y directorios
11.1. Archivos
11.1.1. Permisos de los archivos y propietario
11.1.2. Permisos en UNIX/Linux
Propietario y grupos
Permisos
Cambiar permisos en línea de comandos
11.1.3. Permisos de Windows
11.2. El servidor Web, PHP y permisos
11.2.1. Funciones internas PHP
La función chown()
La función chgrp()
La función chmod()
11.2.2. Manejador de archivo
11.2.3. Abrir un archivo
La función fopen()
El modo y los permisos
11.2.4. Abrir un archivo para lectura
La función fgets(), leer líneas de un archivo
La función fgetss(), eliminar etiquetas HTML de un archivo
La función fgetc(), leer caracteres de un archivo
La función fread(), leer trozos de un archivo
11.2.5. Posicionar el puntero del archivo
La función fseek()
La función rewind()
La función ftell(), encontrar la posición actual en un archivo
11.2.6. Abrir un URL para lectura
11.2.7. Lectura de archivos sin manejador de archivo
La función file_get_contents(): Leer un archivo entero en una cadena de texto
La función file(): Leer un archivo completo en un array
Usar explode() e implode()
La función readfile(): Leer y escribir un archivo
11.2.8. Abrir un archivo para escritura e inserción
Las funciones fwrite() y fputs()
La función file_put_contents
Insertar a un archivo
Bloquear archivos con flock()
11.2.9. Comprobaciones de archivos
La función file_exists()
La función is_file()
La función is_readable()
La función is_writable()
11.2.10. Crear, copiar, renombrar y borrar archivos
La función copy(), hacer una copia de un archivo
La función rename(), renombrar y/o mover un archivo
La función unlink(), eliminar un archivo
11.3. Directorios
11.3.1. Abrir y leer de un directorio
La función opendir()
La función readdir()
11.3.2. Obtener información de la ruta
11.3.3. Cambiar y obtener el directorio actual
11.4. Gestionar contenido con archivos incluidos
11.4.1. Un ejemplo real
11.5. Resumen del capítulo
11.5.1. Lo que debería saber
11.5.2. ¿Qué es lo siguiente?
12. Expresiones regulares y búsqueda de patrones
12.1. ¿Qué es una expresión regular?
12.2. Funciones de coincidencia de patrones
12.2.1. Encontrar un patrón
La función preg_match()
Sensible a mayúsculas y minúsculas
Patrones capturados
La función preg_match_all()
Modificadores de coincidencia de patrones
12.2.2. Buscar y reemplazar
La función preg_replace()
Evaluar el lado de reemplazo con el modificador e
La función preg_split(), dividir cadenas
Dividir con múltiples delimitadores alternativos
La función preg_grep()
12.2.3. Obtener el control, metacaracteres de expresiones regulares
Metacaracteres ancla
Localizar caracteres individuales y dígitos
Metasímbolos
Metacaracteres para repetir coincidencias de patrones
Metacaracteres para alternación
Agrupar y clustering
Recuerdo o captura
Buscar, capturar y reemplazar
Predicción positiva hacia delante
Predicción positiva hacia atrás
Comentar expresiones regulares y el modificador x
12.2.4. Buscar patrones en archivo de texto
12.2.5. Validacion de formularios con PHP
Comprobar una dirección de correo electrónico válida
12.2.6. Ayuda en la Web
12.3. Resumen del capítulo
12.3.1. ¿Qué debería conocer?
12.3.2. ¿Qué es lo siguiente?
Ejercicios de laboratorio del capítulo 12
13. Introducción a MySQL
13.1. Sobre las bases de datos
13.1.1. Bases de datos cliente/servidor
13.1.2. Hablar con la base de datos
13.1.3. Los puntos fuertes y débiles de MySQL
Facilidad de uso
Comunidad de desarrolladores
Licencia de código abierto
Licencia comercial
Escalabilidad
13.2. Anatomía de una base de datos relacional
13.2.1. El servidor de bases de datos
13.2.2. La base de datos
13.2.3. Tablas
13.2.4. Registros y campos
Columnas/Campos
Filas/Registros
13.2.5. Claves primarias e índices
13.2.6. El esquema de la base de datos
13.3. Conectar a la base de datos
13.3.1. Opciones de la línea de comandos MySQL
13.3.2. Herramientas gráficas
La herramienta phpMyAdmin
MySQL Query Browser
13.4. El sistema de privilegios MySQL
13.4.1. Entrar al servidor de bases de datos
13.4.2. Encontrar las bases de datos
13.4.3. La tabla "user"
13.4.4. La tabla "db"
13.4.5. La tabla "host"
13.4.6. Un ejemplo del mundo real
13.4.7. Los comandos Grant y Revoke
13.4.8. Crear y borrar una base de datos
13.4.9. Algunas funciones MySQL útiles
13.5. Resumen del capítulo
13.5.1. Qué debería saber
13.5.2. ¿Qué viene a continuación?
14. Tutorial del lenguaje SQL
14.1. ¿Qué es SQL?
14.1.1. El estándar SQL
14.1.2. Ejecutar sentencias SQL
MySQL Query Browser
14.1.3. Comandos y consultas SQL
Gramática del inglés
Sentencias SQL terminadas en punto y coma
Convenciones para los nombres
Palabras reservadas
Mayúsculas y minúsculas
El conjunto resultado
14.1.4. SQL y la base de datos
El comando show
El comando USE
14.1.5. Las tablas SQL
Los comandos Show y Describe
14.2. El lenguaje de manipulación de datos SQL (DML)
14.2.1. El comando SELECT
Seleccionar las columnas especificadas
Seleccionar todas las columnas
La sentencia SELECT DISTINCT
Limitar el número de líneas del conjunto resultado con LIMIT
La cláusula WHERE
Utilizar comillas
Utilizar los operadores = y <>
¿Qué es NULL?
Los operadores > y <
Los operadores AND y OR
Las condiciones LIKE y NOT LIKE
Búsqueda de patrones con el carácter comodín %
El carácter comodín _
La sentencia BETWEEN
Ordenar resultados con ORDER BY
14.2.2. El comando INSERT
14.2.3. El comando UPDATE
14.2.4. La sentencia DELETE
14.3. El lenguaje de definición de datos SQL
14.3.1. Crear la base de datos
14.3.2. Tipos de datos SQL
14.3.3. Crear una tabla
14.3.4. Crear una clave
Claves primarias
Claves externas
14.3.5. Relaciones
Dos tablas con una clave común
Utilizar el punto para unir dos tablas
Alias
14.3.6. Modificar una tabla
14.3.7. Borrar una tabla
14.3.8. Borrar una base de datos
14.4. Funciones SQL
14.4.1. Funciones numéricas
Utilizar GROUP BY
14.4.2. Funciones de cadena
14.4.3. Funciones de fecha y hora
Dar formato a la fecha y a la hora
El comando MySQL EXTRACT
14.5. Resumen del capítulo
14.5.1. Qué debería saber
14.5.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 14
15. Integración de PHP y MySQL
15.1. Introducción
15.1.1. Conectar al servidor de bases de datos
15.1.2. Elegir la base de datos
15.1.3. Ejecutar sentencias SQL (INSERT, UPDATE, DELETE)
15.1.4. Recuperar los resultados de la consulta (SELECT)
La función mysql_fetch_row()
La función mysql_fetch_assoc()
15.1.5. Otras funciones MySQL útiles
La función mysql_error()
La función mysql_num_rows()
La función mysql_num_fields()
La función mysql_field_name()
15.2. El ejemplo del libro de invitados
15.2.1. Primer paso: diseñar la base de datos
15.2.2. Segundo paso: enviar un mensaje
15.2.3. Tercer paso: listar todos los mensajes
15.2.4. Resumen del ejemplo
15.3. Resumen del capítulo
15.3.1. Qué debería saber
15.3.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 15
16. Cookies y sesiones
16.1. ¿Qué quiere decir sin estado?
16.2. ¿Qué son las cookies?
16.2.1. Ingredientes de las cookies
16.2.2. Los atributos de una cookie
Nombre
Fecha de expiración
Nombre de dominio
Ruta
Seguridad
16.3. PHP y las cookies
16.3.1. Crear cookies con la función setcookie()
La matriz global $_COOKIE
Guardar varios valores en una cookie. Serialización.
16.3.2. Seguir la pista a los visitantes con las cookies
Contador del número de visitas
Seguir la última visita del usuario
16.3.3. Extender la vida de una cookie
La función mktime()
16.3.4. El control de la salida y las cabeceras HTTP
Las funciones ob_start() y ob_end_flush()
Los búferes de salida y el archivo php.ini
16.3.5. Borrar una cookie
Usar el navegador para borrar las cookies
16.4. ¿Qué es una sesión?
16.4.1. Dónde almacenar las sesiones
16.4.2. Empezar una sesión basada en cookies
La función session_start()
16.4.3. Registrar una sesión
La matriz asociativa $_SESSION
La función session_register()
16.4.4. Guardar matrices en una sesión
16.4.5. Funciones de sesión y opciones de configuración
16.4.6. Establecer preferencias con las sesiones
Recordar usuarios y preferencias en varias páginas
16.4.7. Nombrar sesiones
16.4.8. Sesiones sin cookies
Utilizar un elemento oculto
16.4.9. Pasar el identificador de sesión en un enlace
La constante SID
16.4.10. Cambiar el identificador de la sesión
16.4.11. Terminar una sesión
Borrar las variables de sesión
La función session_write_close()
La función session_destroy()
Limpieza de los archivos de sesión y recolección de basura
16.4.12. Configuración de sesiones
Funciones para la gestión de sesiones
16.4.13. Implementar un sistema de autenticación con sesiones
16.5. Resumen del capítulo
16.5.1. Qué debería saber
16.5.2. ¿Qué viene a continuación?
Ejercicios de laboratorio del capítulo 16
17. Objetos
17.1. ¿Qué son los objetos?
17.1.1. Clases y objetos
17.2. Trabajar con clases
17.2.1. Definir la clase
17.2.2. Instanciar la clase
¿Qué es "new"?
Las propiedades y los métodos
¿Qué es $this?
El operador ->
Las funciones gettype() y get_class()
17.2.3. Crear una clase completa
17.2.4. Visualizar un objeto
17.2.5. Funciones que obtienen información de la clase
17.2.6. Encapsulación y ocultación de la información
17.2.7. Miembros de la clase y alcance
Alcance público
Alcance privado
Alcance protegido
Ejemplo de alcance privado
17.2.8. Métodos mágicos
Constructores
Destructores
Métodos accesores de lectura y escritura
17.2.9. Herencia
Constructores y herencia
17.2.10. Sobreescritura de métodos
17.2.11. Acceso protegido
17.3. Algunas características de PHP 5
17.3.1. Clases y métodos finales
17.3.2. Miembros estáticos
17.3.3. Constantes de clase
17.3.4. Reutilizar una clase
17.4. Resumen del capítulo
17.4.1. Qué debería saber
Ejercicios de laboratorio del capítulo 17
A. Construir una galería de arte
A.1. Resumen del proyecto
A.2. Lo público y lo privado
A.3. Crear el sitio Web
A.3.1. Crear la base de datos
A.3.2. Páginas de administración
Listar todos los artistas de la base de datos (admin_artist.php)
Actualizar un artista de la galería (admin_artist_edit.php)
Añadir un nuevo artista a la galería (admin_artist_insert.php)
Añadir y editar una obra de arte (admin_art_edit.php)
A.3.3. Páginas públicas
La página de cabecera (header.php)
La página índice (index.php)
La página de los detalles (artist_detail.php)
La página de contacto (contact.php)
A.3.4. Asegurar las páginas
A.4. Instalar la galería de arte
A.4.1. Dónde encontrar los archivos de la Galería Canvas
A.4.2. Instalar la base de datos MySQL
A.4.3. Editar las páginas PHP
A.5. Conclusión
B. PHP y el correo electrónico
B.1. El servidor de correo
B.2. MIME (Extensiones de Correo Internet Multipropósito)
B.3. Opciones de configuración
SMTP (Simple Mail Transfer Protocol)
smtp_port
sendmail_from
sendmail_path
B.4. La función mail()
B.5. Enviar un mensaje sencillo de correo electrónico
B.6. Ejemplo: enviar un mensaje HTML
B.6.1. Enviar un mensaje con datos adjuntos
C. PHP y la fecha y la hora
C.1. Dar formato a la fecha y a la hora
C.1.1. La función date()
C.1.2. La función strftime()
C.2. Obtener la marca de tiempo
C.2.1. La función time()
C.2.2. La función mktime()
C.2.3. Crear una marca de tiempo UNIX a partir de una cadena
C.3. Obtener la fecha y la hora
C.3.1. Validar fechas
D. Seguridad y depuración
D.1. Sobre la seguridad
D.1.1. Seguridad de red y SSL
D.1.2. La seguridad del sistema operativo, del servidor Web y del sistema de ficheros
D.2. Asegurar PHP y MySQL
D.2.1. Principios básicos de seguridad en PHP
Validar los campos de los formularios
La directiva register_globals
Inyecciones SQL
Nombres de archivo
Modo seguro
El sistema de ficheros
Registrar todo
Dónde obtener más información sobre la seguridad
D.3. Depuración
D.3.1. Activar el informe de errores
D.3.2. Corregir los errores sintácticos
D.3.3. Diagnóstico con sentencias print
D.3.4. Corregir errores SQL
D.3.5. Más sobre depuración
E. Procedimientos de instalación
E.1. Sobre los servidores Web
E.2. Instalar Apache en Windows
E.3. Instalar PHP en Windows
E.4. Instalar PHP en Linux/UNIX
E.5. Instalar PHP en Mac OS X
E.6. Configurar Apache como módulo PHP (Todas las plataformas)
E.6.1. Comprobar la instalación de PHP y Apache
E.7. Configurar el archivo php.ini (Todas las plataformas)
E.8. Instalar MySQL en Windows
E.9. Instalar MySQL en Linux/UNIX
E.10. Instalar MySQL en Mac OS X
E.11. Leer el manual
F. Contenido del CD-ROM
Índice alfabético