Desarrollo Web Con PHP y MySQL

888

Transcript of Desarrollo Web Con PHP y MySQL

  • 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 ....................................................................