Upload
kimbo23
View
315
Download
61
Embed Size (px)
Citation preview
Razones para leer este libro ........................................................................................... 31 Objetivos que puede alcanzar con este libro ............................................................. 32 Concepto de PHP ............................................................................................................ 33 Novedades de la versi6n 4.3 de PHP .......................................................................... 33 Concepto de MySQL ....................................................................................................... 34 Razones para utilizarPHPy MySQL .......................................................................... 34 Alguna de las cualidades de PHP ................................................................................ 35
Rendimiento ................................................................................................................ 35 Integraci6n de base de datos ................................................................................... 35 Bibliotecas incorporadas .......................................................................................... 36 Coste .............................................................................................................................. 36 Aprendizaje de PHP ............................................................................................... 36 Portabilidad ................................................................................................................. 36 C6digo fuente .............................................................................................................. 36
Algunas de las ventajas de MySQL ............................................................................ 37 ................................................................................................................ Rendimiento 37
Bajo coste ...................................................................................................................... 37 Facilidad de uso ......................................................................................................... 37 Portabilidad ................................................................................................................. 37
.............................................................................................................. C6digo fuente 37 C6mo estd organizado este libro .................................................................................. 38
.
Finalmente ......................................................................................................................... 38
...................................................................................... Parte I . Uso de PHP 39
1 . Curso acelerado de PHP .......................................................................... 40 Uso de PHP ....................................................................................................................... 42 Aplicaci6n de ejemplo: Bob's Auto Parts ................................................................... 42
El formulario de pedidos ........................................................................................ 43 Procesamiento del formulario .............................................................................. 44
.................................................................................... C6mo incrustar PHP en HTML 45 Estilos de etiquetas PHP ........................................................................................... 46 Instrucciones de PHP ................................................................................................ 47 Espacios en blanco ..................................................................................................... 47 Comentarios ................................................................................................................ 48
C6mo agregar contenido dinimico ............................................................................. 49 Llamada de funciones ............................................................................................... 49 Funci6n date() ............................................................................................................. 50
C6mo acceder a las variables de formulario ............................................................. 50 Variables de formulario ............................................................................................ 50 Concatenaci6n de cadenas ....................................................................................... 53 Literales y variables ................................................................................................... 54 Identificadores ............................................................................................................ 54
Variables declaradas por el usuario ............................................................................ 55 Asignacidn de valores a variables ............................................................................... 55 Tipos de variables ............................................................................................................ 55
Tipos de datos de PHP .............................................................................................. 56 Control de tipos ............................................................................................................... 56
Conversi6n de tipos .................................................................................................. 57 Variables de tip0 variable ........................................................................................ 57
. . Constantes ......................................................................................................................... 58 Ambito de variables ........................................................................................................ 58 Operadores ........................................................................................................................ 59
Operadores aritmeticos ............................................................................................ 60 Operadores de cadena ............................................................................................... 61 Operadores de asignaci6n ....................................................................................... 61
Devoluci6n de valores de asignaci6n .............................................................. 61 Combinacidn de operadores de asignaci6n .................................................... 62 Increment0 y decrement0 previo y posterior ................................................ 62 Referencias ............................................................................................................. 63
Operadores de comparaci6n .................................................................................... 63 El operador iguales ............................. : .............................................................. 63 Otros operadores de comparaci6n ................................................................... 64
Operadores 16gicos ........................................................................... ........................ 64 Operadores bit a bit ................................................................................................... 65 Otros operadores ........................................................................................................ 66
Operador ternario ................................................................................................. 66
........................................................................ Operador de supresi6n de error 66 Operador de ejecucibn ......................................................................................... 67
................................... Uso de operadores: calcular 10s totales de 10s formularios 67 Precedencia y asociatividad: evaluacidn de expresiones ....................................... 69 Funciones de variables ................................................................................................... 70
C6mo probar y establecer tipos de variables ...................................................... 70 C6mo probar el estado de las variables ................................................................ 71 Reinterpretacibn de variables ................................................................................. 72
..................................................................................................... Estructuras de control 72 Toma de decisiones con estructuras condicionales ................................................ 72
Las instrucciones if .................................................................................................. 72 Bloques de c6digo ...................................................................................................... 73 Instrucciones else ...................................................................................................... 73 Instrucciones elseif ................................................................................................. 74 Instrucci6n switch ...................................................................................................... 75 Comparacidn de condiciones diferentes ............................................................... 77
Iteracibn: repeticion de acciones .................................................................................. 77 Bucles while ................................................................................................................. 78 Los bucles for y foreach ............................................................................................ 80
... Bucles do while ......................................................................................................... 81 ............ C6mo salir de una estructura de control o una secuencia de comandos 81
Siguiente paso: guardar el pedido del cliente ......................................................... 82
2 . Almacenamiento y recuperacibn de datos ........................................ 84 C6mo guardar datos para su lectura posterior ..................................................... 86 Almacenamiento y recuperaci6n de 10s pedidos de Bob ........................................ 86 Introducci6n a1 procesamiento de archivos .............................................................. 87
* C6mo abrir un archivo .................................................................................................. 88 ....................................................................................................... Modos de archivo 88
Uso de fopen() para abrir un archivo .................................................................... 88 C6mo abrir archivos a travks de FTP o HTTP ..................................................... 91 Problemas a1 abrir el archivo ................................................................................... 91 C6mo escribir en un archivo ................................................................................... 93
Parimetros de fwrite() ........................................................................................ 94 Formatos de archivo .......................................................................................... 94
C6mo cerrar un archivo .................................................................................................. 95 Lectura desde un archivo ............................................................................................... 95
Apertura de un archivo para su lectura: fopen() ................................................ 96 C6mo saber cuindo parar: feof() ............................................................................ 97 C6mo leer linea a linea: fgets(). fgetss() y fgetcsv() ........................................ 97
................................... Lectura de todo el archivo: readfile(). fpassthruo. file() 98 Lectura de un caricter: fget()+ ................................................................................ 99 Lectura de una longitud arbitraria de bytes: fread() ........................................ 99
.............................................................................. Otras funciones de archivo utiles 100
fndice de contenidos
Comprobaci6n de la existencia de un archivo: file-exists() ........................... 100 C6mo averiguar el tamaiio de un archivo: filesize() ........................................ 100 Eliminaci6n de un archivo: unlink() ................................................................... 100 Navegaci6n dentro de un archivo: rewind(). fseek() y ftell() ........................ 101
Bloqueo de archivos ...................................................................................................... 102 La opci6n mis acertada: 10s sistemas de administracibn de base
de datos ................................................................................................................. 103 Problemas con el uso de archivos planos ........................................................... 103 C6mo resolver estos problemas ............................................................................ 104
Lecturas adicionales ...................................................................................................... 105 A continuaci6n ............................................................................................................... 105
3 . Uso de matrices ....................................................................................... 106
i Q ~ k es una matriz? ................................................................................................ 108 Matrices indexadas numkricamente .......................................................................... 108
Inicializaci6n de matrices indexadas numkicamente .................................... 109 Acceso a 10s contenidos de matrices ................................................................... 109 Uso de bucles para acceder a la matriz ............................................................... 110
Matrices asociativas ...................................................................................................... 111 Inicializaci6n de una matriz asociativa .............................................................. 111 C6mo acceder a elementos de matriz .................................................................. 111 Uso de bucles con matrices asociativas .............................................................. 111
Matrices multidimensionales ...................................................................................... 113 C6mo ordenar matrices ................................................................................................ 117
Uso de sort() .............................................................................................................. 117 Uso de asorto y ksort() para ordenar matrices asociativas ............................ 117 Inversi6n del orden .................................................................................................. 118
% Ordenaci6n de matrices~multidimensionales ......................................................... 118
Ordenaciones definidas por el usuario .................................................. : ............ 118 Ordenaciones de usuario inversas ....................................................................... 120
Reordenaci6n de matrices ............................................................................................ 120 Uso de shuffle() ........................................................................................................ 121 Uso de array-reverse() ............................................................................................ 122
Carga de matrices desde archivos ............................................................................. 123 Otras manipulaciones de cadenas ............................................................................. 125
Navegaci6n dentro de una matriz con each(). current(). reset(). end(). next(). pas(). and prev() ................................................................... 126
Aplicaci6n de cualquier funci6n a cada elemento de una matriz: array-walk() ................................................................................................ 126.
C6mo contar elementos de una matriz: count(). sizeof(). and array-count-values() ......................................................................................... 128
Conversi6n de matrices en variables escalares: extract() ............................... 129 Lecturas adicionales ...................................................................................................... 130 A continuaci6n ............................................................................................................... 130
Desarrollo W e b con PHP y MySQL
4 . Manipulaci6n de cadenas y expresiones regulares ............................ 132 ................................................................. Aplicaci6n de ejemplo: Smart Form Mail 133
Aplicaci6n de formato a cadenas ............................................................................... 136 Limpieza de cadenas: chop(). Itrim() y trim() .................................................... 136
................................... Aplicaci6n de formato a cadenas para presentaciones 136 .................................................... Uso de formato HTML: la funci6n nl2br() 136
Aplicaci6n de formato a una cadena para su impresi6n ........................... 137 Cambio de mayusculas y minusculas en una cadena ................................ 139
Aplicaci6n de formato a las cadenas para su almacenamiento: Addslashes0 y StripSlashes() .................................................................... 140
.............................. C6mo combinar y dividir cadenas con funciones de cadena 141 .................................................................... Uso de explode(). implode() y join() 142
.......................................................................................................... Uso de strtok() 142
.......................................................................................................... Uso de substr() 143 Comparaci6n de cadenas ............................................................................................ 144
....................... Ordenaci6n de cadenas.strcmp(). strcasecmp() y strnatcmpo 144 Comprobaci6n de la longitud de una cadena con strlen() ............................. 145
C6mo buscar subcadenas y reemplazarlas con funciones de cadena ............... 145 ......... Busqueda de cadenas en cadenas: strstr(). strchr(). strrchr(). stristr() 146
.................... Busqueda de la posicion de una subcadena: strpos(). strrpos() 147 ........................... Sustituci6n de subcadenas: str-replace(). substr-replace() 148
Introduccidn a las expresiones regulares ................................................................. 149 ...................................................................................................... Los fundamentos 150
Conjuntos y clases de caracteres .......................................................................... 150 Repetici6n .................................................................................................................. 152
......................................................................................................... Subexpresiones 152 .................................................................................. Recuento de subexpresiones 152
Anclajes a1 principio o a l final de una cadena ................................................... 152 Bifurcaci6n ................................................................................................................. 153
...................................... Cdmo buscar coincidencias de caracteres especiales 153 Resumen de 10s caracteres especiales ................................................................. 153
.............................................................. Uso de estos elementos en Smart Form 154 Busqueda de subcadenas con expresiones regulares ........................................ 155 Sustituci6n de cadenas con expresiones regulares ................................................ 156 Divisidn de cadenas con expresiones regulares ..................................................... 156 Comparaci6n de funciones de cadenas y funciones
de expresiones regulares ................................................................................... 157 ...................................................................................................... Lecturas adicionales 157
A continuaci6n ............................................................................................................... 157
5 . Reutilizaci6n de c6digo y creaci6n de funciones ............................... 158 ~ P o r qud reutilizar cbdigo? .......................................................................................... 160
.......................................................................................................................... Costes 160 Legibilidad ................................................................................................................. 160
fndice de contenidos
Uniformidad .............................................................................................................. 160 Uso de require() e include() ......................................................................................... 161
Uso de require() ........................................................................................................ 161 Extensiones de nombre de archivo y require() .................................................. 162 Etiquetas de PHP y require() ................................................................................. 162
Uso de require() para plantillas de sitios Web ........................................................ 163 Uso de auto-prepend-file y auto-append-file ................................................. 167 Uso de include() ........................................................................................................ 168
Uso de las funciones de PHP ...................................................................................... 170 Llamada de funciones ............................................................................................. 170 C6mo llamar a una funci6n no definida ............................................................. 171 Funciones y el uso de may6sculas y min6sculas ........................................ 172
~ P o r qu6 deberia crear funciones propias? .............................................................. 173 Estructura b6sica de una funci6n ............................................................................... 173
Designaci6n de funciones ....................................................................................... 174 Parfimetros ....................................................................................................................... 175 Ambito .............................................................................................................................. 177 Llamadas por referencia frente a llamadas por valor ........................................ 179 Final de las funciones .................................................................................................... 180 C6mo devolver valores desde funciones ................................................................. 182
Bloques de c6digo .................................................................................................... 182 Recursi6n ......................................................................................................................... 183 Lecturas adicionales ...................................................................................................... 185 A continuaci6n ............................................................................................................... 185
6 . PHP orientado a objetos ........................................................................ 186 Conceptos orientados a objetos .................................................................................. 187
Clases y objetos ...................................................................................................... 188 Polimorfismo ............................................................................................................. 189 Herencia ..................................................................................................................... 189
Creaci6n de clases, atributos y operaciones en PHP ........................................ 190 Estructura de una clase ........................................................................................... 190 Constructores ............................................................................................................ 191
Instanciaci6n ................................................................................................................... 191 Uso de 10s atributos de clase ....................................................................................... 192 Llamadas a operaciones de clase ............................................................................... 194 Implementaci6n de la herencia en PHP .................................................................... 195
Reemplazamientos ................................................................................................... 196 Herencia m6ltiple .................................................................................................... 197
Diseiio de clases ............................................................................................................. 198 Escritura del c6digo para nuestra clase .................................................................... 199 A continuaci6n ............................................................................................................... 207
Parte I1 . Uso de MySQL ............................................................................ 209
........................................................... 7 . Diseiio de la base de datos Web 210 Conceptos de base de datos relacionales ................................................................. 212
Tablas .................................................................................................................... 212 Columnas ............................................................................................................. 212 Filas ........................................................................................................................ 213 Valores .................................................................................................................. 213 Claves .................................................................................................................... 213 Esquemas .............................................................................................................. 214 Relaciones ............................................................................................................. 214
Como disefiar nuestra base de datos Web ............................................................... 215 Piense en 10s objetos del mundo real que esti modelando ............................ 215 C6mo evitar el almacenamiento de datos redundantes .................................. 216 Uso de valores de columna unicos ....................................................................... 217 Selecci6n de claves 16gicas ..................................................................................... 218 Reflexiones sobre las preguntas que desea formular a la base de datos ..... 218 Evite disefios con varios atributos vacios .......................................................... 219 Resumen de 10s tipos de tablas ............................................................................. 219
Arquitectura de base de datos Web ......................................................................... 220 Arquitectura .................................................................................................................... 220 Lecturas adicionales ..................................................................................................... 221 A continuaci6n ............................................................................................................... 221
8 . Creaci6n de la base de datos Web ....................................................... 222 Nota sobre el uso del monitor de MySQL ................................................................ 224 C6mo registrarse en MySQL ....................................................................................... 225 Creaci6n de bases de datos y usuarios ..................................................................... 226
Creaci6n de la base de datos ................................................................................. 226 Usuarios y privilegios .................................................................................................. 227 Introduction a1 sistema de privilegios de MySQL ................................................. 227
Principio de asignaci6n del privilegio mas bajo ............................................... 227 C6mo configurar usuarios: el comando GRANT ............................................. 228 Tipos y niveles de privilegio ................................................................................. 229 El comando REVOKE .............................................................................................. 231 Ejemplos de uso de GRANT y REVOKE ............................................................. 232
C6mo configurar un usuario para la Web ............................................................... 233 C6mo cerrar la sesidn como administrador ....................................................... 233
Uso de la base de datos correcta ................................................................................ 233 Creaci6n de tablas de base de datos .......................................................................... 234
iCuil es el significado del festo de las palabras clave? .................................. 235 Tipos de columna ................................................................................................... 236 C6mo examinar la base de datos con SHOW y DESCRIBE ............................ 238
Identificadores de MySQL ........................................................................................... 239 Tipos de dato de columna ............................................................................................ 240
Tipos numericos ....................................................................................................... 241
fndice de contenidos
Tipos de fecha y hora ......................................................................................... 242 .................................................................................................. Tipos de cadena 244
Lecturas adicionales ...................................................................................................... 245 A continuaci6n .............................................................................................................. 246
9 . C6mo trabajar con la base de datos de MySQL ................................ 248 iQue es SQL? .................................................................................................................. 250 Inserci6n de datos en la base de datos ...................................................................... 250
............................................................. Recuperaci6n de datos de la base de datos 252 Recuperaci6n de datos con criterios especificos ............................................... 253 Recuperaci6n de datos desde varias tablas ........................................................ 256
............................................................... Combinaciones sencillas de dos tablas 256 .......................................................................... Combinacidn de varias tablas 257
............................................................... Busqueda de filas que no coincidan 258 ................................ Uso de otros nombres para designar tablas: 10s alias 260
.......................................................... Resumen de 10s tipos de combination 260 ........................................................ Recuperaci6n de datos con un orden dado 261
...................................................................... Agrupacidn y agregaci6n de datos 262 .................................................................. C6mo escoger las filas que recuperar 264
....................................................... Actualizaci6n de registros en la base de datos 264 Alteraci6n de tablas tras su creacidn ......................................................................... 265 Eliminacidn de registros de la base de datos .......................................................... 267 Eliminaci6n de tablas .................................................................................................... 267 Eliminaci6n de una base de datos entera ................................................................. 267 Lecturas adicionales ...................................................................................................... 268
............................................................................................................... A continuaci6n 268
....... 10 . Acceso a la base de datos de MySQL desde la Web con PHP 270 . -
Funcionamiento de las arquitecturas de base de datos ........................................ 272 Pasos bdsicos para consultar una base de datos desde la Web ........................... 275 Comprobaci6n y filtrado de datos entrantes ........................................................... 275
............................................................................ C6mo configurar de una conexi6n 277 Selecci6n de una base de datos .................................................................................. 278 Cdmo consultar la base de datos ............................................................................... 279 Recuperacidn de resultados de consulta .................................................................. 279 Desconexi6n de una base de datos ............................................................................ 281 C6mo colocar nueva informacidn en la base de datos ........................................ 281
....................................................................... Otras funciones utiles PHP y MySQL 284 Liberaci6n de recursos ............................................................................................ 285 Creaci6n y eliminacidn de bases de datos .......................................................... 285
Otras interfaces de base de datos y PHP .................................................................. 285 ................................... Uso de una interfaz de base de datos generics: PEAR DB 286
Lecturas adicionales ...................................................................................................... 288 A continuacidn ............................................................................................................... 289
. 11 . MySQL Avanzado ................................................................................ 290 An6lisis detallado del sistema de privilegios ......................................................... 291
La tabla de usuario .................................................................................................. 292 Las tablas db y host ............................................................................................. 294 Las tablas tables-priv y columns-priv ............................................................... 295 Control de acceso: jc6m0 utiliza MySQL las tablas de concesi6n de
privilegios? ..................................................................................................... 296 Actualizaci6n de privilegios: jcu6nd0 surten efecto 10s cambios? .............. 297
C6mo proteger la bases de datos MySQL ................................................................ 297 MySQL desde el punto de vista del sistema operativo ................................... 297
Contraseiias ......................................................................................................... 298 Privilegios de usuario ...................................................................................... 299 Aspectos relacionados con la Web ............................................................... 299
C6mo obtener m6s informaci6n sobre bases de datos .......................................... 300 C6mo obtener informaci6n con SHOW ............................................................ 300 C6mo obtener informaci6n con DESCRIBE ....................................................... 302 Compresi6n del funcionamiento de las consultas con EXPLAIN ................ 303
C6mo agilizar consultas con indices ....................................................................... 306 Trucos de optimizaci6n general ................................................................................. 307
Optimizaci6n del diseiio ........................................................................................ 307 Permisos ..................................................................................................................... 307
Optimizaci6n de tablas ..................................................................................... 307 Uso de indices ........................................................................................................... 308 Uso de valores predeterminados .......................................................................... 308 Uso de conexione permanentes ............................................................................ 308 Otras sugerencias ................................................................................................. 308 Tipos diferentes de tabla ...................................................................................... 308
Carga de datos desdeun xchivo ............................................................................... 309 C6mo realizar una copia de seguridad de la base de datos MySQL ................. 310 Restablecimiento de la base de datos MySQL ........................................................ 310 Lecturas adicionales ...................................................................................................... 311 A continuaci6n ............................................................................................................... 311
Parte I11 . Comercio electrbnico y seguridad ........................................ 313
12 . Creacibn de un sitio Web de comercio electrbnico ......................... 314 j C ~ 6 1 es nuestro objetivo? ........................................................................................... 315 Tipos de sitios Web comerciales ................................................................................ 316
Medios publicitarios en linea ................................................................................ 316 ....................................................... No suministrar informaci6n importante 317
Mala presentaci6n .............................................................................................. 317 No responder a la informaci6n generada por el sitio Web ....................... 317 No actualizar el sitio .......................................................................................... 318
fndice de contenidos
.............................................. No realizar el seguimiento del 6xito del sitio 318 .................................................... Recogida de pedidos de articulos y servicios 319
.................................................................................... Preguntas sin respuesta 321 Confianza ............................................................................................................. 321 Facilidad de uso .................................................................................................. 322 Compatibilidad ................................................................................................... 323
..................................................... Suministro de servicios y articulos digitales 323 C6mo afiadir valor a 10s articulos y servicios ................................................... 324 Recorte de costes ...................................................................................................... 324
....................................................................................................... Riesgos y amenazas 325 Piratas informfiticos ................................................................................................. 325
.................................................... Fracaso en la atraccidn de suficiente negocio 326 Fallos de hardware ................................................................................................... 326
............................. Fallos de alimentacih. comunicaci6n1 red y distribuci6n 327 Competencia .............................................................................................................. 327
.................................................................................................. Errores de software 327 ................................. Cambios en las politicas e impuestos gubernamentales 328
Limites de la capacidad del sistema .................................................................... 328 ............................................................................................... Por qu6 estrategia optar 328
A continuaci6n ............................................................................................................... 329
13 . Aspectos de seguridad relacionados con el comercio electr6nico . 330 Importancia de la informaci6n ................................................................................... 332 Amenazas contra la seguridad ................................................................................... 332
Exposici6n de datos confidenciales ..................................................................... 333 P6rdida o destrucci6n de datos ............................................................................. 335 Modificaci6n de 10s datos ...................................................................................... 335 Errores en el software ...... ...................................................................................... 336
Malas especificaciones t6cnicas ...................................................................... 337 Suposiciones err6neas hechas por 10s desarrolladores ............................. 337 Pruebas incompletas .......................................................................................... 337
Repudio ...................................................................................................................... 338 Equilibrio entre usabilidad. rendimiento. coste y seguridad .............................. 339 Creaci6n de una politica de seguridad ..................................................................... 340
Principios de autenticaci6n .................................................................................... 340 Uso de la autenticaci6n ................................................................................................ 341 Fundamentos de la encriptaci6n ................................................................................ 342
Encriptacih de clave privada ............................................................................... 343 Encriptaci6n de clave publica ..................................................................................... 344 Firmas digitales .............................................................................................................. 344 Certificados digitales .................................................................................................... 345 Servidores Web seguros ............................................................................................... 347 Auditorias y registros ................................................................................................... 348 Cortafuegos ..................................................................................................................... 349
Desarrollo W e b con PHP y MySQL
Copia de seguridad de 10s datos ................................................................................ 349 Copia de seguridad de 10s archivos generales .................................................. 350 Copia de seguridad y restauraci6n de bases de datos MySQL ..................... 350
Seguridad fisica .............................................................................................................. 350 A continuaci6n ............................................................................................................... 351
14 . Implementaci6n de la autenticacibn con PHP y MySQL ............... 352 Identificaci61-1 de visitantes .......................................................................................... 353 Implementaci6n del control de acceso ...................................................................... 355
Almacenamiento de contraseiias ...................................................................... 357 Cifrado de contraseiias ........................................................................................... 360 Protecci6n de piginas multiples ........................................................................... 361
Autenticaci6n bisica ..................................................................................................... 362 Uso de la autenticacidn bisica en PHP ..................................................................... 363 Uso de la autenticaci6n bisica con 10s archivos . htaccess de Apache .............. 365
Autenticaci6n bkica con IIS ................................................................................. 368 Uso de la autenticacibn mod-auth-mysql ............................................................... 371
Instalaci6n de mod-auth-mysql ...................................................................... 371 ~Funcionb? ................................................................................................................. 372 Uso de mod-auth-mysql ........................................................................................ 372
Creaci6n de su propio sistema de autenticaci6n .................................................... 373 Lecturas adicionales ...................................................................................................... 374 A continuation ............................................................................................................... 374
15 . Implementaci6n de transacciones seguras con PHP y MySQL .... 376 Como suministrar transacciones seguras ................................................................ 377
El equipo del usuario .............................................................................................. 378 . . Internet ....................................................................................................................... 380
Su sistema ............................................................................................................... 381 Us0 SSL ......................................................................................................... : ............ 382 Filtrado de la entrada de 10s usuarios ..................................................................... 385 Suministro de un almacenamiento seguro .............................................................. 386 LPor quk almacenar numeros de tarjeta de crkdito? .............................................. 387
........................................................................................ Uso de encriptaci6n en PHP 388 Instalaci6n de GPG .......................................................................................... 388 C6mo probar GPG .............................................................................................. 391
Lecturas adicionales .................................................................................................... 396 A continuaci6n ............................................................................................................ 396
Parte IV . TCcnicas avanzadas de PHP ..................................................... 397
16 . Interacci6n con el sistema de archivos y el servidor ....................... 398 Introducci6n a la carga de archivos ........................................................................... 400
fndice d e contenidos
HTML para la carga de archivos .......................................................................... 400 Un inciso sobre seguridad .................................................................................. 401 C6digo PHP para procesar la tarea de carga del archivo ............................... 402 Problemas habituales .............................................................................................. 407
Uso de las funciones de directorio ............................................................................. 407 Lectura desde directorios ....................................................................................... 408 C6mo obtener informaci6n sobre el directorio actual ..................................... 409 Creaci6n y eliminaci6n de directorios ................................................................. 409
Interaction con el sistema de archivos ..................................................................... 410 C6mo obtener informaci6n de archivo ............................................................... 410 Cdmo cambiar las propiedades de archivo ........................................................ 413 Creaci6n. eliminaci6n y desplazamiento de archivos ..................................... 413
Uso de funciones de ejecuci6n de programas ......................................................... 414 Interacci6n con el entorno: getenv() y putenv() ..................................................... 417 Lecturas adicionales ...................................................................................................... 418 A continuaci6n ............................................................................................................... 418
17 . Uso de funciones de red y de protocolo ........................................ 420 ............................................................................ Descripci6n general de protocolos 421
Envio y recepci6n de correos electr6nicos ............................................................... 422 Uso de otro sitio Web .................................................................................................... 423 Uso de funciones de busqueda de red ...................................................................... 426 Uso de FTP ....................................................................................................................... 430
Uso de FTP para realizar una copia o reproducir un archivo ........................ 430 ................................................................... Conexi6n a1 servidor FTP remoto 433
Inicio de sesi6n en el servidor FTP ................................................................. 433 Comprobaci6n del momento temporal de la actualizaci6n
de archivos ....,....... ..................... : .............................................................. 434 Descarga del archivo ......................................................................................... 435 Cierre de la conexi6n ......................................................................................... 436
Carga de archivos ..................................................................................................... 436 Como evitar 10s tiempos de espera ...................................................................... 437 Uso de otras funciones de FTP .............................................................................. 437
Comunicaciones de red genbricas con CURL ........................................................... 438 Lecturas adicionales .................................................................................................... 440 A continuation ............................................................................................................... 441
18 . Administracih de la fecha y la hora ................................................ 442 C6mo obtener la fecha y la hora en PHP .................................................................. 443
Uso de la funci6n date() .......................................................................................... 443 Marcas de tiempo de Unix ..................................................................................... 445 Uso de la funci6n getdate() .................................................................................... 446 Validaci6n de fechas ................................................................................................ 447
Conversi6n entre formatos de fecha de PHP y MySQL ........................................ 447
Desarrollo W e b colt PHP y MySQL
Cilculos de fecha ........................................................................................................... 449 Uso de funciones de calendario .................................................................................. 450 Lecturas adicionales ...................................................................................................... 451 A continuacidn ............................................................................................................... 451
19 . Creacion de imiigenes .......................................................................... 452 Configuraci6n de compatibilidad de imigenes en PHP ....................................... 453 Formatos de imagen ...................................................................................................... 454
JPEG ............................................................................................................................ 455 PNG ............................................................................................................................. 455 WBMP ....................................................................................................................... 455 GIF ............................................................................................................................... 455
Creaci6n de imigenes ................................................................................................... 456 Creacion de un lienzo .............................................................................................. 458 Dibujo o impresi6n de texto en la imagen .......................................................... 458 Generaci6n del grafico final ................................................................................. 460 Liberaci6n de recursos ............................................................................................ 461
Uso de imigenes generadas automiticamente en otras piginas ....................... 462 Uso de texto y fuentes para crear imigenes ............................................................ 463
Lienzo base ................................................................................................................ 466 C6mo ajustar el texto sobre el b o t h ................................................................... 466 Colocaci6n del texto ................................................................................................ 470 C6mo escribir el texto en el b o t h ...................... ; ................................................. 470 Para terminar .......................................................................................................... 471
Dibujo de figuras y representaci6n grifica de datos ........................................ 471 Otras funciones de imagen .......................................................................................... 478 Lecturas adicionales .................................................................................................. 479 A continuaci6n ................... ........................................................................................ 479
20 . Uso del control de sesi6n en PHP ....................................................... 480 Qu6 es el control de sesi6n .......................................................................................... 481 Funcionalidad de sesi6n bisica .................................................................................. 482
Qu6 es una cookie .................................................................................................... 482 Configuraci6n de cookies desde HTTP ............................................................... 483 Uso de cookies con sesiones ........................................................................... 483 Almacenamiento del Id . de sesi6n ................................................................... 484
Implementaci6n de sesiones simples ........................................................................ 484 Inicio de sesion ....................................................................................................... 484 Registro de variables de sesi6n ............................................................................. 485 Uso de variables de sesi6n ..................................................................................... 485 Anulaci6n del registro de variables y eliminaci6n de la sesi6n .................... 486
Ejemplo de sesi6n sencilla ........................................................................................ 487 Configuraci6n del control de sesi6n ......................................................................... 489 Implementaci6n de autenticaci6n con el control de sesi6n ................................. 490
fndice de contenidos
Lecturas adicionales ...................................................................................................... 496 ............................................................................................................... A continuaci6n 497
.................................................................. 21 . Otras caracteristicas utiles 498 Uso de comillas migicas .............................................................................................. 499 EvaluaciBn de cadenas: eval() ..................................................................................... 500 Finalizaci6n de ejecuci6n: die y exit .......................................................................... 501 Serializaci6n .................................................................................................................... 502
................................................. C6mo obtener informaci6n sobre el entorno PHP 503 C6mo saber qu6 extensiones se han cargado .................................................... 503
......................... Identificaci6n del propietario de la secuencia de comandos 504 C6mo saber cuindo se ha modificado una secuencia
de comandos .................................................................................................. 504 Carga dinimica de extensiones .................................................................................. 504 Modificacih temporal del entorno de ejecuci6n .................................................. 505 C6mo resaltar fuentes ................................................................................................... 506 A continuaci6n ............................................................................................................... 506
Parte V . Creaci6n de proyectos PHP y MySQL practicos ................... 509 22 . Uso de PHP y MySQL en grandes proyectos ................................... 510
Aplicaci6n de ingenieria de software a1 desarrollo Web ...................................... 512 Planificaci6n y ejecuci6n de un proyecto de aplicaci6n Web .............................. 513 Reutilizaci6n de c6digo ................................................................................................ 514
.............................................................................. C6mo escribir c6digo mantenible 514 Estindares de codificaci6n ..................................................................................... 515
...................................................................... Convenciones de-nompnclatura 515 Comentarios de c6digo ..................................................................................... 516 Sangrados ............................................................................................................. 517
.................................................................................................. Divisi6n del c6digo 518 ................................................. Uso de una estructura de directorios estindar 518
C6mo documentar y compartir funciones internas ......................................... 519 Implementaci6n del control de versi6n .................................................................... 519 Selecci6n de un entorno de desarrollo ...................................................................... 520 Documentaci6n de nuestros proyectos ..................................................................... 521 Prototipos ........................................................................................................................ 521
............................................................................... SeparaciBn de 16gica y contenido 522 Optimizaci6n de c6digo ............................................................................................... 523
................................................................................. Uso de optimizaci6n sencilla 523 ........................................................................................... Uso de productos Zend 524
Comprobaciones ............................................................................................................ 524 Lecturas adicionales ...................................................................................................... 526 A continuaci6n ............................................................................................................... 526
Desarrollo Web con PHP y MySQL
Errores de programacibn ............................................................................................. 530 Errores sinticticos .................................................................................................... 530 Errores de ejecuci6n ................................................................................................. 531
Llamadas a funciones que no existen ............................................................ 533 Lectura o escritura de archivos .................................................................... 533 Interacci6n con MySQL u otras bases de datos ........................................... 534 Conexiones a redes de servicios ..................................................................... 535
........................................... Comprobaci6n de entrada de datos incorrecta 536 Errores 16gicos .......................................................................................................... 537
Ayuda de depuraci6n de variables ............................................................................ 538 Niveles de informes de errores ................................................................................... 540 Modificaci6n de 10s parimetros de informes de error .......................................... 541 C6mo desencadenar nuestros propios errores ........................................................ 543 Procesamiento correct0 de errores ............................................................................ 543 A continuaci6n ............................................................................................................... 546
24 . C6mo generar autenticacihn y personalizaci6n de usuarios ......... 548 El problema ................................................................................................................... 550 Componentes de la solucion ....................................................................................... 550
Identificaci6n y personalizaci6n de usuarios .................................................... 550 Almacenamiento de marcadores .......................................................................... 551 Recomendaci61-1 de marcadores ............................................................................ 551
Presentaci6n de la soluci6n ......................................................................................... 551 Implementaci6n de la base de datos ......................................................................... 554 Implementaci6n del sitio bisico ................................................................................. 555 Implementaci6n de la aut~nticaci6n de usuarios ................................................... 558
Registro .................. : .................................................................................................... 558 Conexi6n .................................................................................................................... 563 Desconexi6n .............................................................................................................. 567 Modificaci6n de contrasefias ................................................................................. 568
...................................................... Restablecimiento de contrasefias olvidadas 570 .............. Implementaci6n del almacenamiento y recuperaci6n de marcadores 575
C6mo afiadir marcadores ....................................................................................... 575 .................................................................................... C6mo mostrar marcadores 578
Eliminaci6n de marcadores .................................................................................. 579 Implementaci6n de recomendaciones ...................................................................... 581 Conclusi6n y posibles ampl'iaciones ......................................................................... 585 A continuaci6n .............................................................................................................. 585
25 . Construcci6n de un carro de la compra ........................................ 586 El problema .................................................................................................................... 588 Componentes de la soluci6n ....................................................................................... 588
fndice de contenidos
Generaci6n de un catdogo en linea ..................................................................... 588 C6mo realizar el seguimiento de las compras de un usuario mientras
............................................................................................................. compra 588 Pagos ........................................................................................................................... 589 Interfaz de administracibn ..................................................................................... 589
Presentaci6n de la soluci6n ......................................................................................... 590 Implementaci6n de la base de datos ......................................................................... 594 Implementaci6n del catdogo en linea ...................................................................... 596
.................................................................................... Enumeraci6n de categorias 598 Enumeraci6n de libros en una categoria ............................................................. 601 C6mo mostrar detalles sobre un libro ................................................................. 602
Implementaci6n del carro de la compra ................................................................. 604 Uso de la secuencia de comandos show-cart.php ........................................... 604 C6mo ver el carro ................................................................................................... 607 C6mo afiadir articulos a1 carro ............................................................................. 610 C6mo guardar el carro actualizado ..................................................................... 611 Impresi6n de un resumen en la barra de encabezado ..................................... 612 C6mo salir ................................................................................................................. 613
Implementaci6n del pago ............................................................................................ 618 Implementacidn de una interfaz de administracibn .............................................. 620 Ampliaci6n del proyecto .............................................................................................. 628 Uso de un sistema existente ........................................................................................ 628 A continuaci6n ............................................................................................................... 628
26 . Creaci6n de un sistema de administraci6n de contenidos ............. 630 El problema ..................................................................................................................... 631 Requisitos de la soluci6n .............................................................................................. 632 Modificaci6n del contenido ........................................................................................ 632
Introducci6n de contenido en el sistema ............................................................ 632 FTP ......................................................................................................................... 632 Metodo de carga de archivos ........................................................................... 633 Cambios en linea ................................................................................................ 633
Bases de datos frente a almacenamiento en archivos ...................................... 633 Estructura de documentos ..................................................................................... 634
Uso de metadatos .......................................................................................................... 635 Formato del resultado ................................................................................................... 635 Manipulaci6n de imigenes .......................................................................................... 637 Disefio y presentaci6n de la soluci6n ........................................................................ 639 Disefio de la base de datos ........................................................................................... 640 Implementaci6n ............................................................................................................. 642
Interfaz de usuario ................................................................................................... 642 Sistema ........................................................................................................................ 646 Busquedas .................................................................................................................. 654 Pantalla del editor .................................................................................................... 657
Desarrollo Web con PHP y MySQL
Ampliaci6n del proyecto .............................................................................................. 658 A continuaci6n .............................................................................................................. 659
27 . Creacibn de un servicio de correo electronic0 basado en la Web ... 660 El problema ..................................................................................................................... 661 Componentes de la soluci6n ....................................................................................... 662 Presentaci6n de la soluci6n ......................................................................................... 663 Configuraci6n de la base de datos ............................................................................. 665 Arquitectura de secuencias de comandos ................................................................ 667 Conexi6n y desconexi6n .............................................................................................. 673 Configuraci6n de cuentas ............................................................................................ 676
Creaci6n de una nueva cuenta .............................................................................. 678 Modificaci6n de una cuenta existente ................................................................ 680 Eliminaci6n de una cuenta ..................................................................................... 680
Lectura de correo ........................................................................................................ 681 Selecci6n de una cuenta ......................................................................................... 681 C6mo ver 10s contenidos del buz6n de correo ................................................ 684 Lectura de un mensaje de correo .......................................................................... 687 C6mo ver encabezados de mensaje ..................................................................... 690 Eliminaci6n de correo ............................................................................................. 691
Envio de correo ............................................................................................................... 692 Envio de un nuevo mensaje ................................................................................... 692 C6mo responder o reenviar correo ...................................................................... 694
Ampliaci6n del proyecto .............................................................................................. 695 A continuaci6n ............................................................................................................... 696
28 . Creaci6n de un gestor de listas de correo ........................................ 698 . . El problema ..................................................................................................................... 699
Componentes de la soluci6n ....................................................................................... 700 Definici6n de una base de datos de listas y suscriptores ............................... 700 Carga de archivos ..................................................................................................... 701 Envio de correo con archivos adjuntos ............................................................... 701
Presentaci6n de la soluci6n ........................................................................................ 702 Definici6n de la base de datos .................................................................................... 704 Arquitectura de la secuencia de comandos ............................................................. 706 Implementaci6n del inicio de sesi6n ......................................................................... 714
Creaci6n de una nueva cuenta .............................................................................. 715 Conexi6n .................................................................................................................... 717
Implementaci6n de funciones de usuario ................................................................ 720 C6mo ver las listas ................................................................................................... 720 C6mo ver informadm de listas .......................................................................... 725
................................................................................... C6mo ver archivos de listas 727 ...................................................... Suscripciones y anulaci6n de suscripciones 728
Modificaci6n de la configuraci6n de una cuenta .............................................. 729
fndice de contenidos
................................................................................. Modificaci6n de contraseiias 730 .............................................................................................................. Desconexidn 732
...................................................... Implementacidn de funciones administrativas 732 Creaci6n de una nueva lista .................................................................................. 733
............................................................. Carga de un nuevo boletin informativo 735 ................................................... Procesamiento de la carga de varios archivos 737
................................................................... Vista previa del boletin informativo 742 Envio del mensaje .................................................................................................... 743
Ampliaci6n del proyecto .............................................................................................. 749 A continuaci6n ........................................................................................................... 749
29 . Creaci6n de foros Web .................................................................... 750 El problema ..................................................................................................................... 752 Componentes de la soluci6n ....................................................................................... 752 Presentaci6n de la soluci6n ......................................................................................... 754 Diseiio de la base de datos ........................................................................................... 755 C6mo ver el Arb01 de articulos .................................................................................... 758
........................................................................................... Despliegue y repliegue 760 .................................................................................... C6mo mostrar 10s articulos 763
......................................................................................... Uso de la clase treenode 764 Cdmo ver articulos individuales ................................................................................ 770 Cdmo afiadir nuevos articulos .................................................................................... 772 Ampliaciones .................................................................................................................. 778 Uso de un sistema existente ........................................................................................ 779 A continuacidn ............................................................................................................... 779
30 . Generaci6n de documentos personalizados en PDF ....................... 780 . El problema ................................................................................................................... 781
Evaluacidn de formatos de documento .................................................................... 782 ............................................................................................................................ Papel 782 ........................................................................................................................... ASCII 783
HTML .......................................................................................................................... 783 Formatos de procesadores de texto ..................................................................... 783 Formato de texto enriquecido ............................................................................... 784 Postscript ................................................................................................................... 785 Formato de documento portable .......................................................................... 785
Componentes de la soluci6n ....................................................................................... 786 Sistema de preguntas y respuestas ...................................................................... 786
............................................................. Software de generaci6n de documentos 787 Software para crear una plantilla RTF ........................................................... 787 Software para crear una plantilla PDF .......................................................... 787
..................................... Software para crear PDF mediante programaci6n 788 Presentaci6n de la solucion ......................................................................................... 788
.......................................................................... C6mo responder a las preguntas 790
Desarrollo Web con PHP y MySQL
Cdmo calificar las respuestas ................................................................................ 792 Generacidn de un certificado RTF ........................................................................ 794 Generacidn de un certificado PDF a partir de una plantilla .......................... 797 Generacidn de un documento PDF por medio de PDFlib ............................... 801 Una secuencia de comandos Hello World para PDFlib .................................. 801 Generacidn de nuestro certificado con PDFlib .................................................. 805
Problemas con 10s encabezados ................................................................................. 812 Ampliacidn del proyecto .............................................................................................. 813 Lecturas adicionales ...................................................................................................... 813
31 . Conexibn a servicios Web con XML y SOAP .................................. 814 El problema ..................................................................................................................... 815 Cdmo entender XML ..................................................................................................... 816 Servicios Web ................................................................................................................. 820
SOAP ........................................................................................................................... 820 WSDL .......................................................................................................................... 821
Componentes de la solucidn ..................................................................................... 822 Creacidn de un carro de la compra ...................................................................... 822 Uso de las interfaces de servicios Web de Amazon ........................................ 822 Andisis de XML ................................................................................................. 823 Uso de SOAP con PHP ............................................................................................ 823 Almacenamiento en cache ...................................................................................... 824
Presentacidn de la solucidn ........................................................................................ 824 Aplicacidn principal .............................................................................................. 828 Cdmo mostrar 10s libros de una categoria ......................................................... 834 Obtencidn de un AmazonResultSet .................................................................. 836 Uso de XML sobre HTTP ........................................................................................ 844 Uso de SOAP ........,....... .. .......................................................................................... 850 Almacenamiento de datos en cache ..................................................................... 852 Creacidn del carro de la compra ........................................................................... 854 Cdmo salir a Amazon .............................................................................................. 857
Instalacidn del cddigo del proyecto ........................................................................... 858 Ampliacidn del proyecto .............................................................................................. 859 Lecturas adicionales ...................................................................................................... 859
Parte VI . ApCndices .................................................................................... 861
A . Instalacibn de PHP y MySQL .............................................................. 862 Ejecucidn de PHP como interprete CGI o como mddulo ..................................... 864 Instalacidn de Apache. PHP y MySQL en Unix ...................................................... 864
Instalacidn binaria .................................................................................................. 865 Instalacidn desde cddigo fuente ....................................................................