1. Manual de PHP
Stig Sæther Bakken
Alexander Aulbach
Egon Schmid
Jim Winstead
Lars Torben Wilson
Rasmus Lerdorf
Zeev Suraski
Andrei Zmievski
Jouni Ahto
Editado por
Rafael Martínez
5. Tabla de contenidos
Prefacio ..................................................................................................................................................................................41
Sobre este Manual.........................................................................................................................................................41
Sobre la traducción .......................................................................................................................................................41
I. Conceptos Básicos .............................................................................................................................................................43
1. Introducción ..............................................................................................................................................................43
Qué es PHP?........................................................................................................................................................45
Qué se puede hacer con PHP?.............................................................................................................................45
Corta historia de PHP..........................................................................................................................................45
2. Instalación .................................................................................................................................................................47
Bajándose la última versión ................................................................................................................................49
Instalación en sistemas UNIX.............................................................................................................................49
Instrucciones Rápidas de Instalación (Versión Módulo de Apache) .........................................................49
Configuración ............................................................................................................................................49
Módulo del Apache....................................................................................................................................50
Módulo fhttpd ............................................................................................................................................50
CGI version................................................................................................................................................50
Opciones de soporte para Base de Datos...................................................................................................50
Adabas D..........................................................................................................................................50
dBase................................................................................................................................................50
filePro ...............................................................................................................................................50
mSQL...............................................................................................................................................51
MySQL.............................................................................................................................................51
iODBC .............................................................................................................................................51
OpenLink ODBC .............................................................................................................................51
Oracle ...............................................................................................................................................51
PostgreSQL ......................................................................................................................................52
Solid .................................................................................................................................................52
Sybase ..............................................................................................................................................52
Sybase-CT........................................................................................................................................52
Velocis ..............................................................................................................................................52
Una librería a medida de ODBC......................................................................................................52
ODBC Unificado..............................................................................................................................53
LDAP ...............................................................................................................................................53
Otras opciones de configuración................................................................................................................53
–with-mcrypt=DIR ..........................................................................................................................53
–enable-sysvsem ..............................................................................................................................53
–enable-sysvshm ..............................................................................................................................53
–with-xml .........................................................................................................................................53
–enable-maintainer-mode.................................................................................................................54
–with-system-regex ..........................................................................................................................54
–with-config-file-path.......................................................................................................................54
–with-exec-dir ..................................................................................................................................54
–enable-debug ..................................................................................................................................54
–enable-safe-mode ...........................................................................................................................54
–enable-track-vars ............................................................................................................................55
–enable-magic-quotes ......................................................................................................................55
–enable-debugger .............................................................................................................................55
–enable-discard-path ........................................................................................................................55
–enable-bcmath ................................................................................................................................55
–enable-force-cgi-redirect ................................................................................................................55
–disable-short-tags ...........................................................................................................................56
–enable-url-includes.........................................................................................................................56
–disable-syntax-hl ............................................................................................................................56
5
6. CPPFLAGS y LDFLAGS ................................................................................................................56
Construyendo.............................................................................................................................................56
Probando....................................................................................................................................................56
Comprobando la velocidad ........................................................................................................................56
Instalación en sistemas Windows 95/98/NT .......................................................................................................57
Pasos Generales de Instalación ..................................................................................................................57
Windows 95/98/NT y PWS/IIS 3 ..............................................................................................................57
Windows NT e IIS 4 ..................................................................................................................................58
Windows 9x/NT y Apache 1.3.x................................................................................................................59
Omni HTTPd 2.0b1 para Windows ...........................................................................................................59
Módulos del PHP.......................................................................................................................................59
¿Problemas? ........................................................................................................................................................60
Lea las PMF (FAQ)....................................................................................................................................60
Informes de error .......................................................................................................................................60
Otros problemas.........................................................................................................................................60
3. Configuración............................................................................................................................................................61
El archivo de configuración.................................................................................................................................63
Directivas Generales de Configuración .....................................................................................................63
Directivas de Configuración de Correo......................................................................................................66
Directivas de Configuración de Modo Seguro...........................................................................................66
Directivas de Configuración del Debugger................................................................................................67
Directivas de Carga de Extensiones...........................................................................................................67
Directivas de Configuración de MySQL....................................................................................................67
Directivas de Configuración de mSQL......................................................................................................67
Directivas de Configuración de Postgres ...................................................................................................68
SESAM Configuration Directives .............................................................................................................68
Directivas de Configuración de Sybase .....................................................................................................68
Directivas de Configuración de Sybase-CT...............................................................................................69
Directivas de Configuración de Informix ..................................................................................................69
Directivas de Configuración de Matemática BC .......................................................................................70
Directivas de Configuración de Capacidades de los Navegadores ............................................................70
Directivas Unificadas de Configuración de ODBC ...................................................................................70
4. Seguridad ..................................................................................................................................................................73
Binarios CGI .......................................................................................................................................................75
Posibles ataques .........................................................................................................................................75
Caso 1: solamente se sirven ficheros publicos...........................................................................................75
Caso 2: usando –enable-force-cgi-redirect ................................................................................................76
Caso 3: Usando doc_root or user_dir ........................................................................................................76
Caso 4: Analizador PHP fuera del arbol web. ...........................................................................................76
Modulo Apache ...................................................................................................................................................77
II. Referencia del Lenguaje..................................................................................................................................................79
5. Sintaxis básica...........................................................................................................................................................79
Saliendo de HTML..............................................................................................................................................81
Separación de instrucciones ................................................................................................................................81
Comentarios ........................................................................................................................................................81
6. Types .........................................................................................................................................................................83
Enteros.................................................................................................................................................................85
Números en punto flotante ..................................................................................................................................85
Cadenas ...............................................................................................................................................................85
Conversión de cadenas...............................................................................................................................87
Arrays ..................................................................................................................................................................87
Arrays unidimensionales ...........................................................................................................................87
Arrays Multidimensionales........................................................................................................................88
Objetos ................................................................................................................................................................89
Inicialización de Objetos ...........................................................................................................................89
6
7. Type juggling.......................................................................................................................................................90
Forzado de tipos.........................................................................................................................................90
7. Variables....................................................................................................................................................................93
Conceptos Básicos...............................................................................................................................................95
Variables predefinidas .........................................................................................................................................95
Variables de Apache ..................................................................................................................................96
Variables de entorno ..................................................................................................................................97
Variables de PHP .......................................................................................................................................97
Ambito de las variables .......................................................................................................................................98
Variables variables.............................................................................................................................................100
Variables externas a PHP...................................................................................................................................100
Formularios HTML (GET y POST) ........................................................................................................100
IMAGE SUBMIT variable names..................................................................................................101
Cookies HTTP .........................................................................................................................................101
Variables de entorno ................................................................................................................................102
Puntos en los nombres de variables de entrada........................................................................................102
Determinando los tipos de variables........................................................................................................102
8. Constantes ...............................................................................................................................................................103
9. Expresiones .............................................................................................................................................................107
10. Operadores ............................................................................................................................................................111
Operadores Aritméticos.....................................................................................................................................113
Operadores de Asignación ................................................................................................................................113
Operadores Bit a bit...........................................................................................................................................113
Operadores de Comparación .............................................................................................................................114
Operador de ejecución.......................................................................................................................................114
Operadores de Incremento/decremento.............................................................................................................115
Operadores Lógicos...........................................................................................................................................115
Precedencia de Operadores ...............................................................................................................................115
Operadores de Cadenas .....................................................................................................................................116
11. Estructuras de Control...........................................................................................................................................117
if.......................................................................................................................................................................119
else ..................................................................................................................................................................119
elseif..............................................................................................................................................................119
Sintaxis Alternativa de Estructuras de Control .................................................................................................120
while ................................................................................................................................................................120
do..while .......................................................................................................................................................121
for ....................................................................................................................................................................122
foreach............................................................................................................................................................123
break ................................................................................................................................................................124
continue..........................................................................................................................................................125
switch..............................................................................................................................................................125
require()............................................................................................................................................................127
include()............................................................................................................................................................128
require_once()..................................................................................................................................................131
include_once() ..................................................................................................................................................133
12. Funciones ..............................................................................................................................................................135
Funciones definidas por el usuario ....................................................................................................................137
Parámetros de las funciones ..............................................................................................................................137
Pasar parámetros por referencia...............................................................................................................137
Parámetros por defecto ............................................................................................................................138
Lista de longitud variable de parámetros.................................................................................................139
Devolver valores................................................................................................................................................139
old_function.................................................................................................................................................139
Funciones variable.............................................................................................................................................139
13. Clases y Objetos....................................................................................................................................................141
class ................................................................................................................................................................143
7
8. 14. References Explained............................................................................................................................................145
What are References..........................................................................................................................................147
What do References ..........................................................................................................................................147
What aren’t References .....................................................................................................................................147
Returning References ........................................................................................................................................147
Unsetting References.........................................................................................................................................148
Spotting the Reference ......................................................................................................................................148
global References..................................................................................................................................148
$this.......................................................................................................................................................148
III. Características..............................................................................................................................................................149
15. Manejando errores ................................................................................................................................................149
16. Creando imágenes GIF .........................................................................................................................................153
17. Autentificación HTTP con PHP............................................................................................................................157
18. Cookies .................................................................................................................................................................161
19. El envío de archivos ..............................................................................................................................................165
Envío de archivos con el método POST............................................................................................................167
Errores comunes................................................................................................................................................167
Envío de más de un archivo...............................................................................................................................167
Soporte del método PUT...................................................................................................................................168
20. Usando archivos remotos ......................................................................................................................................171
21. Manejando conexiones..........................................................................................................................................175
22. Conexiones persistentes a bases de datos .............................................................................................................179
IV. Referencia de las Funciones ........................................................................................................................................183
I. Funciones específicas de Apache ............................................................................................................................183
apache_lookup_uri ............................................................................................................................................185
apache_note.......................................................................................................................................................185
getallheaders......................................................................................................................................................185
virtual ................................................................................................................................................................186
II. Funciones de matrices ............................................................................................................................................187
array...................................................................................................................................................................189
array_count_values............................................................................................................................................189
array_flip ...........................................................................................................................................................189
array_keys .........................................................................................................................................................190
array_merge.......................................................................................................................................................190
array_pad...........................................................................................................................................................191
array_pop...........................................................................................................................................................191
array_push .........................................................................................................................................................192
array_reverse .....................................................................................................................................................192
array_shift..........................................................................................................................................................193
array_slice .........................................................................................................................................................193
array_splice .......................................................................................................................................................194
array_unshift......................................................................................................................................................195
array_values.......................................................................................................................................................195
array_walk .........................................................................................................................................................196
arsort..................................................................................................................................................................196
asort ...................................................................................................................................................................197
compact .............................................................................................................................................................197
count ..................................................................................................................................................................198
current................................................................................................................................................................198
each....................................................................................................................................................................199
end .....................................................................................................................................................................200
extract ................................................................................................................................................................200
in_array..............................................................................................................................................................201
key .....................................................................................................................................................................201
krsort..................................................................................................................................................................202
8
9. ksort ...................................................................................................................................................................202
list ......................................................................................................................................................................202
next ....................................................................................................................................................................203
pos .....................................................................................................................................................................203
prev....................................................................................................................................................................204
rango..................................................................................................................................................................204
reset ...................................................................................................................................................................204
rsort....................................................................................................................................................................204
shuffle ................................................................................................................................................................205
sizeof .................................................................................................................................................................205
sort .....................................................................................................................................................................205
uasort .................................................................................................................................................................206
uksort.................................................................................................................................................................206
usort ...................................................................................................................................................................207
III. Funciones Ortográficas .........................................................................................................................................209
aspell_new.........................................................................................................................................................211
aspell_check ......................................................................................................................................................211
aspell_check-raw...............................................................................................................................................211
aspell_suggest....................................................................................................................................................212
IV. Funciones matemáticas de precisión arbitraria.....................................................................................................213
bcadd .................................................................................................................................................................215
bccomp ..............................................................................................................................................................215
bcdiv ..................................................................................................................................................................215
bcmod................................................................................................................................................................215
bcmul.................................................................................................................................................................215
bcpow ................................................................................................................................................................216
bcscale ...............................................................................................................................................................216
bcsqrt .................................................................................................................................................................216
bcsub..................................................................................................................................................................216
V. Bzip2 Compression Functions ...............................................................................................................................217
bzclose...............................................................................................................................................................219
bzcompress ........................................................................................................................................................219
bzdecompress ....................................................................................................................................................219
bzerrno...............................................................................................................................................................220
bzerror ...............................................................................................................................................................220
bzerrstr...............................................................................................................................................................220
bzflush ...............................................................................................................................................................221
bzopen ...............................................................................................................................................................221
bzread ................................................................................................................................................................221
bzwrite...............................................................................................................................................................222
VI. Funciones de calendario .......................................................................................................................................223
JDToGregorian ..................................................................................................................................................225
GregorianToJD ..................................................................................................................................................225
JDToJulian.........................................................................................................................................................225
JulianToJD.........................................................................................................................................................225
JDToJewish........................................................................................................................................................226
JewishToJD........................................................................................................................................................226
JDToFrench .......................................................................................................................................................226
FrenchToJD .......................................................................................................................................................226
JDMonthName ..................................................................................................................................................226
JDDayOfWeek...................................................................................................................................................227
easter_date .........................................................................................................................................................227
easter_days ........................................................................................................................................................228
VII. CCVS API Functions ..........................................................................................................................................229
231
VIII. soporte de las funciones COM para Windows...................................................................................................233
9