4. Tabla de contenidos
Prefacio ........................................................................................................................................................i
I. Conceptos Básicos ..................................................................................................................................1
1. Introducción ...................................................................................................................................1
Qué es PHP? .............................................................................................................................2
Qué se puede hacer con PHP? ..................................................................................................2
2. Instalación ......................................................................................................................................5
Bajándose la última versión......................................................................................................6
Instalación en sistemas UNIX ..................................................................................................6
Instrucciones Rápidas de Instalación (Versión Módulo de Apache) ..............................6
Configuración..................................................................................................................7
Módulo del Apache.........................................................................................................7
Módulo fhttpd .................................................................................................................7
CGI version.....................................................................................................................7
Opciones de soporte para Base de Datos ........................................................................8
Adabas D ...............................................................................................................8
dBase .....................................................................................................................8
filePro ....................................................................................................................8
mSQL ....................................................................................................................8
MySQL..................................................................................................................9
iODBC...................................................................................................................9
OpenLink ODBC...................................................................................................9
Oracle ....................................................................................................................9
PostgreSQL ...........................................................................................................9
Solid ....................................................................................................................10
Sybase..................................................................................................................10
Sybase-CT ...........................................................................................................10
Velocis .................................................................................................................10
Una librería a medida de ODBC .........................................................................11
ODBC Unificado .................................................................................................11
LDAP...................................................................................................................11
Otras opciones de configuración...................................................................................11
--with-mcrypt=DIR.............................................................................................12
--enable-sysvsem .................................................................................................12
--enable-sysvshm.................................................................................................12
--with-xml............................................................................................................12
--enable-maintainer-mode ...................................................................................12
--with-system-regex.............................................................................................12
--with-config-file-path .........................................................................................13
--with-exec-dir.....................................................................................................13
--enable-debug.....................................................................................................13
--enable-safe-mode..............................................................................................13
--enable-track-vars...............................................................................................13
--enable-magic-quotes .........................................................................................14
--enable-debugger................................................................................................14
--enable-discard-path...........................................................................................14
iv
5. --enable-bcmath...................................................................................................14
--enable-force-cgi-redirect ..................................................................................14
--disable-short-tags..............................................................................................15
--enable-url-includes ...........................................................................................15
--disable-syntax-hl...............................................................................................15
CPPFLAGS y LDFLAGS ...................................................................................15
Construyendo ................................................................................................................16
Probando .......................................................................................................................16
Comprobando la velocidad ...........................................................................................16
Instalación en sistemas Windows 95/98/NT...........................................................................16
Pasos Generales de Instalación .....................................................................................16
Windows 95/98/NT y PWS/IIS 3..................................................................................17
Windows NT e IIS 4 .....................................................................................................18
Windows 9x/NT y Apache 1.3.x...................................................................................19
Omni HTTPd 2.0b1 para Windows ..............................................................................19
Módulos del PHP ..........................................................................................................19
¿Problemas?............................................................................................................................20
Lea las PMF (FAQ) .......................................................................................................20
Informes de error...........................................................................................................20
Otros problemas ............................................................................................................20
3. Configuración...............................................................................................................................22
El archivo de configuración ....................................................................................................23
Directivas Generales de Configuración.........................................................................23
Directivas de Configuración de Correo.........................................................................27
Directivas de Configuración de Modo Seguro ..............................................................28
Directivas de Configuración del Debugger ...................................................................28
Directivas de Carga de Extensiones ..............................................................................28
Directivas de Configuración de MySQL.......................................................................29
Directivas de Configuración de mSQL .........................................................................29
Directivas de Configuración de Postgres ......................................................................29
SESAM Configuration Directives.................................................................................30
Directivas de Configuración de Sybase ........................................................................30
Directivas de Configuración de Sybase-CT ..................................................................31
Directivas de Configuración de Informix......................................................................32
Directivas de Configuración de Matemática BC...........................................................33
Directivas de Configuración de Capacidades de los Navegadores................................33
Directivas Unificadas de Configuración de ODBC.......................................................33
4. Seguridad......................................................................................................................................35
Binarios CGI...........................................................................................................................36
Posibles ataques ............................................................................................................36
Caso 1: solamente se sirven ficheros publicos ..............................................................37
Caso 2: usando --enable-force-cgi-redirect...................................................................37
Caso 3: Usando doc_root or user_dir............................................................................37
Caso 4: Analizador PHP fuera del arbol web. ..............................................................38
Modulo Apache ......................................................................................................................38
v
6. II. Referencia del Lenguaje.....................................................................................................................40
5. Síntaxis básica..............................................................................................................................40
Saliendo de HTML .................................................................................................................41
Separación de instrucciones ...................................................................................................42
Comentarios............................................................................................................................43
6. Types ............................................................................................................................................44
Enteros....................................................................................................................................45
Números en punto flotante......................................................................................................45
Cadenas...................................................................................................................................45
Conversión de cadenas..................................................................................................47
Arrays .....................................................................................................................................48
Arrays unidimensionales...............................................................................................48
Arrays Multidimensionales...........................................................................................49
Objetos....................................................................................................................................50
Inicialización de Objetos...............................................................................................51
Type juggling..........................................................................................................................51
Forzado de tipos............................................................................................................52
7. Variables.......................................................................................................................................54
Conceptos Básicos..................................................................................................................55
Variables predefinidas.............................................................................................................56
Variables de Apache......................................................................................................56
Variables de entorno......................................................................................................58
Variables de PHP...........................................................................................................58
Ambito de las variables ..........................................................................................................59
Variables variables..................................................................................................................61
Variables externas a PHP........................................................................................................62
Formularios HTML (GET y POST) .............................................................................62
IMAGE SUBMIT variable names.......................................................................63
Cookies HTTP ..............................................................................................................63
Variables de entorno......................................................................................................64
Puntos en los nombres de variables de entrada.............................................................64
Determinando los tipos de variables .............................................................................65
8. Constantes ....................................................................................................................................66
Sintaxis ...................................................................................................................................67
Constantes predefinidas ..........................................................................................................68
9. Expresiones ..................................................................................................................................69
10. Operadores .................................................................................................................................73
Operadores Aritméticos..........................................................................................................74
Operadores de Asignación......................................................................................................74
Operadores Bit a bit................................................................................................................74
Operadores de Comparación ..................................................................................................75
Operador de ejecución............................................................................................................76
Operadores de Incremento/decremento ..................................................................................76
Operadores Lógicos................................................................................................................77
Precedencia de Operadores.....................................................................................................77
Operadores de Cadenas ..........................................................................................................78
11. Estructuras de Control................................................................................................................80
if ............................................................................................................................................81
vi
7. else .......................................................................................................................................81
elseif ...................................................................................................................................82
Sintaxis Alternativa de Estructuras de Control.......................................................................82
while .....................................................................................................................................83
do..while .............................................................................................................................84
for ..........................................................................................................................................85
foreach .................................................................................................................................86
break .....................................................................................................................................88
continue ...............................................................................................................................89
switch ...................................................................................................................................90
require() ..................................................................................................................................92
include()..................................................................................................................................93
require_once().........................................................................................................................96
include_once() ........................................................................................................................98
12. Funciones .................................................................................................................................100
Funciones definidas por el usuario .......................................................................................101
Parámetros de las funciones .................................................................................................101
Pasar parámetros por referencia..................................................................................101
Parámetros por defecto ...............................................................................................102
Lista de longitud variable de parámetros ....................................................................103
Devolver valores ...................................................................................................................103
old_function ....................................................................................................................104
Funciones variable................................................................................................................104
13. Clases y Objetos.......................................................................................................................106
class ...................................................................................................................................107
14. References Explained...............................................................................................................110
What References Are............................................................................................................111
What References Do.............................................................................................................111
What References Are Not.....................................................................................................112
Passing by Reference............................................................................................................112
Returning References ...........................................................................................................113
Unsetting References............................................................................................................114
Spotting References..............................................................................................................114
global References.....................................................................................................114
$this ..........................................................................................................................115
III. Características.................................................................................................................................116
15. Manejando errores....................................................................................................................116
16. Creando y manipulando imágenes ...........................................................................................121
17. Autentificación HTTP con PHP ...............................................................................................123
18. Cookies.....................................................................................................................................126
19. Manejo de envío de ficheros.....................................................................................................128
Envío de archivos con el método POST ...............................................................................129
Errores comunes ...................................................................................................................131
Envío de multiples ficheros ..................................................................................................131
Soporte del método PUT ......................................................................................................132
20. Usando archivos remotos .........................................................................................................134
21. Manejando conexiones.............................................................................................................137
vii
8. 22. Conexiones persistentes a bases de datos.................................................................................139
23. Modo Seguro (Safe Mode).......................................................................................................142
Funciones restringidas/inhabilitadas por Modo Seguro .......................................................144
24. Using PHP from the command line .........................................................................................149
IV. Referencia de las Funciones ...........................................................................................................162
I. Funciones específicas de Apache................................................................................................162
apache_child_terminate........................................................................................................163
apache_lookup_uri ...............................................................................................................163
apache_note ..........................................................................................................................164
apache_setenv .......................................................................................................................164
ascii2ebcdic ..........................................................................................................................164
ebcdic2ascii ..........................................................................................................................164
getallheaders .........................................................................................................................165
virtual....................................................................................................................................165
II. Funciones de matrices ...............................................................................................................167
array_change_key_case ........................................................................................................169
array_chunk ..........................................................................................................................169
array_count_values...............................................................................................................170
array_diff ..............................................................................................................................171
array_fill ...............................................................................................................................172
array_filter ............................................................................................................................172
array_flip...............................................................................................................................174
array_intersect ......................................................................................................................174
array_key_exists ...................................................................................................................175
array_keys.............................................................................................................................175
array_map .............................................................................................................................176
array_merge_recursive .........................................................................................................179
array_merge ..........................................................................................................................180
array_multisort .....................................................................................................................181
array_pad ..............................................................................................................................182
array_pop..............................................................................................................................183
array_push ............................................................................................................................183
array_rand.............................................................................................................................184
array_reduce .........................................................................................................................185
array_reverse ........................................................................................................................185
array_search..........................................................................................................................186
array_shift.............................................................................................................................186
array_slice.............................................................................................................................187
array_splice...........................................................................................................................188
array_sum .............................................................................................................................189
array_unique .........................................................................................................................190
array_unshift.........................................................................................................................191
array_values..........................................................................................................................192
array_walk ............................................................................................................................192
array......................................................................................................................................193
arsort .....................................................................................................................................194
asort ......................................................................................................................................194
viii
9. compact.................................................................................................................................195
count .....................................................................................................................................195
current...................................................................................................................................196
each.......................................................................................................................................196
end ........................................................................................................................................198
extract ...................................................................................................................................198
in_array.................................................................................................................................199
key ........................................................................................................................................200
krsort.....................................................................................................................................200
ksort ......................................................................................................................................201
list .........................................................................................................................................201
natcasesort ............................................................................................................................202
natsort ...................................................................................................................................202
next .......................................................................................................................................203
pos.........................................................................................................................................204
prev .......................................................................................................................................204
rango .....................................................................................................................................204
reset.......................................................................................................................................205
rsort.......................................................................................................................................205
shuffle ...................................................................................................................................205
sizeof.....................................................................................................................................206
sort ........................................................................................................................................206
uasort ....................................................................................................................................206
uksort ....................................................................................................................................207
usort ......................................................................................................................................207
III. Funciones Aspell [deprecated].................................................................................................209
aspell_check-raw ..................................................................................................................210
aspell_check .........................................................................................................................210
aspell_new ............................................................................................................................210
aspell_suggest.......................................................................................................................211
IV. Funciones matemáticas de precisión arbitraria BCMath .........................................................212
bcadd.....................................................................................................................................213
bccomp .................................................................................................................................213
bcdiv .....................................................................................................................................213
bcmod ...................................................................................................................................213
bcmul ....................................................................................................................................213
bcpow....................................................................................................................................214
bcscale ..................................................................................................................................214
bcsqrt ....................................................................................................................................214
bcsub.....................................................................................................................................214
V. Funciones de compresión Bzip2 ...............................................................................................216
bzclose ..................................................................................................................................218
bzcompress ...........................................................................................................................218
bzdecompress .......................................................................................................................218
bzerrno..................................................................................................................................219
bzerror...................................................................................................................................219
bzerrstr..................................................................................................................................220
bzflush...................................................................................................................................220
ix
10. bzopen...................................................................................................................................220
bzread ...................................................................................................................................221
bzwrite ..................................................................................................................................221
VI. Funciones de calendario...........................................................................................................223
cal_days_in_month...............................................................................................................225
cal_from_jd...........................................................................................................................225
cal_info .................................................................................................................................225
cal_to_jd ...............................................................................................................................225
easter_date ............................................................................................................................225
easter_days ...........................................................................................................................226
FrenchToJD ..........................................................................................................................227
GregorianToJD .....................................................................................................................227
JDDayOfWeek......................................................................................................................228
JDMonthName .....................................................................................................................228
JDToFrench ..........................................................................................................................229
JDToGregorian .....................................................................................................................229
JDToJewish...........................................................................................................................229
JDToJulian ............................................................................................................................229
jdtounix.................................................................................................................................229
JewishToJD...........................................................................................................................230
JulianToJD ............................................................................................................................230
unixtojd.................................................................................................................................230
VII. Funciones del API de CCVS ..................................................................................................232
ccvs_add ...............................................................................................................................233
ccvs_auth ..............................................................................................................................233
ccvs_command .....................................................................................................................233
ccvs_count ............................................................................................................................233
ccvs_delete ...........................................................................................................................234
ccvs_done .............................................................................................................................234
ccvs_init................................................................................................................................234
ccvs_lookup..........................................................................................................................235
ccvs_new ..............................................................................................................................235
ccvs_report ...........................................................................................................................235
ccvs_return ...........................................................................................................................236
ccvs_reverse..........................................................................................................................236
ccvs_sale...............................................................................................................................236
ccvs_status............................................................................................................................237
ccvs_textvalue ......................................................................................................................237
ccvs_void ..............................................................................................................................237
VIII. soporte de las funciones COM para Windows ......................................................................239
COM .....................................................................................................................................240
VARIANT.............................................................................................................................241
com_addref ...........................................................................................................................242
com_get ................................................................................................................................242
com_invoke...........................................................................................................................243
com_isenum..........................................................................................................................243
com_load_typelib .................................................................................................................243
com_load ..............................................................................................................................243
x