Home

Manual de PHP

image

Contents

1. External variables are no longer registered in the global scope by default In other words as of PHP 4 2 0 http www php net release_4_2_0 php the PHP directive register globals is off by default in php ini The preferred method of accessing these values is via the autoglobal arrays mentioned above Older scripts books and tutorials may rely on this directive being on If on for example one could use id from the URL http www example com foo php id 42 Whether on or off _GET id is available For more details on these changes see the section on predefined variables and links therein What s next With what you know now you should be able to understand most of the manual and also the various example scripts available in the example archives You can also find other examples on the php net websites in the links section http www php net links php 11 Cap tulo 3 Instalaci n Cap tulo 3 Instalaci n Baj ndose la ltima versi n El c digo fuente y las distribuciones binarias para algunas plataformas inclu do Windows se pueden encontrar en http www php net Instalaci n en sistemas UNIX Esta secci n le guiar a trav s de la configuraci n e instalaci n del PHP Conocimientos y software necesarios e Habilidades b sicas en UNIX ser capaz de manejar el make y un compilador de C Un compilador ANSI de C e Un servidor web Instrucciones R pidas de Instalaci n Versi n M d
2. no asociativo lt lt gt gt izquierda lt lt gt gt izquierda izquierda e 1 derecha int double string array object derecha mo asociativo new Operadores de Cadenas Hay dos operadores de cadenas El primero es el operador de concatenaci n que devuelve el resultado de concatenar sus operandos izquierdo y derecho El segundo es el operador de concatenaci n y asignaci n Consulta Operadores de Asignaci n para m s informaci n Sa Hola Sb Sa Mundo ahora b contiene Hola Mundo a Hola Sa Mundo ahora a contiene Hola Mundo 82 Cap tulo 11 Operadores 83 Cap tulo 12 Estructuras de Control if else Cap tulo 12 Estructuras de Control Todo archivo de comandos PHP se compone de una serie de sentencias Una sentencia puede ser una asignaci n una llamada a funci n un bucle una sentencia condicional e incluso una sentencia que no haga nada una sentencia vac a Las sentencias normalmente acaban con punto y coma Adem s las sentencias se pueden agrupar en grupos de sentencias encapsulando un grupo de sentencias con llaves Un grupo de sentencias es tambi n una sentencia En este cap tulo se describen los diferentes tipos de sentencias La construcci n if es una de las m s importantes caracter sticas de muchos lenguajes incluido PHP Permite la ejecuci n condicional de fragmento
3. Sbar y algo m s str Esto es una Cadena foo str echo str Saca Esto es una cadena foo amp Sstr echo Sstr Saca Esto es una Cadena y algo mas Par metros por defecto Una funci n puede definir valores por defecto para los par metros escalares estilo C function makecoff Stype cappucino return Hacer una taza de Stype n echo makecoffee echo makecoff espresso La salida del fragmento anterior es Hacer una taza de cappucino Hacer una taza de espresso El valor por defecto tiene que ser una expresi n constante y no una variable o miembro de una clase En PHP 4 0 tambi n es posible especificar unset como par metro por defecto Esto significa que el argumento no tomar ningtn valor en absoluto si el valor no es suministrado 105 Cap tulo 13 Funciones Destacar que cuando se usan par metros por defecto estos tienen que estar a la derecha de cualquier par metro sin valor por defecto de otra manera las cosas no funcionar n de la forma esperada Considera el siguiente fragmento de c digo function makeyogurt type acidophilus Sflavour return Haciendo un bol de type flavour An echo makeyogurt mora No funcionar de la manera esperada La salida del ejemplo anterior es Warning Missing argument 2 in call to makeyogurt in usr local etc httpd htdocs php3test functest html on line 41 Haciendo un bol de mor
4. Cuando la primera expresi n es una cadena el tipo de la variable depender de la segunda expresi n Sfoo 1 10 5 foo es doble 11 5 Sfoo 1 1 3e3 foo es doble 1299 Sfoo 1 bob 1 3e3 foo es entero 1 Sfoo 1 bob3 foo es entero 1 Sfoo 1 10 Cerditos foo es entero 11 Sfoo 1 10 Cerditos Sfoo es entero 11 51 Cap tulo 7 Types Sfoo Sfoo 10 0 cerdos 1 Sfoo es entero 11 10 0 cerdos 1 0 Sfoo es double 11 Para m s informaci n sobre esta conversi n mire en la p gina del manual de Unix strtod 3 Si quisiera probar cualquiera de los ejemplos de esta secci n puede cortar y pegar los ejemplos e insertar la siguiente l nea para ver por s mismo lo que va ocurriendo echo Sfoo Sfoo el tipo es gettype foo lt br gt n Arrays Los arrays actualmente act an tanto como tablas hash arrays asociativos como arrays indexados vectores Arrays unidimensionales PHP soporta tanto arrays escalares como asociativos De hecho no hay diferencias entre los dos Se puede crear una array usando las funciones list ojarray o se puede asignar el valor de cada elemento del array de manera expl cita a 0 abc a 1 def Sb foo 13 Tambi n se puede crear un array simplemente a adiendo valores al array Cuando se asigna un valor a una variable array usando corchetes vac os el valor se a adir al
5. e Ajuste la seguridad apropiada esto se realiza en el Controlador de Servicio de Internet ISM y si su NT Server usa el sistema de archivos NTFS a ada derechos de ejecuci n para I USR al directorio que contenga el php exe Windows 9x NT y Apache 1 3 x Debe editar sus archivos srm conf O httpd conf para configurar el Apache para que trabaje con el ejecutable CGI del PHP Aunque puede haber algunas variaciones al configurar PHP bajo Apache esta es lo suficientemente simple para ser usada por el novato Por favor consulte la Documentaci n del Apache para saber de las subsiguientes directivas de configuraci n 25 Cap tulo 3 Instalaci n e ScriptAlias php3 c ruta al dir del php AddType application x httpd php3 php3 AddType application x httpd php3 phtml Action application x httpd php3 php3 php exe Para utilizar la capacidad de marcado del c digo fuente cree simplemente un script de PHP y pegue este c digo en l lt php show source script original php php3 gt Sustituya script original php php3 por el nombre del archivo del que desea visualizar el c digo fuente esta es la nica forma de hacerlo Nota Bajo Win Apache todas las barras invertidas de una ruta tal como c directory file ext deben ser convertidas a barras hacia adelante Omni HTTPd 2 0b1 para Windows Esta ha resultado ser la configuraci n m s sencilla Paso 1 Instale el servidor Omni Paso 2 Pulse el bot n
6. Asignando una cadena Sstr Esto es una cadena A adiendo a la cadena Sstr str con algo m s de texto Otra forma de a adir incluye un car cter de nueva l nea protegido Sstr Y un car cter de nueva linea al final n Esta Cadena terminar siendo lt p gt N mero 9 lt p gt Snum 9 Sstr lt p gt Numero Snum lt p gt Esta ser lt p gt N mero num lt p gt num 9 Sstr lt p gt N mero Snum lt p gt Obtener el primer car cter de una Cadena Sstr Esto es una prueba Sfirst Sstr 0 Obtener el ltimo caracter de una cadena Sstr Esto es a n una prueba Slast str strlen str 1 2 gt Conversi n de cadenas Cuando una cadena se eval a como un valor num rico el valor resultante y el tipo se determinan como sigue 32 3 La cadena se evaluar como un doble si contiene cualquiera de los caracteres e o E En caso contrario se evaluar como un entero El valor viene dado por la porci n inicial de la cadena Si la cadena comienza con datos de valor num rico este ser el valor usado En caso contrario el valor ser O cero Los datos num ricos v lidos son un signo opcional seguido por uno o m s d gitos que opcionalmente contengan un punto decimal seguidos por un exponente opcional El exponente es una e o una E seguidos por uno o m s d gitos
7. La sentencia a que incrementa la variable no sirve para nada ya que en cuanto la funci n termina la variable a desaparece Para hacer una funci n til para contar que no pierda la pista del valor actual del conteo la variable a debe declararse como est tica Function Test static Sa 0 echo Sa Sa Ahora cada vez que se Ilame a la funci n Test se representar el valor de a y se incrementar Las variables est ticas tambi n proporcionan una forma de manejar funciones recursivas Una funci n recursiva es la que se llama a s misma Se debe tener cuidado al escribir una funci n recursiva ya que puede ocurrir que se llame a s misma indefinidamente Hay que asegurarse de implementar una forma adecuada de terminar la recursi n La siguiente funci n cuenta recursivamente hasta 10 usando la variable est tica count para saber cu ndo parar Function Test static count 0 Scount echo Scount if count lt 10 Test Scount Variables variables A veces es conveniente tener nombres de variables variables Dicho de otro modo son nombres de variables gue se pueden establecer y usar din micamente Una variable normal se establece con una sentencia como 65 Cap tulo 8 Variables Sa hello Una variable variable toma el valor de una variable y lo trata como el nombre de una variable En el ejemplo anterior hello se puede usar como el nombre de una variable utiliza
8. lt php Sfoo 25 Sbar amp Sfoo Esta es una asignaci n v lida Sbar 24 7 Inv lida referencia una expresi n sin nombre function test return 25 Sbar stest Inv lida 2 gt 59 Cap tulo 8 Variables Variables predefinidas PHP proporciona una gran cantidad de variables predefinidas a cualquier script que se ejecute De todas formas muchas de esas variables no pueden estar completamente documentadas ya que dependen de sobre qu servidor se est ejecutando la versi n y configuraci n de dicho servidor y otros factores Algunas de estas variables no estar n disponibles cuando se ejecute PHP desde la l nea de comandos A pesar de estos factores aqu tenemos una lista de variables predefinidas disponibles en una instalaci n por defecto de PHP 3 corriendo como modulo de un Apache http www apache org 1 3 6 con su configuraci n tambi n por defecto Para una lista de variables predefinidas y muchas m s informaci n til por favor vea y use phpinfo Nota Esta lista no es exhaustiva ni pretende serlo Simplemente es una gu a de qu tipo de variables predefinidas se puede esperar tener disponibles en un script Variables de Apache Estas variables son creadas por el servidor web Apache http www apache org Si se est utilizando otro servidor web no hay garant a de que proporcione las mismas variables pueden faltar algunas o proporcionar otras no listadas aqu
9. _POST age variables are automatically set for you by PHP Earlier we used the SERVER autoglobal now above we just introduced the POST autoglobal which contains all POST data Notice how the method of our form is POST If we used the method GET then our form information would live in the GET autoglobal instead You may also use the REQUEST autoglobal if you don t care the source of your reguest data It contains a mix of GET POST COOKIE and FILE data See also the import request variables function Using old code with new versions of PHP Now that PHP has grown to be a popular scripting language there are more resources out there that have listings of code you can reuse in your own scripts For the most part the developers of the PHP language have tried to be backwards compatible so a script written for an older version should run ideally without changes in a newer version of PHP in practice some changes will usually be needed Two of the most important recent changes that affect old code are The deprecation of the old HTTP VARS arrays which need to be indicated as global when used inside a function or method The following autoglobal arrays were introduced in PHP 4 1 0 http www php net release 4 1 0 php They are GET _POST COOKIE SERVER ENV REQUEST and SESSION The older HTTP VARS arrays such as HTTP POST VARS still exist and have since PHP 3
10. include path en Windows include_path c www phplib El valor por defecto para esta directiva es s lo el directorio actual isapi ext string log errors boolean Dice si los mensajes de error de los script deben ser registrados o no en el registro del servidor Esta opci n por tanto es espec fica del mismo magic quotes gpc boolean Fija el estado magic quotes para operaciones GPC Get Post Cookie Si magic quotes vale on todas las comilla sencilla comilla doble 1 barra invertida y los NUL son autom ticamente marcados con una barra invertida Si adem s magic_quotes_sybase vale on la comilla sencilla es marcada con otra comilla sencilla en lugar de la barra invertida magic_quotes_runtime boolean Si se habilita magic guotes runtime muchas de las funciones que devuelven datos de alg n tipo de fuente externa incluyendo bases de datos y archivos de texto devolver n las comillas marcadas con una barra invertida Si tambi n est activo magic_quotes_sybase la comilla simple es marcada con una comilla simple en lugar de la barra invertida magic guotes sybase boolean Simagic guotes sybase est a on la comilla simple es marcada con una comilla simple en lugar de la barra invertida cuando est n habilitados magic guotes gpco magic guotes runtime max execution time integer Fija el tiempo m ximo en segundos gue se le permite usar a un script antes de ser finalizado por el int rprete As se evita que scripts ma
11. lt h3 gt Predecremento lt h3 gt Sa 5 cho Deberia ser 4 Sa lt br gt An cho Deber a ser 4 Sa lt br gt n 2 gt Operadores L gicos Tabla 11 5 Operadores L gicos ejemplo nombre resultado a and b Y Cierto si tanto a como b son ciertos a or b O Cierto si a o b son ciertos a xor b O exclusiva Cierto si a es cierto o b es cierto pero no ambos a la vez a Negaci n Cierto si a no es cierto a amp amp b Y Cierto si tanto a como b son ciertos a II b O Cierto si a o b son ciertos Woon n La raz n de las dos variaciones de y y o Operadores Precedencia de Operadores es que operan con distinta precedencia ver Precedencia de La precedencia de operadores especifica c mo se agrupan las expresiones Por ejemplo en la expresi n 1 81 Cap tulo 11 Operadores 5 3 la respuesta es 16 y no 18 porque el operador de multiplicaci n tiene una mayor precedencia que el de adici n La siguiente tabla lista la precedencia de operadores indic ndose primero los de menor precedencia Tabla 11 6 Precedencia de Operadores Asociatividad Operadores izquierda izquierda or izquierda xor izquierda and derecha print izquierda amp lt lt gt gt izquierda Le izquierda ll izquierda KA izquierda l izquierda A izquierda amp no asociativo
12. 4 0 1p12 GLOBALS ARE NICE 101 Cap tulo 12 Estructuras de Control this is requiring globals inc again which is also required in foolib inc Running goodTea Oolong tea tastes good Printing foo Array 0 gt 1 1 gt Array 0 gt complex 1 gt quaternion Also note that analogous to the behavior of the include of the C preprocessor this statement acts at compile time e g when the script is parsed and before it is executed and should not be used for parts of the script that need to be inserted dynamically during its execution You should use include_once or include for that purpose For more examples on using require_once and include once look at the PEAR code included in the latest PHP source code distributions See also require include include once get required files get included files and virtual include_once The include once statement includes and evaluates the specified file during the execution of the script This is a behavior similar to the include statement with the important difference that if the code from a file has already been included it will not be included again As mentioned in the require_once description the include once should be used in the cases in which the same file might be included and evaluated more than once during a particular execution of a script and you want to be sure that it is included exactly
13. Dicho esto tambi n est n presentes las variables de la especificaci n CGI 1 1 http hoohoo ncsa uiuc edu cgi env html por lo que tambi n se deben tener en cuenta Tenga en cuenta que unas pocas como mucho de estas variables van a estar disponibles o simplemente tener sentido si se ejecuta PHP desde la l nea de comandos GATEWAY_INTERFACE Qu revisi n de la especificaci n CGI est usando el servidor por ejemplo CGI 1 1 SERVER_NAME El nombre del equipo servidor en el que se est ejecutando el script Si el script se est ejecutando en un servidor virtual este ser el valor definido para dicho servidor virtual SERVER_SOFTWARE Una cadena de identificaci n del servidor que aparece en las cabeceras al responderse a las peticiones SERVER_PROTOCOL Nombre y revisi n del protocolo a trav s del que se solicit la p gina p ej HTTP 1 0 REQUEST_METHOD Qu m todo de petici n se us para acceder a la p gina p ej GET HEAD POST PUT 60 Cap tulo 8 Variables QUERY_STRING La cadena de la petici n si la hubo mediante la que se accedi a la p gina DOCUMENT_ROOT El directorio ra z del documento bajo el que se ejecuta el script tal y como est definido en el fichero de configuraci n del servidor HTTP_ACCEPT Los contenidos de la cabecera Accept de la petici n actual si hay alguna HTTP_ACCEPT_CHARSET Los contenidos de la cabecera Accept Charset de
14. N mero de puerto usado por el debugger debugger enabled boolean Indica si el debugger est habilitado o no Directivas de Carga de Extensiones enable dl boolean Esta directiva s lo es til en la versi n del PHP como m dulo del Apache Puede habilitar o deshabilitar para un servidor virtual o para un directorio la carga din mica de extensiones de PHP mediante dl La raz n principal para deshabilitar la carga din mica es la seguridad Con la carga din mica es posible ignorar las restricciones safe_mode y open_basedir El valor por defecto es permitir la carga din mica excepto cuando se usa el modo seguro En modo seguro siempre es imposible usar dll extension_dir string En qu directorio debe buscar el PHP las extensiones cargables din micamente 34 Cap tulo 4 Configuraci n extension string Qu extensiones din micas debe cargar el PHP cuando arranca Directivas de Configuraci n de MySQL mysql allow_persistent boolean Si permitir o no conexiones MySQL persistentes mysql default_host string El servidor por defecto para utilizar cuando se conecte al servidor de bases de datos si no se especifica otro distinto mysql default_user string El nombre de usuario por defecto para utilizar cuando se conecta al servidor de base de datos si no se especifica otro mysql default_password string La clave por defecto para utilizar cuando se conecta al servidor de base de datos si no se especifica
15. a b posiciones hacia la izquierda por aritm tica binaria cada posici n desplazada equivale a multiplicar por dos el valor de a a gt gt b Desplazamiento a la derecha Desplaza los bits de a b posiciones hacia la derecha por aritm tica binaria cada posici n desplazada equivale a dividir entre dos el valor de a Operadores de Comparaci n Los operadores de comparaci n como su nombre indica permiten comparar dos valores Tabla 11 3 Operadores de Comparaci n ejemplo nombre resultado a b Igualdad Cierto si a es igual a b a b Identidad Cierto si a es igual a b y si son del mismo tipo s lo PHP4 a b Desigualdad Cierto si a no es igual a b a lt b Menor que Cierto si a es estrictamente menor que b a gt b Mayor que Cierto si a es estrictamente mayor que b a lt b Menor o igual que Cierto si a es menor o igual que b 79 Cap tulo 11 Operadores ejemplo nombre resultado a gt b Mayor o igual que Cierto si a es mayor o igual que b Otro operador condicional es el operador o ternario que funciona como en C y otros muchos lenguajes exprl expr2 expr3 La expresi n toma el valor expr2 si expr1 se eval a a cierto y expr3 si exprl se eval a a falso Operador de ejecuci n PHP soporta un operador de ejecuci n el ap strofe invertido F jate que no
16. al constructor de la clase derivada 112 Cap tulo 15 References Explained 113
17. cambiar desde un script usando la funci n sybase_min_server_severity El valor por defecto es 10 que reporta los errores de informaci n con gravedad o mayores sybct min_client_severit y integer Los mensajes de librer a de cliente con gravedad mayor o igual que sybct min client severity ser n reportados como avisos Este valor tambi n se puede cambiar desde un script usando la funci n sybase_min_client_severity El valor por defecto es 10 que desconecta los avisos sybct login_timeout integer El n mero m ximo de segundos de espera por un intento de conexi n con xito antes de indicar un fallo N tese que si se ha excedido max execution time cuando finaliza la espera de un intento de conexi n el script ser finalizado antes de que se pueda tomar una acci n en caso de fallo El valor por defecto es 1 minuto sybct timeout integer El n mero maximo de segundos de espera por una operaci n de consulta o select db con xito antes de indicar un fallo N tese que si se ha excedido max execution time cuando finaliza la espera de un intento de conexi n el script ser finalizado antes de gue se pueda tomar una acci n en caso de fallo El valor por defecto es sin l mite sybct hostname string El nombre de la m quina desde la que dice estarse conectando para que se visualize con sp_who El valor por defecto es none 37 Cap tulo 4 Configuraci n Directivas de Configuraci n de Informix ifx allow p
18. cookie usando las matrices HTTP_GET_VARS HTTP_POST_VARS y HTTP_COOKIE_VARS Esta opci n s lo fija el valor por defecto Puede ser habilitado o deshabilitado posteriormente mediante la directiva track vars en el archivo de configuraci n 20 Cap tulo 3 Instalaci n enable magic quotes enable magic guotes Habilita las comillas m gicas por defecto Esta opci n s lo fija el valor por defecto Puede ser habilitada o deshabilitada posteriormente mediante la directiva magic quotes runtimelen el archivo de Vea tambi n las directivas magic_quotes_gpc y magic_quotes_sybase enable debugger enable debugger Habilita el soporte de depuraci n interno del PHP Esta caracter stica a n est en estado experimental Vea tambi n las directivas de Configuraci n del Depurador en el archivo de configuraci n enable discard path enable discard path Si est habilitado el ejecutable CGI del PHP se puede situar tranquilamente fuera del rbol de la web y la gente no podr saltarse la seguridad del htaccess Lea la secci n en el cap tulo de seguridad sobre esta opci n enable bcmath enable bcmath Habilita las funciones matem ticas de precisi n arbitraria estilo bc Vea tambi n la opci n bemath scale en el archivo de configuraci n enable force cgi redirect enable force cgi redirect Habilita la comprobaci n de seguridad para redirecciones internas del servidor Deber usar esta opci
19. de fin de bloque lleva impl cito el punto y coma no necesitas por lo tanto a adir el punto y coma final de la ltima l nea del bloque PHP PHP permite estructurar bloques como Ejemplo 6 2 M todos avanzados de escape lt php if Sexpression 2 gt lt strong gt This is true lt strong gt lt php else 2 gt lt strong gt This is false lt strong gt lt php Este ejemplo realiza lo esperado ya que cuando PHP encuentra las etiquetas gt de fin de bloque empieza a escribir lo que encuentra tal cual hasta que encuentra otra etiqueta de inicio de bloque El ejemplo anterior es por supuesto inventado Para escribir bloques grandes de texto generamente es m s eficiente separalos del c digo PHP que enviar todo el texto mediante las funciones echo fprint o similares Separaci n de instrucciones Las separaci n de instrucciones se hace de la misma manera que en C o Perl terminando cada declaraci n con un punto y coma La etiqueta de fin de bloque gt implica el fin de la declaraci n por lo tanto lo siguiente es equivalente lt php echo This is a test 2 gt lt php echo This is a test gt 46 Cap tulo 6 S ntaxis b sica Comentarios PHP soporta el estilo de comentarios de C C y de la interfaz de comandos de Unix Por ejemplo lt php echo This is a test This is a one line c style comment This is a multi line comment yet another line of comment
20. del cap tulo hemos dicho que describir amos los distintos tipos de instrucciones y como prometimos las expresiones pueden ser instrucciones Sin embargo no todas las expresiones son instrucciones En este caso una instrucci n tiene la forma expr es decir una expresi n seguida de un punto y coma En b a 5 a 5 es una expresi n v lida pero no es una instrucci n en s misma Por otro lado b a 5 s es una instrucci n v lida Una ltima cosa que vale la pena mencionar es el valor booleano de las expresiones En muchas ocasiones principalmente en condicionales y bucles no est s interesado en el valor exacto de la expresi n sino nicamente si es CIERTA TRUE o FALSA FALSE PHP no tiene un tipo booleano espec fico El valor de verdad de las expresiones en PHP se calcula de forma similar a perl Cualquier valor num rico distinto de cero es CIERTO TRUE cero es FALSO FALSE F jate en que los valores negativos son distinto de cero y considerados CIERTO TRUE La cadena vac a y la cadena 0 son FALSO FALSE todas las dem s cadenas son TRUE Con los tipos no escalares arrays y objetos si el valor no contiene elementos se considera FALSO FALSE en caso contrario se considera CIERTO TRUE PHP te brinda una completa y potente implementaci n de expresiones y documentarla enteramente est m s all del objetivo de ete manual Los ejemplos anteriores deber an da
21. del carro function remove item artnr num if this gt items Sartnr gt num Sthis gt items Sartnr num return true else return false El ejemplo define una clase llamada Cart que consiste en un array asociativo de art culos en el carro y dos funciones para meter y sacar tems del carro Las clases son tipos es decir son plantillas para variables Tienes que crear una variable del tipo deseado con el operador new Scart new Cart Scart gt add_item 10 1 Este ejemplo crea un objeto cart de clase Cart La funci n add item de ese objeto se llama para a adir un item del art culo n mero 10 al carro Las Clases pueden ser extensiones de otras clases Las clases extendidas o derivadas tienen todas las variables y funciones de la clase base y lo que les a adas al extender la definici n La herencia m ltiple no est soportada class Named Cart extends Cart var Sowner function set owner name Sthis gt owner name 110 Cap tulo 14 Clases y Objetos Ese ejemplo define una clase Named_Cart carro con nombre o due o que tiene todas las variables y funciones de Cart y adem s a ade la variable owner y una funci n adicional set_owner Un carro con nombre se crea de la forma habitual y una vez hecho puedes acceder al propietario del carro En los carros con nombre tambi n puedes acceder a las funciones normales del carro Sncart new Named Cart Creamos un carro con no
22. despu s de leer su valor de ah el nombre postincremento Un tipo muy corriente de expresiones son las expresiones de comparaci n Estas expresiones se eval an a0 o 1 significando FALSO FALSE o CIERTO TRUE respectivamente PHP soporta gt mayor que gt mayor o igual que igual que distinto lt menor que y lt menor o igual que Estas expresiones se usan frecuentemente dentro de la ejecuci n condicional como la instrucci n if El ltimo tipo de expresiones que trataremos es la combinaci n operador asignaci n Ya sabes que si quieres incrementar a en 1 basta con escribir a o a Pero qu pasa si quieres a adir m s de 1 por ejemplo 3 Podr as escribir a m ltiples veces pero no es una forma de hacerlo ni eficiente ni c moda Una pr ctica mucho m s corriente es escribir a a 3 a 3 se eval a al valor de a m s 3 y se asigna de nuevo a a lo que resulta en incrementar a en 3 En PHP como en otros lenguajes como C puedes escribir esto de una forma m s concisa que con el tiempo ser m s clara y tambi n f cil de entender A adir 3 al valor actual de a se puede escribir como a 3 Esto quiere decir exactamente toma el valor de a s male 3 y as gnalo otra vez a a Adem s de ser m s corto y claro tambi n resulta en una ejecuci n m s r pida El valor de a 3 como el valor de una asignaci n normal y corriente es el v
23. directiva SERVER_ADMIN en Apache en el fichero de configuraci n del servidor web Si el script se est ejecutando en un servidor virtual ser el valor definido para dicho servidor virtual SERVER_PORT El puerto del equipo servidor que est usando el servidor web para la comunicaci n Para configuraciones por defecto ser 80 al usar SSL por ejemplo cambiar al puerto que se haya definido como seguro para HTTP SERVER_SIGNATURE Una cadena que contiene la versi n del servidor y el nombre del servidor virtual que es a adida a las p ginas generadas por el servidor si est caracter stica est activa PATH_TRANSLATED V a de acceso basada en el sistema de ficheros no el directorio ra z del documento del script en cuesti n despu s de que el servidor haya hecho la conversi n virtual a real SCRIPT_NAME Contiene la v a de acceso del script actual Es til para p ginas que necesitan apuntar a s mismas REQUEST_URI La URI que se di para acceder a esta p gina por ejemplo index html Variables de entorno Estas variables se importan en el espacio de nombres global de PHP desde el entorno en el que se est ejecutando el int rprete PHP Muchas son proporcionadas por el int rprete de comandos en el que se est ejecutando PHP y dado que a sistemas diferentes les gusta ejecutar diferentes tipos de int rpretes de comandos es imposible hacer una lista definitiva Por favor mire la documentaci n d
24. echo This is yet another test echo One Final Test This is shell style style comment 2 gt Los estilos de comentarios de una linea actualmente s lo comentan hasta el final de la linea o el bloque actual de c digo PHP lo primero que ocurra lt hl gt This is an lt php echo simple gt example lt h1 gt lt p gt The header above will say This is an example Hay que tener cuidado con no anidar comentarios de estilo C algo que puede ocurrir al comentar bloques largos de c digo lt php echo This is a test This comment will cause a problem Ey 2 gt Los estilos de comentarios de una linea actualmente s lo comentan hasta el final de la linea o del bloque actual de c digo PHP lo primero que ocurra Esto implica que el c digo HTML tras gt ser a impreso gt sale del modo PHP retornando al modo HTML el comentario no le influye 47 Cap tulo 7 Types Cap tulo 7 Types PHP soporta los siguientes tipos array cadena El tipo de una variable normalmente no lo indica el programador en su lugar lo decide PHP en tiempo de ejecuci n dependiendo del contexto en el que se utilice esa variable Si se quisiese obligar a que una variable se convierta a un tipo concreto se podr a forzar la variable o usar la funci n settypel para ello N tese que una variable se puede comportar de formas diferentes en ciertas situaciones dependiendo de qu tipo sea
25. ejecutar una sentencia return dentro de un archivo incluido con linclude para terminar el procesado de ese archivo y volver al archivo de comandos que lo llam Existen algunas diferencias en el modo en que esto funciona no obstante La primera es que en PHP3 return no puede aparecer dentro de un bloque a menos que sea un bloque de funci n en el cual return se aplica a esa funci n y no al archivo completo En PHP4 no obstante esta restricci n no existe Tambi n PHP4 permite devolver valores desde archivos incluidos con include Se puede capturar el valor de la llamada alinclude como se har a con una funci n normal Esto genera un error de int rprete en PHP3 Ejemplo 12 1 include en PHP3 y PHP4 Asumamos la existencia del siguiente archivo llamado test inc en el mismo directorio que el archivo principal lt php echo Antes del return lt br gt n e A 4 return 27 cho Despu s del return lt br gt n 2 gt Asumamos que el archivo principal main htm1 contiene lo siguiente lt php Sretval include test inc echo El archivo devolvi retval lt br gt Mn 2 gt 98 Cap tulo 12 Estructuras de Control Cuando se llama a main html en PHP3 generar un error del int rprete en la linea 2 no se puede capturar el valor de un linclude en PHP3 En PHP4 no obstante el resultado ser Antes del return El archivo devolvi 27 Ahora asumamos que se ha modificado ma
26. ejemplo agrupar juntas variables relacionadas o usar esta caracter stica para recuperar valores de un campo select input m ltiple Ejemplo 8 2 Variables de formulario m s complejas lt form action array php method post gt ame lt input type text name personal name gt lt br gt Email lt input type text name personal email gt lt br gt Beer lt br gt lt select multiple name beer gt lt option value warthog gt Warthog lt option value guinness gt Guinness lt option value stuttgarter gt Stuttgarter Schwabenbr u lt select gt lt input type submit gt lt form gt Si la posibilidad de PHP de track vars est activada ya sea mediante la opci n de configuraci n track vars o mediante la directiva lt php track vars gt las variables enviadas con los m todos POST o GET tambi n se encontrar n en los arrays asociativos globales HTTP POST VARS y HTTP GET VARS IMAGE SUBMIT variable names Cuando se env a un formulario es posible usar una imagen en vez del bot n submit est ndar con una etiqueta como lt input type image src image gif name sub gt Cuando el usuario hace click en cualquier parte de la imagen el formulario que la acompa a se transmitir al servidor con dos variables adicionales sub_x y sub_y Estas contienen las coordenadas del click del usuario dentro de la imagen Los m s experimentados puede notar que los nombres de variable enviados por el naveg
27. eval e como TRUE El valor de la expresi n es comprobado cada vez al principio del bucle as que incluso si este valor cambia durante la ejecuci n de la s sentencia s anidada s la ejecuci n no parar hasta el fin de la iteraci n cada vez que PHP ejecuta las sentencias en el bucle es una iteraci n A veces si la expresi n while se eval a como FALSE desde el principio de todo la s sentencia s anidada s no se ejecutar n ni siquiera una vez Como con la sentencia if se pueden agrupar multiples sentencias dentro del mismo bucle while encerrando un grupo de sentencias con llaves o usando la sintaxis alternativa while expr sentencia endwhile 87 Cap tulo 12 Estructuras de Control Los siguientes ejemplos son id nticos y ambos imprimen n meros del 1 al 10 ejemplo 1 i 1 while i lt 10 print Si el valor impreso ser a i antes del incremento post incremento ejemplo 2 i 1 while i lt 10 print i Si endwhile do while Los bucles do while son muy similares a los bucles while excepto que las condiciones se comprueban al final de cada iteraci n en vez de al principio La principal diferencia frente a los bucles regulares while es que se garantiza la ejecuci n de la primera iteraci n de un bucle do while la condici n se comprueba s lo al final de la iteraci n mientras que puede no ser necesariamente ejecutada con un bucle while
28. final del array un o ll hola Ji Sa 2 hola mundo a 3 mundo ur W ll Los arrays se pueden ordenar usando las funciones asort arsort ksort rsort sort uasort jusort yluksort dependiendo del tipo de ordenaci n que se desee Se puede contar el n mero de elementos de un array usando la funci n count Se puede recorrer un array usando las funciones nexti y prev Otra forma habitual de recorrer un array es usando la funci n each 52 Cap tulo 7 Types Arrays Multidimensionales Los arrays multidimensionales son bastante simples actualmente Para cada dimensi n del array se puede a adir otro valor clave al final Sa 1 f ejemplos de una sola dimensi n Sa foo Sf Sa 1 0 f bidimensional Sa foo 2 f se pueden mezclar indices num ricos y asociativos Sa 3 bar f se pueden mezclar indices num ricos y asociativos Sa foo 4 bar 0 Sf tetradimensional En PHP3 no es posible referirse a arrays multidimensionales directamente dentro de cadenas Por ejemplo lo siguiente no tendra el resultado deseado Sa 3 bar Bob echo Esto no va a funcionar Sa 3 bar En PHP3 lo anterior tendr la salida Esto no va a funcionar Array bar De todas formas el operador de concatenaci n de cadenas se puede usar para solucionar esto Sa 3 bar Bob echo Esto no va a funciona
29. gt n Using the optional argument i 0 while 1 switch 1 case 5 echo At 5 lt br gt n break 1 Exit only the switch case 10 echo At 10 quitting lt br gt n break 2 Exit the switch and the while default 92 Cap tulo 12 Estructuras de Control break continue continue se usa dentro de la estructura del bucle para saltar el resto de la iteraci n actual del bucle y continuar la ejecuci n al comienzo de la siguiente iteraci n continue accepta un par metro opcional el cual determina cuantos niveles bluces hay que saltar antes de continuar con la ejecuci n while list key value each Sarr if key 2 salta los miembros impares continue do something odd value Si 0 while i lt 5 echo Outer lt br gt n while 1 echo Middle lt br gt n while 1 echo Inner lt br gt n continue 3 echo This never gets output lt br gt n cho Neither does this lt br gt n switch La sentencia switch es similar a una serie de sentencias IF en la misma expresi n En muchas ocasiones se quiere comparar la misma variable o expresi n con nuchos valores diferentes y ejecutar una parte de cddigo distinta dependiendo de a qu valor es igual Para ello sirve la sentencia switch Los siguientes dos ejemplos son dos modos distintos de escribir la misma cosa uno usa una serie de sentencias if y el otro usa la sente
30. ha producido el resultado recibido El servidor web puede ser incluso configurado para que procese todos los ficheros HTML con PHP Lo mejor de usar PHP es que es extremadamente simple para el principiante pero a su vez ofrece muchas caracteristicas avanzadas para los programadores profesionales No tengais miedo de leer la larga lista de caracteristicas de PHP en poco tiempo podreis empezar a escribir vuestros primeros scripts Aunque el desarrollo de PHP est concentrado en la programaci n de scripts en la parte del servidor se puede utilizar para muchas otras cosas Sigue leyendo y descubre m s sobre PHP en la secci n Qu se puede hacer con PHP Qu se puede hacer con PHP PHP puede hacer cualquier cosa que se pueda hacer con un script CGI como procesar la informaci n de formularios generar p ginas con contenidos din micos o mandar y recibir cookies Y esto no es todo se puede hacer mucho m s Cap tulo 1 Introducci n Existen tres campos en los que scripts escritos en PHP son usados Scripts en la parte del servidor Este es el campo m s tradicional y el principal campo de trabajo Se necesitan tres cosas para que esto funcione El parseador PHP CGI m dulo un servidor web y un navegador Se necesita correr el servidor web con PHP instalado El resultado del programa PHP se puede obtener a trav s del navegador conectando con el servidor web Consultar la secci n Instrucciones de instalaci n para m s i
31. if precedente y cualquier expresi n elseif precedente se eval an como FALSE y la expresi n elseif actual se eval a como TRUE Sintaxis Alternativa de Estructuras de Control PHP ofrece una sintaxis altenativa para alguna de sus estructuras de control a saber if while for y switch En cada caso la forma b sica de la sintaxis alternativa es cambiar abrir llave por dos puntos 86 while Cap tulo 12 Estructuras de Control y cerrar llave por endif endwhile endfor or endswitch respectivamente lt php if a 5 gt A es igual a 5 lt php endif gt En el ejemplo de arriba el bloque HTML A 5 se anida dentro de una sentencia if escrita en la sintaxis alternativa El bloque HTML se mostrar a solamente si a fuera igual a 5 La sintaxis alternativa se aplica a else y tambi n a elseif La siguiente es una estructura if con elseif y else en el formato alternativo if a 5 print a es igual a 5 print Tassy elseif a 6 print a es igual a 6 print 1101 else print a no es ni 5 ni 6 endif Mirar tambi n while for eliflpara m s ejemplos Los bucles while son los tipos de bucle m s simples en PHP Se comportan como su contrapartida en C La forma b sica de una sentencia while es while expr sentencia El significado de una sentencia while es simple Le dice a PHP que ejecute la s sentencia s anidada s repetidamente mientras la expresi n while se
32. into PHP which searches a string for another string In this case we are looking for MSIE inside _SERVER HTTP_USER_AGENT If the string is found the function returns TRUE and if it isn t it returns FALSE If it returns TRUE thelif statement evaluates to TRUE and the code within its braces is executed Otherwise it s not Feel free to create similar examples with if else and other functions such as strtoupper and Each related manual page contains examples too pp pag p We can take this a step further and show how you can jump in and out of PHP mode even in the middle of a PHP block Ejemplo 2 5 Mixing both HTML and PHP modes lt php if strstr S SERVER HTTP USER AGENT MSIE gt lt h3 gt strstr must have returned true lt h3 gt lt center gt lt b gt You are using Internet Explorer lt b gt lt center gt lt php else 2 gt lt h3 gt strstr must have returned false lt h3 gt lt center gt lt b gt You are not using Internet Explorer lt b gt lt center gt lt php 2 gt A sample output of this script may be lt h3 gt strstr must have returned true lt h3 gt Cap tulo 2 A simple tutorial lt center gt lt b gt You are using Internet Explorer lt b gt lt center gt Instead of using a PHP echo statement to output something we jumped out of PHP mode and just sent straight HTML The important and
33. isi edu in notes rfc1777 txt y en RFC1778 ftp ftp isi edu in notes rfc1778 txt Otras opciones de configuraci n with mcrypt DIR with mcrypt 18 Cap tulo 3 Instalaci n Incluye soporte para la librer a mcrypt Vea la documentaci n de mcrypt para m s informaci n Si utiliza el argumento opcional DIR el PHP buscar mcrypt h en DIR include enable sysvsem enable sysvsem Incluye soporte para sem foros Sys V soportados por muchos derivados Unix Vea la sobre Sem foros y Memoria Compartida para m s informaci n enable sysvshm enable sysvshm Incluye soporte para la memoria compartida Sys V soportada por muchos derivados Unix Vea la documentaci n sobre Sem foros y Memoria Compartida para m s informaci n with xml with xml Incluye soporte para un parser XML no validador que utiliza la librer a expat http www jclark com xml de James Clark Vea la referencia de funciones XML para m s detalles enable maintainer mode enable maintainer mode Activa avisos extra de dependencias y del compilador utilizados por algunos de los desarrolladores del PHP with system regex with system regex Utiliza la librer a de expresiones regulares del sistema en lugar de la inclu da Si est compilando PHP como m dulo de servidor debe utilizar la misma librer a cuando genere el PHP y cuando lo enlace con el servidor Active esto si la librer a del sistema proporciona c
34. n set time limit no se puede usar en modo seguro Use el ajuste de configuraci n max execution time para controlar este tiempo en sus propios script make bench ignora el archivo de configuraci n Instalaci n en sistemas Windows 95 98 NT Esta gu a de instalaci n le ayudar a instalar y configurar el PHP en sus servidores web bajo Windows 9x NT Esta gu a fue compilada por Bob Silva mailto bob silva mail umesd k12 or us La ltima revisi n puede encontrarse en http www umesd k12 or us php win32install html Esta gu a proporciona soporte de instalacion para e Personal Web Server se recomienda la ltima versi n Internet Information Server 3 6 4 e Apache 1 3 x Omni HTTPd 2 0b1 Pasos Generales de Instalacion Los siguientes pasos deben realizarse en todas las instalaciones antes de las instrucciones especificas de cada servidor Extraiga el archivo de distribuci n a un directorio de su elecci n C PHP3 es un buen comienzo e Copie el archivo php3 ini dist a su directorio WINDOWS y ren mbrelo a php3 ini Su directorio WINDOWS es t picamente c windows para Windows 95 98 c winnt o c winnt40 para servidores NT e Edite su archivo php3 ini Necesita cambiar la opci n extension dir para que apunte a su php install dir o a donde quiera que haya puesto sus archivos php3_ dll P ej cAphp3 Si est utilizando Omni Httpd no siga el siguiente paso Fije el doc
35. n si est ejecutando la versi n CGI bajo Apache Cuando se utiliza el PHP como un ejecutable CGI siempre comprueba primero is est siendo utilizado bajo redirecci n por ejemplo bajo Apache usando directivas Action Esto asegura que el ejecutable del PAP no se puede usar para saltarse los mecanismos est nder de autentificaci n del servidor web llamando al ejecutale directamente como en http my host cgi bin php secret doc html Este ejemplo accede al archivo http my host secret doc html pero sin respetar ning n ajuste de seguridad del httpd para el directorio secret 21 Cap tulo 3 Instalaci n No habilitando esta opci n se deshabilita la comprobaci n y se permite el saltarse los ajustes de seguridad y autenticaci n del httpd Haga esto s lo si el software de su servidor no puede indicar que se ha realizado una redirecci n segura y que todos sus archivos bajo la raiz de documentos y los directorios de los usuarios pueden ser accedidos por cualquiera Lea la secci n en el capitulo de seguridad acerca de esta opci n disable short tags disable short tags Deshabilita las etiguetas de PHP en formato corto lt gt Debe deshabilitar el formato corto si desea usar PHP con XML Con el formato corto deshabilitado la nica etigueta de c digo de PHP es lt php gt Esta opci n s lo fija el valor por defecto Puede ser habilitada o deshabilitada posteriormente mediante la directiva short open tag en el archi
36. n de PHP como m dulo Apache Se utiliza por sitios que desean habilitar la ejecuci n del PHP directorio por directorio o en base a cada servidor virtual Poniendo php3 engine off en los sitios apropiados del archivo httpd conf se puede habilitar o deshabilitar el PHP error_log string Nombre del fichero para registrar los errores de un script Si se utiliza el valor especial syslog los errores se env an al registro de errores del sistema En UNIX se refiere a syslog 3 y en Windows NT al registro de eventos El registro de errores del sistema no es soportado bajo Windows 95 30 Cap tulo 4 Configuraci n error reporting integer Fija el nivel de informe de errores El par metro es un entero que representa un campo de bits Sume los valores de los niveles de informe de error que desea Tabla 4 1 Niveles de Informe de Errores valor de bit informe habilitado 1 errores normales 2 avisos normales 4 errores del troceador parser 8 lavisos de estilo no criticos El valor por defecto para esta directiva es 7 se muestran los errores normales avisos normales y errores de parser open_basedir string Limita los archivos que se pueden abrir por el PHP al rbol de directorios especificado Cuando un script intenta abrir un archivo con por ejemplo fopen o gzopen se comprueba su localizaci n Si el fichero est fuera del rbol de directorios especificado PHP se negara a abrirlo Todos los enlaces s
37. onen O a pi een Ro da II Referencia del Lenguaje o eseseooono seo eone ono on ee one cn none o onen P one KSK esc ent sn non noo ea nen Ronen eno nove 0 KITE REST RR O T O P A OA Saliendo de HIM os PRES S P P Ci RR R ON O O NITO A REO ARE O P OY ete Cadena R O O E a Conversi n de Cadenas c ccccccesssccccessssceceecssasceccecssaseeecesaeseceecssaeseecesesaseceeeseeeeeeeesea A A dc nao cena a done savo s E E tao oa toa to JO db Dao eo EA Ada Da Eau RO A Oo o onan Variables predefinidas c cccccseecssssssesescscsesescacscseececavavasecessvavesessssnesesesensseacscisasacacscssseesaes Variables de A pachel it E PO APP UE RR ERO VO DD O POP esas o ial Ai O O A A AAE A a Formularios HTML GET y POST eee eee eee eee een IMAGE SUBMIT variable names ccccccesseceeeeeceeseceeeaeeceeeeeesueeceseeeseeeees Cookies HTTP PPR P V O O O ita ias KP mu Puntos en los nombres de variables de entrada ooooocnnoccnonccncoonncononnconn ccoo oncnnnnnononnnnno da A VSV ES And Von A di caia Cesc E E SECT e N PPR P O E E E TAE OEE A A E T TER E AE A SS E 77 E E etree eee aa S ee E neal z me See Aten mci aa ee a eee ee A O rue oR AREA Operadores LOgiCOS scssssssssssssessssssssssescescsssesssssssssesesssesssassesessesccecessesessssesessseseeseatssseessaseed io A Operadores de Cadenal A 12 Estructuras de Control cccccscccsssssssscsscsssssssecssscsesssssevscesssss
38. otro mysql max_persistent integer El n mero m ximo de conexiones persistentes de MySQL por proceso mysql max_links integer El n mero m ximo de conexiones de MySQL por proceso incluyendo las persistentes Directivas de Configuraci n de mSQL msql allow_persistent boolean Si se permiten o no conexiones persistentes de mSQL msgl max persistent integer El n mero m ximo de conexiones persistentes mSOL por proceso msql max_links integer El n mero m ximo de conexiones de mSQL por proceso incluyendo las persistentes Directivas de Configuraci n de Postgres pgsgl allow persistent boolean Si se permiten o no conexiones persistentes de Postgres 39 Cap tulo 4 Configuraci n pgsgl max persistent integer El n mero m ximo de conexiones persistentes Postgres por proceso pgsql max_links integer El n mero maximo de conexiones de Postgres por proceso incluyendo las persistentes SESAM Configuration Directives sesam oml string Name of BS2000 PLAM library containing the loadable SESAM driver modules Required for using SESAM functions The BS2000 PLAM library must be set ACCESS READ SHARE YES because it must be readable by the apache server s user id sesam configfile string Name of SESAM application configuration file Reguired for using SESAM functions The BS2000 file must be readable by the apache server s user id The application configuration file will usually contain a configuration like s
39. outputs Constant and issues a notice 2 gt Constantes predefinidas PHP ofrece un largo n mero de constantes predefinidas a cualquier script en ejecuci n Muchas de estas constantes sin embargo son creadas por diferentes extensiones y solo estar n presentes si dichas extensiones est n disponibles bien por carga din mica o porque has sido compiladas Se puede encontrar una lista de constantes predefinidas en la seccion Constantes predefinidas 72 Cap tulo 10 Expresiones Cap tulo 10 Expresiones Las expresiones son la piedra angular de PHP En PHP casi cualquier cosa que escribes es una expresi n La forma m s simple y ajustada de definir una expresi n es cualquier cosa que tiene un valor Las formas m s b sicas de expresiones son las constantes y las variables Cuando escribes a 5 est s asignando 5 a a 5 obviamente tiene el valor 5 o en otras palabras 5 es una expresi n con el valor 5 en este caso 5 es una constante entera Despu s de esta asignaci n esperar s que el valor de a sea 5 tambi n de manera que si escribes b a esperas que se comporte igual que si escribieses b 5 En otras palabras a es una expresi n tambi n con el valor 5 Si todo va bien eso es exactamente lo que pasar Las funciones son un ejemplo algo m s complejo de expresiones Por ejemplo considera la siguiente funci n function foo 4 return 5 Suponiendo que est s familiar
40. powerful point to note here is that the logical flow of the script remains intact Only one of the HTML blocks will end up getting sent to the viewer depending on if stestr returned TRUE or FALSE In other words if the string MSTE was found or not Dealing with Forms One of the most powerful features of PHP is the way it handles HTML forms The basic concept that is important to understand is that any form element in a form will automatically be available to your PHP scripts Please read the manual section on Variables from outside of PHP for more information and examples on using forms with PHP Here s an example HTML form Ejemplo 2 6 A simple HTML form lt form action action php method POST gt Your name lt input type text name name gt Your age lt input type text name age gt lt input type submit gt lt form gt There is nothing special about this form It is a straight HTML form with no special tags of any kind When the user fills in this form and hits the submit button the action php page is called In this file you would have something like this Ejemplo 2 7 Printing data from our form Hi lt php echo POST name gt You are lt php echo _POST age gt years old A sample output of this script may be Hi Joe You are 22 years old 10 Cap tulo 2 A simple tutorial It should be obvious what this does There is nothing more to it The _POST name and
41. resultado de la expresi n Por ejemplo Sa 3 Sa 5 establece a a 8 como si hubi semos escrito a a 5 b Hola Sb Ah establece b a Hola Ah igual que si hici semos b b Ah F jate en que la asignaci n realiza una nueva copia de la variable original asignaci n por valor por lo que cambios a la variable original no afectan a la copia Esto puede tener inter s si necesitas copiar algo como un array con muchos elementos dentro de un bucle que se repita muchas veces cada vez se realizar una nueva copia del array PHP4 soporta asignaci n por referencia usando la sintaxis var amp Sothervar pero esto no es posible en PHP3 Asignaci n por referencia quiere decir que ambas variables acabar n apuntando al mismo dato y que nada es realmente copiado 78 Operadores Bit a bit Cap tulo 11 Operadores Los operadores bit a bit te permiten activar o desactivar bits individuales de un entero Tabla 11 2 Operadores Bit a bit ejemplo nombre resultado a amp b Y Se activan los bits que est n activos tanto en a como b a b O Se activan los bits que est n activos en a o que lo est n en b a b Xor o exclusiva Se activan los bits que est n activos en a o en b pero no en ambos a la vez a No Se activan los bits que no est n activos en a a lt lt b Desplazamiento a la izquierda Desplaza los bits de
42. root para que apunte a la raiz web de sus servidores P ej c apache htdocs o c webroot 23 Cap tulo 3 Instalaci n Elija qu m dulos desear a cargar cuando comience el PHP Puede descomentar las l neas extension php3 dll para cargar estos m dulos Algunos m dulos requieren que tenga instaladas en sus sistema librer as adicionales para que el m dulo funcione correctamente El FAQ http www php net FAQ php de PHP tiene m s informaci n sobre d nde obtener librer as de soporte Tambi n puede cargar un m dulo din micamente en su script utilizando dl php_ dll Enel PWS y el IIS puede fijar el browscap ini para que apunte a c windows system inetsrv browscap ini bajo Windows 95 98 y a c winnt system32 inetsrv browscap ini bajo NT Server Las DLL para las extensiones del PHP van precedidas de php3_ Esto evita confusiones entre las extensiones del PHP y sus librer as de soporte Windows 95 98 NT y PWS IIS 3 El m todo recomendado para configurar estos servidores es usar el archivo INF inclu do con la distribuci n php iis reg inf Quiz s desee editar este archivo y asegurarse que las extensiones y directorios de instalaci n se ajustan a su configuraci n O puede seguir los pasos que siguen para hacerlo de forma manual AVISO Estos pasos conllevan el trabajar directamente con el registro de windows Un error aqu puede dejar su sistema en un estado inestable Le recomendamos encareci
43. variable scope the script is actually being run on the remote server and the result 1s then being included into the local script This example assumes that someserver is configured to parse php x files and not txt files Also works here means that the variables Svarone and vartwo are available within the include ed file Won t work file txt wasn t handled by someserver include http someserver file txt varone 18vartwo 2 99 Cap tulo 12 Estructuras de Control Won t work looks for a file named file php varone l vartwo 2 on the local filesystem include file php varone l vartwo 2 Works include http someserver file php varone 18vartwo 2 Svarone 1 Svartwo 2 include file txt Works include file php Works See also equi require_once include once readfile and viriual require_once The require_once statement replaces itself with the specified file much like the C preprocessor s include works and in that respect is similar to the require statement The main difference is that in an inclusion chain the use of require_once will assure that the code is added to your script only once and avoid clashes with variable values or function names that can happen For example if you create the following 2 include files utils inc and foolib inc Ejemplo 12 2 utils inc lt php define PHPVERSION floor phpversion echo GLO
44. 2 conversi n de calendarios traducci n Como podeis ver esta p gina no es suficiente para enumerar todas las caracter sticas y beneficios que PHP ofrece Consultar las secciones Instalando PHP y Referencia de las funciones para una explicaci n de las extensiones mencionadas aqui Cap tulo 2 A simple tutorial Cap tulo 2 A simple tutorial Here we would like to show the very basics of PHP in a short simple tutorial This text only deals with dynamic webpage creation with PHP though PAP is not only capable of creating webpages See the section titled What can PHP do for more information PHP enabled web pages are treated just like regular HTML pages and you can create and edit them the same way you normally create regular HTML pages What do I need In this tutorial we assume that your server has support for PHP activated and that all files ending in php are handled by PHP On most servers this is the default extension for PHP files but ask your server administrator to be sure If your server supports PHP then you don t need to do anything Just create your php files and put them in your web directory and the server will magically parse them for you There is no need to compile anything nor do you need to install any extra tools Think of these PHP enabled files as simple HTML files with a whole new family of magical tags that let you do all sorts of things Your first PHP enabled page Create a file named hello p
45. 2 por el Grupo de documentaci n de PHP Los miembros de este grupo se encuentran listados en la primera p gina de este manual Este manual puede ser redistribuido bajo los t rminos de la GNU General Public License publicada por la Free Software Foundation tanto bajo la versi n 2 de esta licencia o bajo versiones posteriores La secci n Extendiendo PHP 4 0 de este manual es copyright 2000 por Zend Technologies Ltd Este material puede ser distribuido solamente bajo los terminos y condiciones de la Open Publication License v1 0 posterior la ltima versi n est disponible en http www opencontent org openpub Tabla de contenidos da ak icone il ic a a di need EE aa ed kareta Que es PHP Sarre ea enn O A A E S A A Eau oo PERO EO E O alae aan 6 SGA DDR RU SRA O R VO L PIN cea 6 Something Usetull cuco tt a a a E Using old code with new versions Of PHP eee eee eee eee een dd era E O O P O O O O O O O PR a iia bas O o OE Instrucciones R pidas de Instalaci n Versi n M dulo de Apache KATA A A o A OVO aisle MU OD ee A OOP POV O Opciones de soporte para Base de Datos eee Adabas D SOD PMPO e A AP Una librer a a medida de ODBC 20000 ee eee ee eee 00000000 eo eee nen ODBC Unificado 53s ds be ssd cess waves dekou E A S aso a eva PO e E Vo ea PA e E AA os iaa ips EENEN RD EE DR RD E GENRO MARE aiii with config file pa
46. BALS ARE NICE n function goodTea return Oolong tea tastes good Ejemplo 12 3 foolib inc lt php require utils inc function showVar var if PHPVERSION 4 print_r Svar else dump var var bunch of other functions 2 gt 100 Cap tulo 12 Estructuras de Control And then you write a script cause_error_require php Ejemplo 12 4 cause error reguire php lt php require foolib inc the following will generate an error require utils inc foo array 1 array complex quaternion echo this is requiring utils inc again which is also n echo required in foolib inc n echo Running goodTea goodTea n echo Printing foo n showVar foo 2 gt When you try running the latter one the resulting ouptut will be using PHP 4 01p12 GLOBALS ARE NICE GLOBALS ARE NICE Fatal error Cannot redeclare causeerror in utils inc on line 5 By modifying foolib inc and cause_errror_require php to use require once instead of require and renaming the last one to avoid error require once php we have Ejemplo 12 5 foolib inc fixed require once utils inc function showVar Svar Ejemplo 12 6 avoid error require once php require once foolib inc require once utils inc foo array 1 array complex quaternion And when running the latter the output will be using PHP
47. DBC Unix dbm Tambien tenemos una extensi n DBX de abstracci n de base de datos que permite usar de forma Cap tulo 1 Introducci n transparente cualquier base de datos soportada por la extension Adicionalmente PHP soporta ODBC The Open Database Connection standard asi que podeis conectar a cualquier base de datos que soporte este estandar PHP tambien tiene soporte para comunicarse con otros servicios usando protocolos tales como LDAP IMAP SNMP NNTP POP3 HTTP COM en Windows y muchos otros Tambien se pueden crear raw sockets PHP soporta WDDX para intercambio de datos entre lenguajes de programaci n en web Y hablando de interconexi n PHP puede utilizar objetos Java de forma transparente como objetos PHP Y la extensi n de CORBA puede ser utilizada para acceder a objetos remotos PHP tiene unas caracter sticas muy tiles para el proceso de texto desde expresiones regulares POSIX Extended Perl hasta parseador de documentos XML Para parsear y acceder documentos XML soportamos los estandares SAX y DOM Podeis utilizar la extensi n XSLT para transformar documentos XML Si usais PHP en el campo del comercio electr nico encontrareis muy tiles las funciones Cybercash CyberMUT VeriSign Payflow Pro y CCVS para vuestros programas de pago Para terminar tenemos muchas otras extensiones muy interesantes las funciones del motor de b squedas mnoGoSearch funciones para pasarelas de IRC utilidades de compresi n gzip bz
48. HP y entra en modo HTML al principio del archivo referenciado y vuelve de nuevo al modo PHP al final Por esta raz n cualquier c digo dentro del archivo referenciado que debiera ser ejecutado como c digo PHP debe ser encerrado dentro de de comienzo y fin de PHP Esto sucede cada vez que se encuentra la sentencia include as que se puede usar una sentencia include dentro de una estructura de bucle para incluir un n mero de archivos diferentes Sarchivos array primero inc segundo inc tercero inc for i 0 Si lt count archivos i include archivos i include difiere de require en que la sentencia include se re eval a cada vez que se encuentra y s lo cuando est siendo ejecutada mientras que la sentencia require se reemplaza por el archivo 97 Cap tulo 12 Estructuras de Control referenciado cuando se encuentra por primera vez se vaya a evaluar el contenido del archivo o no por ejemplo si est dentro de una sentencia if cuya condici n evaluada es falsa Debido a queinclude es una construcci n especial del lenguaje se debe encerrar dentro de un bloque de sentencias si est dentro de un bloque condicional Esto es ERR NEO y no funcionar como se desea if condicion include Sarchivo else include Sotro Esto es CORRECTO if condicion include Sarchivo else include otro En ambos PHP3 y PHP4 es posible
49. L El par metro es el directorio base de la instalaci n de PostgreSQL y por defecto vale usr local pgsal Vea tambi n Directivas de Configuraci n de Postgres en el larchivo de configuraci n P gina de PostgreSQL http www postgreSQL org Solid with solid DIR Incluye soporte para Solid El par metro es el directorio de instalaci n y vale por defecto usr local solid P gina de Solid http www solidtech com Sybase with sybase DIR Incluye soporte para Sybase El par metro es el directorio de instalaci n y vale por defecto home sybase Vea tambi n Directivas de Configuraci n de Sybase en el archivo de configuraci n P gina de Sybase http www sybase com Sybase CT with sybase ct DIR Incluye soporte para Sybase CT El par metro es el directorio de instalaci n de Sybase CT y por defecto vale home sybase Vea tambi n Directovas de Configuraci n de Sybase CT en el archivo de configuraci n Velocis with velocis DIR Incluye soporte para Velocis El par metro es el directorio de instalaci n de Velocis y vale por defecto usr local velocis Pagina de Velocis http www raima com 17 Cap tulo 3 Instalaci n Una librer a a medida de ODBC with custom odbc DIR Incluye soporte para una librer a a medida arbitraria de ODBC El par metro es el directorio base y por defecto vale usr local Esta opci n implica que se ha definido CUSTOM_ODBC_LIBS cuando se ejecut e
50. Manual de PHP Stig Seether Bakken Alexander Aulbach Egon Schmid Jim Winstead Lars Torben Wilson Rasmus Lerdorf Andrei Zmievski Jouni Ahto Editado por Rafael Martinez Coordinador V ctor Fern ndez Leonardo Boshell 04 11 2002 Copyright 1997 1998 1999 2000 2001 2002 por el Grupo de documentaci n de PHP Copyright Este manual es Copyright 1997 1998 1999 2000 2001 2002 por el Grupo de documentaci n de PHP Los miembros de este grupo se encuentran listados en la primera p gina de este manual Este manual puede ser redistribuido bajo los t rminos de la GNU General Public License publicada por la Free Software Foundation tanto bajo la versi n 2 de esta licencia o bajo versiones posteriores La secci n Extendiendo PHP 4 0 de este manual es copyright O 2000 por Zend Technologies Ltd Este material puede ser distribuido solamente bajo los terminos y condiciones de la Open Publication License v1 0 posterior la ltima versi n est disponible en http www opencontent org openpub Manual de PHP por Stig Sether Bakken Alexander Aulbach Egon Schmid Jim Winstead Lars Torben Wilson Rasmus Lerdorf Andrei Zmievski y Jouni Ahto Editado por Rafael Mart nez Coordinador V ctor Fern ndez y Leonardo Boshell Publicado 04 11 2002 Copyright O 1997 1998 1999 2000 2001 2002 por el Grupo de documentaci n de PHP Copyright Este manual es O Copyright 1997 1998 1999 2000 2001 200
51. Something Useful Let s do something a bit more useful now We are going to check what sort of browser the person viewing the page is using In order to do that we check the user agent string that the browser sends as part of its HTTP request This information is stored in a variable Variables always start with a dollar sign in PHP The variable we are interested in right now is _SERVER HTTP_USER_AGENT Cap tulo 2 A simple tutorial PHP Autoglobals Note is a special reserved PHP variable that contains all web server information It s known as an Autoglobal or Superglobal See the related manual page on Autoglobals for more information These special variables were introduced in PHP 4 1 0 http www php net release 4 1 0 php Before this time we used the older HTTP VARS arrays instead such as HTTP SERVER VARS Although deprecated these older variables still exist See also the note on old code To display this variable we can simply do Ejemplo 2 2 Printing a variable Array element lt php echo _SERVER HTTP_USER_AGENT gt A sample output of this script may be Mozilla 4 0 compatible MSIE 5 01 Windows NT 5 0 There are many types of variables available in PHP In the above example we printed an Array element Arrays can be very useful _ SERVER is just one variable that s automatically made available to you by PHP A list can be seen in the Reser
52. a Y ahora comp ralo con function makeyogurt flavour type acidophilus return Haciendo un bol de type flavour An echo makeyogurt mora funciona como se esperaba La salida de este ejemplo es Haciendo un bol de acidophilus mora Lista de longitud variable de par metros PHP4 soporta las listas de longitud variable de par metros en las funciones definidas por el usuario Es realmente f cil usando las funciones func num args y No necesita de ninguna sintaxis especial y las listas de par metros pueden ser escritas en la llamada a la funci n y se comportar n de la manera esperada 106 Cap tulo 13 Funciones Devolver valores Los valores se retornan usando la instrucci n opcional return Puede devolverse cualquier tipo de valor incluyendo listas y objetos function square num return num Snum echo square 4 saca 16 No puedes devolver m ltiples valores desde una funci n pero un efecto similar se puede conseguir devolviendo una lista function small_numbers 1 return array 0 1 2 list zero Sone two small numbers old function La instrucci n old function permite declarar una funci n usando una sintaxis id ntica a la de PHP FI2 excepto que debes reemplazar function por old function Es una caracter stica obsoleta y deber a ser usada nicamente por el conversor PHP FI2 gt PHP3 Aviso Las funciones declaradas co
53. a que la gente puede cambiar variables globales inadvertidamente En PHP las variables globales deben ser declaradas globales dentro de la funci n si van a ser utilizadas dentro de dicha funci n Veamos un ejemplo Sa 1 Sb 2 Function Sum global a b Sb Sa Sb Sum echo b El script anterior producir la salida 3 Al declarar a y b globales dentro de la funci n todas las referencias a tales variables se referir n a la versi n global No hay l mite al n mero de variables globales que se pueden manipular dentro de una funci n Un segundo m todo para acceder a las variables desde un mbito global es usando el array SGLOBALS propio de PHP3 El ejemplo anterior se puede reescribir as Sa ds Sb gt 25 Function Sum 4 SGLOBALS b SGLOBALS a GLOBALS b Sum echo b El array GLOBALS es un array asociativo con el nombre de la variable global como clave y los contenidos de dicha variable como el valor del elemento del array 64 Cap tulo 8 Variables Otra caracter stica importante del mbito de las variables es la variable static Una variable est tica existe s lo en el mbito local de la funci n pero no pierde su valor cuando la ejecuci n del programa abandona este mbito Consideremos el siguiente ejemplo Function Test Sa 0 echo Sa Sat Esta funci n tiene poca utilidad ya que cada vez que es Ilamada asigna a a el valor O y representa un 0
54. a sentencia switch la condici n se eval a s lo una vez y el resultado se compara a cada sentencia case En una sentencia elseif la condici n se eval a otra vez Si tu condici n es m s complicada que una comparaci n simple y o est en un bucle estrecho un switch puede ser m s r pido La lista de sentencias de un case puede tambi n estar vac a lo cual simplemente pasa el control a la lista de sentencias del siguiente case 94 Cap tulo 12 Estructuras de Control switch Si case 0 case 1 case 2 print i es menor que 3 pero no negativo break case 3 print i es 3 Un case especial es el default case Este case coincide con todo lo que no coincidan los otros case Por ejemplo switch Si case 0 print i es igual a 0 break case 1 print i es igual a 1 break case 2 print i es igual a 2 break default print i no es igual a 0 10 2 La expresi n case puede ser cualquier expresi n que se eval e a un tipo simple es decir n meros enteros o de punto flotante y cadenas de texto No se pueden usar aqui ni arrays ni objetos a menos que se conviertan a un tipo simple La sintaxis alternativa para las estructuras de control esta tambi n soportada con switch Para mas informaci n ver Sintaxis alternativa para estructuras de control switch Si Case 0 print i es igual 0 break Case 1 print i es igual a 1 break case 2 print i es igual a 2 break d
55. accesibles las variables de entorno autom ticamente trat ndolas como variables normales echo SHOME Shows the HOME environment variable if set Dado que la informaci n que llega v a mecanismos GET POST y Cookie crean autom ticamente variables de PHP algunas veces es mejor leer variables del entorno expl citamente para asegurarse de que se est trabajando con la versi n correcta La funci n getenv se puede usar para ello Tambi n se puede asignar un valor a una variable de entorno con la funci n putenv Puntos en los nombres de variables de entrada T picamente PHP no altera los nombres de las variables cuando se pasan a un script De todas formas hay que notar que el punto no es un car cter v lido en el nombre de una variable PHP Por esta raz n mire esto Svarname ext nombre de variable no v lido Lo que el int rprete ve es el nombre de una variable varname seguido por el operador de concatenaci n y seguido por la prueba es decir una cadena sin entrecomillar que no coincide con ninguna palabra clave o reservada conocida ext Obviamente no se pretend a que fuese este el resultado Por esta raz n es importante hacer notar que PHP reemplazar autom ticamente cualquier punto en los nombres de variables de entrada por guiones bajos subrayados 68 Cap tulo 8 Variables Determinando los tipos de variables Dado que PHP determina los tipos de las variables y los convierte general
56. ador contienen un gui n en vez de un subrayado gui n bajo pero PHP convierte el gui n en subrayado autom ticamente Cookies HTTP PHP soporta cookies de HTTP de forma transparente tal y como est n definidas en en las Netscape s Spec http www netscape com newsref std cookie_spec html Las cookies son un mecanismo para almacenar datos en el navegador y as rastrear o identificar a usuarios que vuelven Se pueden crear cookies usando la funci n SetCookie Las cookies son parte de la cabecera HTTP as que se debe llamar a la funci n SetCookie antes de que se env e cualquier salida al navegador Es la misma restricci n que para la funci n header Cualquier cookie que se reciba procedente del cliente ser convertida autom ticamente en una variable de PHP como con los datos en los m todos GET y POST 67 Cap tulo 8 Variables Si se quieren asignar m ltiples valores a una sola cookie basta con a adir al nombre de la Por ejemplo SetCookie MyCookie Testing time 3600 N tese que una cookie reemplazar a una cookie anterior que tuviese el mismo nombre en el navegador a menos que el camino path o el dominio fuesen diferentes As para una aplicaci n de carro de la compra se podr a querer mantener un contador e ir pas ndolo P ej Ejemplo 8 3 SetCookie Example SCount SetCookie Count Count time 3600 SetCookie Cart SCount item time 3600 Variables de entorno PHP hace
57. al final Para ejecutar este script escriba setup Este script tambi n crear un archivo llamado do conf que contendr las opciones pasadas a la configuraci n Puede editar este archivo para cambiar algunas opciones sin tener que re ejecutar el setup Escriba luego do conf para ejecutar la configuraci n con las nuevas opciones Ejecutar el configure a mano Para ver las opciones de que dispone escriba configure help Los detalles sobre las distintas opciones de configuraci n son listados a continuaci n M dulo del Apache Para configurar el PHP como m dulo de Apache responda yes a Build as an Apache module la opci n with apache DZIR es la que lo configura y especifique el directorio base de la distribuci n de Apache Si ha desempacado el Apache en usr local www apache 1 2 4 este ser su directorio base de la distribuci n de Apache El directorio por defecto es usr local etc httpd M dulo fhttpd Para configurar el PHP como m dulo fhttpd responda yes a Build as an fhttpd module la opci n DIR es la que lo configura y especifique el directorio base del fuente del fhttpd El directorio por defecto es usr local src fhttpd Si est ejecutando fhttpd configurar PHP como m dulo le dar mejor rendimiento m s control y capacidad de ejecuci n remota CGI version El valor por defecto es configurar el PHP como programa CGI Si est ejecutando un servidor web para el que el PHP tiene sop
58. alor asignado Ten en cuenta que NO es 3 sino el valor combinado de a m s 3 se es el valor asignado a a Cualquier operaci n binaria puede ser usada en forma de operador asignaci n por ejemplo a 5 restar 5 del valor de a b 7 multiplicar el valor de b por 5 etc Hay otra expresi n que puede parecer extra a si no la has visto en otros lenguaes el operador condicional ternario Sfirst Ssecond third Si el valor de la primera subexpresi n es verdadero distinto de cero entonces se eval a la segunda subexpresi n si no se eval a la tercera y se es el valor El siguiente ejemplo te ayudar a comprender un poco mejor el pre y post incremento y las expresiones en general function double i return i 2 Sb Sa 5 asignar el valor cinco a las variables a y b Sc Satt postincremento asignar el valor original de a 5 a Sc Se Sd b preincremento asignar el valor incrementado de b 6 a Sd y a e en este punto tanto d como e son iguales a 6 SE double S d asignar el doble del valor de Sd antes del incremento 2 6 12 a Sg double e asignar el doble del valor de e despu s del incremento 2 7 14 a g Sh Sg 10 primero g es incrementado en 10 y termina valiendo 24 despu s el valor de la asignaci n 24 se asigna a Sh y Sh tambi n acaba valiendo 24 75 Cap tulo 10 Expresiones Al principio
59. aracter sticas especiales que pueda necesitar Se recomienda utilizar la librer a inclu da siempre que sea posible 19 Cap tulo 3 Instalaci n with config file path with config file path DIR El path utilizado para buscar el archivo de configuraci n cuando arranca el PHP With exec dir with exec dir DIR S lo permite ejecutar programas en DIR cuando est en modo seguro Por defecto vale usr local bin Esta opci n s lo fija el valor por defecto Puede ser cambiado posteriormente mediante la directiva safe mode exec dir en el fichero de configuraci n enable debug enable debug Habilita informaci n de depuraci n adicional Esto hace posible obtener informaci n m s detallada cuando hay problemas con el PHP N tese que esto no tiene que ver con las facilidades de depuraci n o con la informaci n disponible para los script PHP enable safe mode enable safe mode Habilita el modo seguro por defecto Esto impone varias restricciones sobre lo que el PHP puede hacer tales como abrir fichero s lo en el raiz de documentos Lea el para m s informaci n Los usuarios de CGI deber n siempre habilitar el modo seguro Esta opci n s lo fija el valor por defecto Puede ser habilitado o deshabilitado posteriormente mediante la directiva safe mode en el archivo de configuraci n enable track vars enable track vars Hace que el PHP lleve el control de d nde proceden las variables GET POST
60. damente que haga una copia de seguridad del registro con antelaci n El equipo de Desarrollo del PHP no se har responsable si se da a su registro Ejecute Regedit e Navegue hasta HKEY LOCAL MACHINE System CurrentControlSet Services W3Svc Parameters ScriptMap Enel men de edici n elija New gt String Value Escriba la extensi n que desea usar para sus script PHP P ej php3 Haga doble click en el nuevo valor de cadena y escriba la ruta al php exe en el campo del valor P ej c php3 php exe s s La parte s s son MUY importantes pues el PHP no funcionar correctamente sin ella e Repita estos pasos para cada extensi n que desee asociar con los scripts PHP Ahora navegue hasta HKEY CLASSES ROOT Enel men de edici n elija New gt Key D le a la clave el nombre de la extensi n que prepar en la secci n anterior P ej php3 Marque la nueva clave y en el panel del lado derecho haga doble click en default value y escriba phpfile Repita el ltimo paso para cada extensi n que haya preparado en la secci n previa Ahora cree otra New gt Key bajo HKEY CLASSES ROOT y denom nela phpfile 24 Cap tulo 3 Instalaci n e Marque la nueva clave phpfile y haga doble click en el panel derecho sobre default value y escriba PHP Script e Pulse el bot n derecho sobre la clave phpfile y seleccione New gt Key y ll mela Shell Pulse el bot n derech
61. delimitan el inicio de c digo PHP El int rprete ejecuta entonces todo el c digo que encuentra hasta que encuentra una etiqueta de fin de c digo que le dice al int rprete que siga ignorando el c digo siguiente Este mecanismo permite embeber c digo PHP dentro de HTML todo lo que est fuera de las etiquetas PHP se deja tal como est mientras que el resto se interpreta como c digo Hay cuatro conjuntos de etiquetas que pueden ser usadas para denotar bloques de c digo PHP De estas cuatro s lo 2 lt php gt y lt script language php gt lt script gt est n siempre disponibles el resto pueden ser configuradas en el fichero de php ini para ser o no aceptadas por el int rprete Mientras que el formato corto de etiquetas short form tags y el estilo ASP ASP style tags pueden ser convenientes no son portables como la versi n de formato largo de etiquetas Adem s si se pretende embeber c digo PHP en XML o XHTML ser obligatorio el uso del formato lt php gt para la compatibilidad con XML Las etiquetas soportadas por PHP son Ejemplo 6 1 Formas de escapar de HTML 1 lt php echo si quieres servir documentos XHTML o XML haz como aqu iacute n gt 2 lt echo esta es la m amp aacute s simple una instrucci amp oacute n de procesado SGML An lt expression gt Esto es una abreviatura de lt echo expression gt 3 lt script language php gt echo muchos editores c
62. derecho sobre el icono azul del OmniHTTPd que est en la barrita del sistema y elija Propiedades Paso 3 Pulse sobre web Server Global Settings Paso 4 En la pesta a External escriba virtual php3 actual c ruta al dir del php php exe Paso 5 En la pesta a Mime escriba virtual wwwserver stdcgi actual php3 Paso 6 Pulse en OK Repita los pasos 2 a 6 para cada extensi n que desee asociar al PHP M dulos del PHP Tabla 3 1 M dulos del PHP php3 calendar dll Funciones de conversi n de calendario php3 crypt dll Funciones de criptograf a php3 dbase dll Funciones para DBase php3 dbm dll Emulaci n GDBM con la librer a Berkeley DB2 php3 filepro dll Acceso S LO LECTURA a bases de datos filepro php3 gd dil Funciones de librer a GD para manipular GIF php3 hyperwave dll Funciones de HyperWave php3 imap4r2 dil Funciones de IMAP 4 php3 Idap dil Funciones de LDAP php3 msall dll Cliente de mSQL 1 php3 msgl2 dll Cliente de mSQL 2 php3 mssql dll Cliente de MSSQL client requiere las librer as de MSSQL DB php3 mysql dill Funciones de MySQL php3 nsmail dll Funciones de correo de Netscape 26 Cap tulo 3 Instalaci n php3 oci73 dll Funciones de Oracle php3 snmp dll Funciones get y walk de SNMP s lo en NT php3 zlib dll Funciones de ZLib Problemas Lea las PMF FAQ Algunos problemas son m s comunes que otros Los m s comu
63. directiva lt php track vars gt HTTP_POST_VARS Un array asociativo de variables pasadas al script actual mediante el m todo HTTP POST S lo est disponible si variable tracking ha sido activado mediante la directiva de configuraci n track_vars o la directiva lt php track vars gt Ambito de las variables El mbito de una variable es el contexto dentro del que la variable est definida La mayor parte de las variables PHP s lo tienen un mbito simple Este mbito simple tambi n abarca los ficheros incluidos y los requeridos Por ejemplo Sa 1 include b inc Aqu la variable a dentro del script incluido b inc De todas formas dentro de las funciones definidas por el usuario aparece un mbito local a la funci n Cualquier variables que se use dentro de una funci n est por defecto limitada al mbito local de la funci n Por ejemplo Sa 1 mbito global 63 Cap tulo 8 Variables Function Test echo Sa referencia a una variable de mbito local Test Este script no producir salida ya que la orden echo utiliza una versi n local de la variable a a la que no se ha asignado ning n valor en su mbito Puede que usted note que hay una peque a diferencia con el lenguaje C en el que las variables globales est n disponibles autom ticamente dentro de la funci n a menos que sean expresamente sobreescritas por una definici n local Esto puede causar algunos problemas y
64. do php3 ini en PHP 3 0 y simplemente php ini a partir del PHP 4 0 es le do cuando arranca el PHP Para las versiones de PHP como m dulo de servidor esto s lo ocurre una vez al arrancar el servidor web Para la versi n CGI esto ocurre en cada llamada Cuando se utiliza PHP como m dulo Apache tambi n puede cambiar los ajustes de configuraci n utilizando directivas en los archivos de configuraci n del Apache y en los htaccess Con el PHP 3 0 hay directivas Apache que se corresponden a cada uno de los ajustes de configuraci n del php3 ini con la excepci n que su nombre va precedido de php3_ Con el PHP 4 0 s lo hay unas pocas directivas de Apache que le permiten cambiar los ajustes de configuraci n del PHP php_value nombre valor Fija el valor de la variable especificada php flag nombre on off Fija una opci n de configuraci n de tipo Boolean php_admin_value nombre valor Fija el valor de la variable especificada Los ajustes de configuraci n de tipo Admin s lo se pueden fijar desde los archivos principales de configuraci n del Apache y no desde los htaccess php admin flag nombre on off Fija una opci n de configuraci n de tipo Boolean Puede ver los ajustes de los valores de configuraci n en la salida de phpinfo Tambi n puede acceder a los valores individuales de los ajustes de configuraci n utilizando Directivas Generales de Configuraci n asp tags boolean Permite el uso de las etigueta
65. e su int rprete de comandos para ver una lista de las variables de entorno definidas Otras variables de entorno son las de CGI que est n ah sin importar si PHP se est ejecutando como un m dulo del servidor o como un int rprete CGI Variables de PHP Estas variables son creadas por el propio PHP 62 Cap tulo 8 Variables argv Array de argumentos pasados al script Cuando el script se ejecuta desde la l nea de comandos esto da un acceso al estilo de C a los par metros pasados en l nea de comandos Cuando se le llama mediante el m todo GET contendr la cadena de la petici n argc Contiene el n mero de par metros de la l nea de comandos pasados al script si se ejecuta desde la l nea de comandos PHP_SELF El nombre del fichero que contiene el script que se esta ejecutando relativo al directorio ra z de los documentos Si PHP se est ejecutando como int rprete de l nea de comandos esta variable no est disponible HTTP_COOKIE_VARS Un array asociativo de variables pasadas al script actual mediante cookies HTTP S lo est disponible si el seguimiento de variables ha sido activado mediante la directiva de configuraci n track_vars o la directiva lt php track vars gt HTTP_GET_VARS Un array asociativo de variables pasadas al script actual mediante el m todo HTTP GET S lo est disponible si variable tracking ha sido activado mediante la directiva de configuraci n track_vars o la
66. ed lt php to indicate the start of a PHP tag Then we put the PHP statement and left PHP mode by adding the closing tag gt You may jump in and out of PHP mode in an HTML file like this all you want A Note on Text Editors There are many text editors and Integrated Development Environments IDEs that you can use to create edit and manage PHP files A partial list of these tools is maintained at PHP Editors List http www itworks demon co uk phpeditors htm If you wish to recommend an editor please visit the above page and ask the page maintainer to add the editor to the list A Note on Word Processors Word processors such as StarOffice Writer Microsoft Word and Abiword are not good choices for editing PHP files If you wish to use one for this test script you must ensure that you save the file as PLAIN TEXT or PHP will not be able to read and execute the script A Note on Windows Notepad If you are writing your PHP scripts using Windows Notepad you will need to ensure that your files are saved with the php extension Notepad adds a txt extension to files automatically unless you take one of the following steps to prevent it When you save the file and are prompted to provide a name for the file place the filename in quotes i e hello php Alternately you can click on the Text Documents drop down menu in the save dialog box and change the setting to All Files You can then enter your filename without quotes
67. ee SESAM reference manual CNF B NAM K NOTYPE sesam_messagecatalog string Name of SESAM message catalog file In most cases this directive is not neccessary Only if the SESAM message file is not installed in the system s BS2000 message file table it can be set with this directive The message catalog must be set ACCESS READ SHARE YES because it must be readable by the apache server s user id Directivas de Configuraci n de Sybase sybase allow_persistent boolean Si se permiten o no conexiones persistentes de Sybase sybase max_persistent integer El n mero m ximo de conexiones persistentes Sybase por proceso 36 Cap tulo 4 Configuraci n sybase max links integer El n mero m ximo de conexiones de Sybase por proceso incluyendo las persistentes Directivas de Configuraci n de Sybase CT sybct allow_persistent boolean Si se permiten o no conexiones persistentes de Sybase CT El valor por defecto es on sybct max_persistent integer El n mero m ximo de conexiones persistentes Sybase CT por proceso El valor por defecto es 1 que significa ilimitadas sybct max_links integer El n mero m ximo de conexiones de Sybase CT por proceso incluyendo las persistentes El valor por defecto es 1 que significa ilimitadas sybct min_server_severit y integer Los mensajes de servidor con gravedad mayor o igual que sybct min server severity ser n reportados como avisos Este valor tambi n se puede
68. efault print i no es igual a 0 1 o 2 endswitch 95 Cap tulo 12 Estructuras de Control require La sentencia require se sustituye a s misma con el archivo especificado tal y como funciona la directiva include de C Un punto importante sobre su funcionamiento es que cuando un archivo se incluye con include o se requiere con require el int rprete sale del modo PHP y entra en modo HT ML al principio del archivo referenciado y vuelve de nuevo al modo PHP al final Por esta raz n cualquier c digo dentro del archivo referenciado que debiera ser ejecutado como c digo PHP debe ser encerrado dentro de de comienzo y fin de PHP require no es en realidad una funci n de PHP es m s una construcci n del lenguaje Est sujeta a algunas reglas distintas de las de funciones Por ejemplo require no esta sujeto a ninguna estructura de control contenedora Por otro lado no devuelve ning n valor intentar leer un valor de retorno de una llamada a un require resulta en un error del int rprete A diferencia de include require siempre leer el archivo referenciado incluso si la l nea en que est no se ejecuta nunca Si se quiere incluir condicionalmente un archivo se usa include La sentencia conditional no afecta a require No obstante si la l nea en la cual aparece el require no se ejecuta tampoco se ejecutar el c digo del archivo referenciado De forma similar las estructuras de bucle no a
69. el directorio cgi bin del servidor web El documento del CERT CA 96 11 http www cert org advisories CA 96 1 1 interpreters in cgi bin dir html recomienda no instalar interpretes en cgi bin Aunque el binario PHP puede ser usado como interprete independiente PHP esta disefiado para prevenir los ataques que esta configuraci n hace posible e Accediendo a ficheros del sistema http my host cgi bin php etc passwd La informaci n introducida despues del signo de interrogaci n es transferida como argumento de la l nea de comando al int rprete por el interfaz del CGI Normalmente los interpretes abren y ejecutan el fichero especificado como el primer argumento en la l nea de comando Cuando se ejecuta como un CGI script PHP rechaza interpretar los argumentos de la l nea de comando Accediendo cualquier documento web en el servidor http my host cgi bin php secret doc html La informaci n con el camino path de la URL despues del nombre del binario PHP secret doc html es usada convencionalmente para especificar el nombre del fichero que sera abierto e interpretado por el programa CGI Normalmente algunas directivas del servidor web Apache Action son usadas para redireccionar peticiones de documentos como http my host secret script php3 al interprete PHP Con esta configuraci n el servidor web comprueba primero los permisos de acceso al directorio secret y despues crea la petici n redireccionada http my host cgi b
70. emplos de esta secci n puede cortar y pegar los ejemplos e insertar la siguiente l nea para ver por s mismo lo que va ocurriendo echo Sfoo Sfoo el tipo es gettype foo lt br gt n Nota La posibilidad de una conversi n autom tica a array no est definida actualmente Sa 1 Sa es un entero Sa 0 f Sa se convierte en un array en el que a 0 vale f 35 Cap tulo 7 Types Aunque el ejemplo anterior puede parecer que claramente deber a resultar en que a se convierta en un array el primer elemento del cual es f consideremos esto Sa 1 a es una cadena Sa 0 f Qu pasa con los ndices de las cadenas Qu ocurre Dado que PHP soporta indexaci n en las cadenas v a offsets usando la misma sintaxis que la indexaci n de arrays el ejemplo anterior nos conduce a un problema deber a convertirse a en un array cuyo primer elemento sea f o deber a convertirse f en el primer car cter de la cadena a Por esta raz n tanto en PHP 3 0 12 como en PHP 4 0b3 RCA el resultado de esta conversi n autom tica se considera que no est definido Los parches se est n discutiendo de todas formas Forzado de tipos El forzado de tipos en PHP funciona como en C el nombre del tipo deseado se escribe entre par ntesis antes de la variable a la que se pretende forzar Sfoo Sbar 10 foo es un entero double Sfoo Sbar es un doble Los forzados de tipo permitidos
71. en ese momento Para m s informaci n vea la secci n Conversi n de Tipos Enteros Los enteros se puede especificar usando una de las siguientes sintaxis Sa 1234 n mero decimal Sa 123 un n mero negativo Sa 0123 n mero octal equivalente al 83 decimal Sa 0x12 n mero hexadecimal equivalente al 18 decimal N meros en punto flotante Los n meros en punto flotante double se pueden especificar utilizando cualquiera de las siguientes sintaxis a 1 234 a 1 2e3 Cadenas Las cadenas de caracteres se pueden especificar usando uno de dos tipos de delimitadores Si la cadena est encerrada entre dobles comillas las variables que est n dentro de la cadena ser n expandidas sujetas a ciertas limitaciones de interpretaci n Como en C y en Perl el car cter de barra invertida V se puede usar para especificar caracteres especiales 49 Cap tulo 7 Types Tabla 7 1 Caracteres protegidos secuencia significado n Nueva l nea Vr Retorno de carro t Tabulaci n horizontal NA Barra invertida Signo del d lar ui Comillas dobles 0 7 1 3 la secuencia de caracteres que coincida con la expresi n regular es un car cter en notaci n octal x 0 9A Fa f 1 2 la secuencia de caracteres que coincida con la expresi n regular es un car cter en notaci n hexadecimal Se puede proteger cualguier otro car cter pero se producir una adve
72. ersistent boolean Si se permiten o no conexiones persistentes de Informix ifx max persistent integer El n mero m ximo de conexiones persistentes de Informix por proceso ifx max_links integer El n mero maximo de conexiones Informix por proceso incluyendo las persistentes ifx default_host string El servidor por defecto al que conectarse si no se especifica uno en ifx_connect o en i ifx default_user string El id de usuario por defecto para utilizar si no se especifica uno en ifx connect o en ifx default_password string La clave por defecto para utilizar si no se especifica uno en ifx connect o en ifx pconnect ifx blobinfile boolean F jelo a TRUE si desea recibir las columnas blob objetos binarios grandes en un archivo y a FALSE si las desea en memoria Puede cambiar el ajuste en tiempo de ejecuci n utilizando ifx blobinfile mode ifx textasvarchar boolean Fijelo a TRUE si desea recibir las columnas TEXT como cadenas normales en las instrucciones select y a FALSE Si quiere usar par metros de identificador de blobs Puede cambiar el ajuste en tiempo de ejecuci n utilizando ifx textasvarchar ifx byteasvarchar boolean F jelo a TRUE si desea devolver las columnas BYTE como cadenas normales en las instrucciones select y a FALSE Si quiere usar par metros de identificador de blobs Puede cambiar el ajuste en tiempo de ejecuci n utilizando ifx byteasvarchar ifx charasvarchar bo
73. es boolean integer float y string Para obtener el valor de una constante solo es necesario especificar su nombre A diferencia de las variables no se tiene que especificar el prefijo Tambien se puede utilizar la funci n constant para obtener el valor de una constante en el caso de que queramos expresarla de forma din mica Usa la funci n get_defined_constants parar obtener una lista de todas las constantes definidas Nota Las contantes y las variables globales se encuentran en un espacio de nombres distinto Esto implica que por ejemplo TRUE y STRUE son diferentes Si usas una constante todavia no definida PHP asume que est s refiri ndote al nombre de la constante en si Se lanzar un aviso si esto sucede Usa la funci n defined para comprobar la existencia de dicha constante Estas son las diferencias entre constantes y variables Las constantes no son precedidas por un s mbolo de dolar Las contantes solo pueden ser definidas usando la funci n define nunca por simple asignaci n Las constantes pueden ser definidas y accedidas sin tener en cuenta las reglas de alcanze del mbito Las constantes no pueden ser redefinidas o eliminadas despues de establecerse y e Las constantes solo puede albergar valores escalares 71 Cap tulo 9 Constantes Ejemplo 9 1 Definiendo constantes lt php define CONSTANT Hello world echo CONSTANT outputs Hello world echo Constant
74. esi n a una variable el valor ntegro de la expresi n original se copia en la variable de destino Esto quiere decir que por ejemplo despu s e asignar el valor de una variable a otra los cambios que se efect en a una de esas variables no afectar a la otra Para m s informaci n sobre este tipo de asignaci n vea Expresiones PHP4 ofrece otra forma de asignar valores a las variables asignar por referencia Esto significa que la nueva variable simplemente referencia en otras palabras se convierte en un alias de o apunta a la variable original Los cambios a la nueva variable afectan a la original y viceversa Esto tambi n significa que no se produce una copia de valores por tanto la asignaci n ocurre m s r pidamente De cualquier forma cualquier incremento de velocidad se notar s lo en los bucles cr ticos cuando se asignen grandes arrays u objetos Para asignar por referencia simplemente se antepone un ampersand amp al comienzo de la variable cuyo valor se est asignando la variable fuente Por ejemplo el siguiente trozo de c digo produce la salida Mi nombre es Bob dos veces lt php Sfoo Bob Asigna el valor Bob a foo Sbar amp S foo Referencia foo v a bar Sbar Mi nombre es Sbar Modifica Sbar echo foo foo tambi n se modifica echo Sbar 2 gt Algo importante a tener en cuenta es que s lo las variables con nombre pueden ser asignadas por referencia
75. fectan la conducta de reguire Aunque el c digo contenido en el archivo referenciado est todav a sujeto al bucle el propio require s lo ocurre una vez Esto significa que no se puede poner una sentencia require dentro de una estructura de bucle y esperar que incluya el contenido de un archivo distinto en cada iteraci n Para hacer esto usa una sentencia include require header inc When a file is reguire ed the code it contains inherits the variable scope of the line on which the require occurs Any variables available at that line in the calling file will be available within the called file If the require occurs inside a function within the calling file then all of the code contained in the called file will behave as though it had been defined inside that function If the require ed file is called via HTTP using the fopen wrappers and if the target server interprets the target file as PHP code variables may be passed to the require ed file using an URL request string as used with HTTP GET This is not strictly speaking the same thing as reguire ing the file and having it inherit the parent file s variable scope the script is actually being run on the remote server and the result 1s then being included into the local script This example assumes that someserver is configured to parse php x files and not txt files Also works here means that the variables Svarone and Svartwo are avai
76. hp under your webserver root directory with the following content Ejemplo 2 1 Our first PHP script hello php lt html gt lt head gt lt title gt PHP Test lt title gt lt head gt lt body gt lt php echo Hello World lt p gt gt lt body gt lt html gt The output of this script will be lt html gt lt head gt lt title gt PHP Test lt title gt lt head gt lt body gt Hello World lt p gt lt body gt lt html gt Cap tulo 2 A simple tutorial Note that this is not like a CGI script The file does not need to be executable or special in any way Think of it as a normal HTML file which happens to have a set of special tags available to you that do a lot of interesting things This program is extremely simple and you really didn t need to use PHP to create a page like this All it does is display Hello World using the PHPlecho statement If you tried this example and it didn t output anything or it prompted for download or you see the whole file as text chances are that the server you are on does not have PHP enabled Ask your administrator to enable it for you using the Installation chapter of the manual If you want to develop PHP scripts locally see the downloads http www php net downloads php section You can develop locally on any Operating system be sure to install an appropriate web server too The point of the example is to show the special PHP tag format In this example we us
77. imb licos son resueltos de modo que no es posible evitar esta limitaci n usando uno de ellos El valor especial indica que el directorio base ser aquel en el que reside el script Bajo Windows separe los directorios mediante punto y coma En el resto de sistemas sep relos con dos puntos Como m dulo de Apache los senderos para open basedir de los directorios padre se heredan ahora autom ticamente Nota El soporte para directorios m ltiples se a adi en la 3 0 7 El valor por defecto es permitir abrir todos los archivos gpc order string Fija el order de troceo de variables GET POST COOKIE El valor por defecto de esta directiva es GPC Fij ndola por ejemplo a GP har que el PHP ignore por completo las cookies y que sobreescriba las variables recibidas por GET con las que tengan el mismo nombre y vengan por POST ignore user abort string Por defecto est a on Si se cambia a off los script terminar n tan pronto como intenten enviar algo despu s de que un cliente ha roto la conexi n include path string Especifica una lista de directorios en los que las funciones require include y fopen_with_path buscan los archivos El formato es similar a la variable de entorno de sistema 31 Cap tulo 4 Configuraci n PATH una lista de directorios separados por dos puntos en UNIX o por punto y coma en Windows Ejemplo 4 1 include_path en UNIX include path home httpd php lib Ejemplo 4 2
78. in html para que contenga lo siguiente lt php include test inc cho De vuelta en main html lt br gt n gt En PHP4 la salida ser Antes del return De vuelta en main html No obstante PHP3 dar la siguiente salida Antes del return 27De vuelta en main html Parse error parse error in home torben public_html phptest main html on line 5 El error del int rprete es resultado del hecho de que la sentencia return est encerrada en un bloque de no funci n dentro de test inc Cuando el return se mueve fuera del bloque la salida es Antes del return 27De vuelta en main html El 27 esp reo se debe al hecho de que PHP3 no soporta devolver valores con return desde archivos como ese When a file islinclude ed the code it contains inherits the variable scope of the line on which the linclude occurs Any variables available at that line in the calling file will be available within the called file If the include occurs inside a function within the calling file then all of the code contained in the called file will behave as though it had been defined inside that function If the linclude ed file is called via HTTP using the fopen wrappers and if the target server interprets the target file as PHP code variables may be passed to the include ed file using an URL request string as used with HTTP GET This is not strictly speaking the same thing as include ing the file and having it inherit the parent file s
79. in php secret script php3 Desafortunadamente si la petici n es hecha de esta forma en un principio el servidor web no comprueba los permisos de acceso del fichero secret script php3 sino solamente del fichero cgi bin php De esta 4 Cap tulo 5 Seguridad manera cualquier usuario que pueda acceder cgi bin php tambien puede acceder a cualquier documento protegido en el servidor web En PHP a la hora de compilar la opci n de configuracion enable force cgi redirect y las directivas de configuracion a la hora de ejecutar doc_root y user_dir pueden ser usadas para prevenir este ataque si el arbol de documentos del servidor tiene cualquier directorio con acceso restringido Ver mas adelante la explicacion de las diferentes combinaciones Caso 1 solamente se sirven ficheros publicos Si tu servidor no contiene informacion que este protegida con clave o acceso de control de IPs no se necesitan estas opciones de configuracion Si tu servidor web no permite realizar redireccionamientos o el servidor no tiene modo de comunicar al binario PHP que la peticion es una peticion segura redireccionada podeis especificar la opcion disable force cgi redirect en el script de configuracion De todas maneras teneis que aseguraros que vuestros scripts PHP no conf en en la manera al llamar al script ni de forma directa http my host cgi bin php dir script php3 o por redireccion http my host dir script php3 Redireccionamiento puede se
80. izado con el concepto de funciones si no lo est s chale un vistazo al cap tulo sobre funciones asumir s que teclear c foo es esencialmente lo mismo que escribir c 5 y has acertado Las funciones son expresiones que valen el valor que retornan Como foo devuelve 5 el valor de la expresi n foo es 5 Normalmente las funciones no devuelven un valor fijo sino que suele ser calculado Desde luego los valores en PHP no se limitan a enteros y lo m s normal es que no lo sean PHP soporta tres tipos escalares enteros punto flotante y cadenas los tipos escalares son aquellos cuyos valores no pueden dividirse en partes menores no como los arrays por ejemplo PHP tambi n soporta dos tipos compuestos no escalares arrays y objetos Se puede asignar cada uno de estos tipos de valor a variables o bien retornarse de funciones sin ning n tipo de limitaci n Hasta aqu los usuarios de PHP FI 2 no deber an haber notado ning n cambio Sin embargo PHP lleva las expresiones mucho m s all al igual que otros lenguajes PHP es un lenguaje orientado a expresiones en el sentido de que casi todo es una expresi n Considera el ejemplo anterior a 5 Es sencillo ver que hay dos valores involucrados el valor de la constante entera 5 y el valor de a que est siendo actualizado tambi n a 5 Pero la verdad es que hay un valor adicional implicado aqu y es el valor de la propia asignaci n La asignaci n misma
81. l bucle Al comienzo de cada iteraci n se eval a expr2 Si se eval a como TRUE el bucle contin a y las sentencias anidadas se ejecutan Si se eval a como FALSE la ejecuci n del bucle finaliza Al final de cada iteraci n se eval a ejecuta expr3 Cada una de las expresiones puede estar vac a Que expr2 est vac a significa que el bucle deber a correr indefinidamente PHP implicitamente lo considera como TRUE al igual que C Esto puede que no sea tan in til como se podr a pensar puesto que a menudo se quiere salir de un bucle usando una sentencia break condicional en vez de usar la condici n de for Considera los siguientes ejemplos Todos ellos muestran n meros del 1 al 10 ejemplo 1 for Si 1 Si lt 10 i print 1 ejemplo 2 for Si 1 Si if i gt 10 89 Cap tulo 12 Estructuras de Control break print i ejemplo 3 Si 1 for 55 if i gt 10 break print 1 Si ejemplo 4 for i 1 Si lt 10 print Si i Por supuesto el primer ejemplo parece ser el mas elegante o quiz s el cuarto pero uno puede descubrir que ser capaz de usar expresiones vac as en bucles for resulta til en muchas ocasiones PHP tambi n soporta la sintaxis de dos puntos alternativa para bucles for for exprl expr2 expr3 sentencia endfor Otros lenguajes poseen una sentencia foreach para traducir un array o
82. l escritos puedan bloquear el servidor memory_limit integer Fija el tama o m ximo de memoria en bytes que se permite reclamar a un script Asi se evita que script mal escritos se coman toda la memoria dispomible de un servidor nsapi_ext string 32 Cap tulo 4 Configuraci n short_open_tag boolean Indica si se debe permitir el formato corto lt gt de la etiqueta de apertura del PHP Si desea utilizar PHP en combinaci n con XML deber desactivar esta opci n Si est desactivada deber utilizar el formato largo de la etiqueta de apertura lt php gt sgl safe mode boolean track errors boolean Si est habilitada el ltimo mensaje de error estar siempre presente en la variable global php errormsg track vars boolean Si est activada la informaci n de entrada de GET POST y de las cookies se puede encontrar en las matrices asociativas SATTP_GET_VARS HTTP_POST_VARS y HTTP COOKIE VARS respectivamente upload tmp dir string El directorio temporal utilizado para almacenar archivos cuando se env an al servidor Debe tener permiso de escritura para el usuario bajo el que corra el PHP user dir string El nombre base del directorio utilizado bajo el directorio inicial de un usuario para los archivos PHP Por ejemplo paginas html warn_plus_overloading boolean Si est activada esta opci n hace que el PHP muestre un aviso cuando el operador suma se utiliza en cadenas As es m s f cil encontrar se
83. l script de configuraci n Tambi n deber tener una cabecera odbc h v lida en alg n lugar de su sendero path de inclusi n Si no tiene uno cr elo e incluya su cabecera espec fica desde ah Su cabecera puede requerir algunas definiciones extra particularmente si es multiplataforma Def nalas en CFLAGS Por ejemplo puede usar Sybase SOL Anywhere bajo ONX como sigue CFLAGS DODBC ONX LDFLAGS lunix CUSTOM ODBC LIBS 1dblib lodbc configure with custom odbc usr lib sglany50 ODBC Unificado disable unified odbc Deshabilita el m dulo de ODBC Unificado que es un interfaz com n a todas las bases de datos con interfaces basados en ODBC tales como Solid y Adabas D Tambi n funciona para librer as normales de ODBC Ha sido probado con iODBC Solid Adabas D y Sybase SOL Anywhere Requiere que uno y s lo uno de estos m dulos o el m dulo de Velocis est habilitado o que se especifique una librer a a medida de ODBC Esta opci n s lo se puede aplicar si alguna de estas opciones es usada with iodbc o with custom odbc Vea tambi n Directivas de Configuraci n de ODBC Unificado en el archivo de configuraci n LDAP with 1dap DIR Incluye soporte para LDAP Lightweight Directory Access Protocol Protocolo Ligero de Acceso a Directorios El par metro es el directorio base de instalaci n de LDAP y por defecto vale usr local 1ldap Puede encontrar m s informaci n sobre LDAP en RFC1777 ftp ftp
84. la petici n actual si hay alguna Por ejemplo iso 8859 1 utf 8 HTTP_ENCODING Los contenidos de la cabecera Accept Encoding de la petici n actual si la hay Por ejemplo gzip HTTP_ACCEPT_LANGUAGE Los contenidos de la cabecera Accept Language de la petici n actual si hay alguna Por ejemplo en HTTP_CONNECTION Los contenidos de la cabecera Connection de la petici n actual si hay alguna Por ejemplo Keep Alive HTTP_HOST Los contenidos de la cabecera Host de la petici n actual si hay alguna HTTP_REFERER La direcci n de la p gina si la hay desde la que el navegador salt a la p gina actual Esto lo establece el navegador del usuario no todos los navegadores lo hacen HTTP_USER_AGENT Los contenidos de la cabecera User Agent de la petici n actual si hay alguna Indica el navegador que se est utilizando para ver la p gina actual p ej Mozilla 4 5 en X11 U Linux 2 2 9 i586 Entre otras cosas se puede usar este valor con para adaptar la funcionalidad de la p gina a las posibilidades del navegador del usuario REMOTE_ADDR La direcci n IP desde la que el usuario est viendo la p gina actual REMOTE_PORT El puerto que se est utilizando en la m quina del usuario para comunicarse con el servidor web 61 Cap tulo 8 Variables SCRIPT_FILENAME La v a de acceso absoluta del script que se est ejecutando SERVER_ADMIN El valor que se haya dado a la
85. lable within the require ed file 96 Cap tulo 12 Estructuras de Control Won t work file txt wasn t handled by someserver require http someserver file txt varone 18vartwo 2 Won t work looks for a file named file php varone l vartwo 2 on the local filesystem require file php varone l vartwo 2 Works require http someserver file php varone 18vartwo 2 Svarone 1 Svartwo 2 require file txt Works require file php Works En PHP3 es posible ejecutar una sentencia return dentro de un archivo referenciado con require en tanto en cuanto esa sentencia aparezca en el mbito global del archivo requerido require No puede aparecer dentro de ning n bloque lo que siginifica dentro de llaves En PHP4 no obstante esta capacidad ha sido desestimada Si se necesita esta funcionalidad v ase linclude Ver tambieninclude require once include once y virtual include La sentencia include incluye y eval a el archivo especificado Si URL fopen wrappers esta activada en PHP como est en la configuraci n inicial se puede especificar el fichero que se va a incluir usando una URL en vez de un fichero local con su Path Ver Ficheros remotos y fopen para m s informaci n Un punto importante sobre su funcionamiento es que cuando un archivo se incluye conlinclude o se requiere con require el int rprete sale del modo P
86. mas PHP soporta pasar par metros por valor el comportamiento por defecto por referencia y par metros Listas de longitud variable de par metros s lo est n soportadas en PHP4 y posteriores ver Listas de longitud variable de par metros y la referencia de las funciones func num args func get arg y func get args para m s informaci n Un efecto similar puede conseguirse en PHP3 pasando un array de par metros a la funci n function takes array input echo Sinput 0 Sinput 1 Sinput 0 Sinput 1 Pasar par metros por referencia Por defecto los par metros de una funci n se pasan por valor de manera que si cambias el valor del argumento dentro de la funci n no se ve modificado fuera de ella Si deseas permitir a una funci n modificar sus par metros debes pasarlos por referencia Si quieres que un par metro de una funci n siempre se pase por referencia puedes anteponer un ampersand amp al nombre del par metro en la definici n de la funci n 104 Cap tulo 13 Funciones function add some extra amp Sstring string y algo mas JF Sstr Esto es una Cadena add some extra str echo Sstr Saca Esto es una cadena y algo m s Si deseas pasar una variable por referencia a una funci n que no toma el par metro por referencia por defecto puedes anteponer un ampersand al nombre del par metro en la llamada a la funci n function foo Sbar
87. mbre ncart gt set_owner kris Nombramos el carro print Sncart gt owner Imprimimos el nombre del propietario ncart gt add item 10 1 Funcionalidad heredada de Cart Entre funciones de una clase la variable this hace referencia al propio objeto Tienes que usar this gt loquesea para acceder a una variable o funci n llamada loquesea del objeto actual Los constructores son funciones de una clase que se llaman autom ticamente al crear una nueva instancia objeto de una clase Una funci n se convierte en constructor cuando tiene el mismo nombre que la clase class Auto_Cart extends Cart function Auto Cart Sthis gt add item 10 1 Este ejemplo define una clase Auto Cart gue es un Cart junto con un constructor gue inicializa el carro con un item del tipo de art culo 10 cada vez gue se crea un nuevo Auto Cart con new Los constructores tambi n pueden recibir par metros y estos par metros pueden ser opcionales lo gue los hace m s tiles class Constructor Cart extends Cart function Constructor Cart item 10 num 1 1 Sthis gt add item Sitem num Compramos las mismas cosas aburridas de siempre Sdefault_cart new Constructor Cart Compramos las cosas interesantes Sdifferent cart new Constructor Cart 20 17 111 Cap tulo 14 Clases y Objetos Atenci n Para las clases derivadas el constructor de la clase padre no es llamado autom ticamente cuando se llama
88. mente seg n necesita no siempre resulta obvio de qu tipo es una variable dada en un momento concreto PHP incluye varias funciones que descubren de qu tipo es una variable Son lis Tong lis string cara vs object 69 Capitulo 9 Constantes Cap tulo 9 Constantes Una constante es un identificador para expresar un valor simple Como el nombre sugiere este valor no y LINE son una El puede variar durante la ejecuci n del script Las constantes especiales FIL excepci n a esto ya que actualmente no lo soin Una constante es sensible a may sculas por defecto Por convenci n los identificadores de constantes suelen declararse en may sculas El nombre de una constante sigue las mismas reglas que cualquier etiqueta en PHP Un nombre de constante v lido empieza con una letra o un caracter de subrayado seguido por cualquier n mero de letras n meros o subrayados Se podr an expresar mediante la siguiente expresi n regular a zA Z_ x7 xff a zA Z0 9_ x7f xff Nota Para nuestros prop sitos entenderemos como letra los caracteres a z A Z y los ASCII del 127 hasta el 255 0x7f Oxff El alcanze de una constante es global Es decir es posible acceder a ellas sin preocuparse por el mbito de alcance Sintaxis Se puede definir una constante usando la funci n define Una vez definida no puede ser modificada ni eliminada Solo se puede definir como constantes valores escalar
89. mo old function no pueden llamarse desde el c digo interno de PHP Entre otras esto significa que no puedes usarlas en funciones como lusort array_walk y register_shutdown_function Puedes solventar esta limitaci n escribiendo un wrapper en PHP3 ard que a su vez llame a la funci n declarada como old_function Funciones variable PHP soporta el concepto de funciones variable esto significa que si una variable tiene unos par ntesis a adidos al final PHP buscar una funci n con el mismo nombre que la evaluaci n de la variable e intentar ejecutarla Entre otras cosas esto te permite implementar retrollamadas callbacks tablas de funciones y dem s 107 Ejemplo 13 1 Ejemplo de funci n variable lt php function tool cho Dentro de foo lt br gt n function bar Sarg cho Dentro de bar el par metro fue Sarg lt br gt n Sfunc foo func Sfunc bar Sfunc test 2 gt Cap tulo 13 Funciones 108 Cap tulo 14 Clases y Objetos 109 class Cap tulo 14 Clases y Objetos Una clase es una colecci n de variables y de funciones que acceden a esas variables Una clase se define con la siguiente sintaxis lt php class Cart var Sitems Items en nuestro carro de la compra A adir num art culos de tipo artnr al carro function add item Sartnr num Sthis gt items Sartnr num Sacar num art culos del tipo artnr
90. ncia switch if Si 0 print i es igual a 0 93 Cap tulo 12 Estructuras de Control if i 1 print i es igual a 1 if i 2 print i es igual a 2 switch Si case 0 print i es igual a 0 break case 1 print i es igual a 1 break Case 2 print i es igual a 2 break Es importante entender c mo se ejecuta la sentencia switch para evitar errores La sentencia switch ejecuta l nea por l nea realmente sentencia a sentencia Al comienzo no se ejecuta c digo S lo cuando se encuentra una sentencia case con un valor que coincide con el valor de la expresi n switch PHP comienza a ejecutar las sentencias PHP contin a ejecutando las sentencias hasta el final del bloque switch O la primera vez que vea una sentencia break Si no se escribe una sentencia break al final de una lista de sentencias case PHP seguir ejecutando las sentencias del siguiente case Por ejemplo switch Si case 0 print i es igual a 0 case 1 print i es igual a 1 case 2 print i es igual a 2 Aqui si i es igual a O PHP ejecutar a todas las sentecias print Si i es igual a 1 PHP ejecutar a las ltimas dos sentencias print y s lo si i es igual a 2 se obtendr a la conducta esperada y solamente se mostrar a 1 es igual a 2 As es importante no olvidar las sentencias break incluso aunque pueda querer evitar escribirlas intencionadamente en ciertas circunstancias En un
91. ndo dos signos de d lar p ej SSa world En este momento se han definido y almacenado dos variables en el rbol de s mbolos de PHP a gue contiene hello y hello gue contiene world Es m s esta sentencia echo Sa a produce el mismo resultado gue echo Sa Shello p ej ambas producen el resultado hello world Para usar variables variables con arrays hay que resolver un problema de ambig edad Si se escribe a 1 el int rprete necesita saber si nos referimos a utilizar a 1 como una variable o si se pretend a utilizar a como variable y el ndice 1 como ndice de dicha variable La sintaxis para resolver esta ambiguedad es a 1 para el primer caso y a 1 para el segundo Variables externas a PHP Formularios HTML GET y POST Cuando se env a un formulario a un script PHP las variables de dicho formulario pasan a estar autom ticamente disponibles en el script gracias a PHP Por ejemplo consideremos el siguiente formulario Ejemplo 8 1 Variables de formulario simples lt form action foo php3 method post gt Name lt input type text name name gt lt br gt lt input type submit gt lt form gt Cuando es enviado PHP crear la variable name gue contendr lo gue sea gue se introdujo en el campo Name del formulario 66 Cap tulo 8 Variables PHP tambi n maneja arrays en el contexto de variables de formularios pero s lo en una dimensi n Se puede por
92. nes est n listados en las PMF Preguntas M s Frecuentes del PHP que est n en http www php net FAQ php Informes de error Si cree que ha encontrado un error en el PHP por favor inf rmenos Los desarrolladores del PHP probablemente no tengan conocimiento del mismo y salvo si informa del mismo pocas probabilidades habr de que lo solucionen Puede informar de los errores usando el sistema de rastreo de errores en http bugs php net Otros problemas Si a n se encuentra atascado alguien de la lista de correos del PHP puede ser capaz de ayudarle Deber buscar primero en los archivos por si acaso alguien ya ha respondido a otra persona que tuvo el mismo problema que usted Los archivos est n disponibles desde la p gina de soporte en http www php net Para suscribirse a la lista de correo de PHP env e un correo vac o a php general subscribe lists php net mailto php general subscribe Olists php net La direcci n de la lista de correo es php general lists php net Si desea ayuda sobre la lista de correo intente ser preciso y de los detalles necesarios sobre su entorno qu sistema operativo qu versi n de PHP qu servidor web si est ejecutando el PHP como CGI o como m dulo de servidor etc y tambi n c digo suficiente para que otros puedan reproducir y comprobar su problema 27 Cap tulo 4 Configuraci n Cap tulo 4 Configuraci n El archivo de configuraci n El archivo de configuraci n llama
93. nformaci n Scripts en linea de comandos Podeis crear un script PHP y correrlo sin ning n servidor web 6 navegador Solamente necesitais el parseador PHP para usarlo de esta manera Este tipo de uso es ideal para scripts ejecutados regularmente desde cron en nix Linux el Planificador de tareas en Windows Estos scripts tambien pueden ser usados para tareas simples de procesado de texto Consultar la secci n Usos de PHP en la linea de comandos para m s informaci n Escribir aplicaciones gr ficas clientes PHP no es probablemente el mejor lenguaje para escribir aplicaciones gr ficas pero si sabeis bien PHP y os gustaria utilizar algunas caracter sticas avanzadas en programas clientes podeis utilizar PHP GTK para escribir dichos programas Es tambien posible escribir aplicaciones independientes de una plataforma PHP GTK es una extensi n de PHP no disponible en la distribuci n principal Si te interesa PHP GTK puedes visitar las p ginas web del projecto http gtk php net PHP puede ser utilizado en cualquiera de los principales sistemas operativos del mercado incluyendo Linux muchas variantes Unix incluido HP UX Solaris y OpenBSD Microsoft Windows Mac OS X RISC OS y probablemente alguno m s PHP soporta la mayor a de servidores web de hoy en d a incluyendo Apache Microsoft Internet Information Server Personal Web Server Netscape y iPlanet Oreilly Website Pro server Caudium Xitami OmniHTTPd y muchos o
94. o sobre la clave She11 y elija New gt Key y ll mela open Pulse el bot n derecho sobre la clave open y elija New gt Key y ll mela command Marque la nueva clave command y en el panel derecho haga doble click sobre default value y entre la ruta hasta el php exe P ej c php3 php exe q 1 no olvide el 51 e Salga del Regedit Los usuarios de PWS e IIS3 tienen ahora un sistema completamente operativo Los usuarios del 1183 tambi n pueden usar una curiosa herramienta http www genusa com iis iiscfg html de Steven Genusa para configurar sus mapeados de script Windows NT e IIS 4 Para instalar el PHP en un NT Server con IIS 4 siga estas instrucciones Enel Controlador de Servicios de Internet MMC elija el sitio Web o el directorio de comienzo de una aplicaci n Abra las propiedades del directorio haciendo click derecho y eligiendo propiedades y luego pulse sobre la pesta a Carpeta Inicial Directorio Virtual o Directorio Pulse el bot n Configuraci n y luego pulse sobre la pesta a Mapas de Aplicaci n Pulse en A adir y en la caja Programa escriba c path to php dir php exe s s DEBE mantene los s s al final pues el PHP no funcionar correctamente si se equivoca al hacerlo En la caja Extensi n escriba la extensi n de fichero que desea asociar a los script de PHP Debe repetir los pasos 5 y 6 para cada extensi n que desee asociar con los scripts PHP php3 y phtml son habituales
95. olean F jelo a TRUE si desea suprimir los espacios a la derecha de las columnas CHAR cuando las solicita ifx nullformat boolean F jelo a TRUE si desea que las columnas NULL nulas se devuelvan como la cadena literal NULL y a FALSE si desea que se devuelvan como la cadena vac a Puede cambiar el ajuste en tiempo de ejecuci n utilizando 1fx nullformat 38 Cap tulo 4 Configuraci n Directivas de Configuraci n de Matem tica BC bcmath scale integer N mero de d gitos decimales para todas las funciones de bemath Directivas de Configuraci n de Capacidades de los Navegadores browscap string Nombre del archivo de capacidades del navegador Vea tambi n get browser Directivas Unificadas de Configuraci n de ODBC uodbc default_db string Fuentes de datos ODBC a utilizar si no se especifica una en lodbc_connect o en uodbc default user string Nombre de usuario si no se especifica uno en odbc connect o en uodbc default pw string Clave para usar si no se especifica una en odbc connect o enlodbc_pconnect uodbc allow_persistent boolean Si se permiten o no conexiones persistentes de ODBC uodbc max_persistent integer El n mero m ximo de conexiones persistentes de ODBC por proceso uodbc max_links integer El n mero m ximo de conexiones ODBC por proceso incluyendo las persistentes 39 Cap tulo 5 Seguridad Cap tulo 5 Seguridad PHP es un potente leng
96. omo FrontPage no aceptan instrucciones de procesado lt script gt 4 lt echo Opcionalmente puedes usar las etiquetas ASP gt oe lt Svariable Esto es una abreviatura de lt echo gt El m todo primero lt php gt es el m s conveniente ya que permite el uso de PHP en c digo XML como XHTML El m todo segundo no siempre est disponible El formato corto de etiquetas est disponible con la funci n short_tags s lo PHP 3 activando el par metro del fichero de configuraci n de PHP short open tag o compilando PHP con la opci n enable short tags del comando configure Aungue est activa por defecto en php ini dist se desaconseja el uso del formato de etiguetas corto El m todo cuarto s lo est disponible si se han activado las etiquetas ASP en el fichero de configuraci n Nota El soporte de etiquetas ASP se a adi en la versi n 3 0 4 45 Cap tulo 6 S ntaxis b sica Nota No se debe usar el formato corto de etiquetas cuando se desarrollen aplicaciones o librer as con intenci n de redistribuirlas o cuando se desarrolle para servidores que no est n bajo nuestro control porque puede ser que el formato corto de etiquetas no est soportado en el servidor Para generar c digo portable y redistribu ble aseg rate de no usar el formato corto de etiquetas La etiqueta de fin de bloque incluir tras ella la siguiente l nea si hay alguna presente Adem s la etiqueta
97. on funcionalidades id nticas reset arr while list value each Sarr echo Valor Svalue lt br gt n foreach Sarr as value echo Valor Svalue lt br gt n Las siguientes tambi n son funcionalidades id nticas reset Sarr while list key value each Sarr cho Key Skey Valor Svalue lt br gt n foreach Sarr as key gt Svalue echo Key key Valor value lt br gt n Algunos ejemplos mas para demostrar su uso foreach ejemplo 1 s lo valor Sa array l 2 3 17 foreach a as v print Valor actual de Sa v n 91 break Cap tulo 12 Estructuras de Control foreach ejemplo 2 valor con clave impresa para ilustrar Sa array 1 2 3 17 Si 0 s lo para prop sitos demostrativos foreach a as v print Sa i gt k n foreach ejemplo 3 clave y valor Sa array uno gt 1 dos gt 2 tres gt 3 diecisiete gt 17 foreach a as k gt Sv print Sa k gt v An break escapa de la estructuras de control iterante bucle actuales for while 0 switch break accepta un par metro opcional el cual determina cuantas estructuras de control hay que escapar Sarr array one two three four stop five while list val each Sarr if val stop break You could also write break 1 here echo Sval lt br
98. once to avoid problems with function redefinitions variable value reassignments etc For more examples on using require once and include once look at the PEAR code included in the latest PHP source code distributions See also require include require_once get_required_files get_included_files and virtual 102 Cap tulo 13 Funciones 103 Cap tulo 13 Funciones Funciones definidas por el usuario Una funci n se define con la siguiente sintaxis function foo arg 1 Sarg 2 Sarg n echo Funci n de ejemplo n return Sretval Cualquier instrucci n valida de PHP puede aparecer en el cuerpo de la funci n incluso otras funiones y definiciones de clases En PHP3 las funciones deben definirse antes de que se referencien En PHP4 no existe tal requerimiento PHP no soporta la sobrecarga de funciones y tampoco es posible redefinir u ocultar funciones previamente declaradas PHP3 no soporta un n mero variable de par metros aunque s soporta par metros por defecto ver Valores por defecto de de los par metros para m s informaci n PHP4 soporta ambos ver Listas de longitud variable de par metros y las referencias de las funciones func_num_args func get arg y func_get_args para m s informaci n Par metros de las funciones La informaci n puede suministrarse a las funciones mediante la lista de par metros una lista de variables y o constantes separadas por co
99. orte como m dulo deber a elegir dicha soluci n por motivos de rendimiento Sin embargo la versi n CGI permite a los usuarios del Apache el ejecutar distintas p ginas con PHP bajo 14 Cap tulo 3 Instalaci n distintos identificadores de usuario Por favor aseg rese de haber le do el cap tulo sobre Seguridad si va a ejecutar el PHP como CGI Opciones de soporte para Base de Datos El PHP tiene soporte nativo para bastantes bases de datos as como para ODBC Adabas D with adabas DIR Compila con soporte para Adabas D El par metro es el directorio de instalaci n de Adabas D y por defecto vale usr local adabasd Pagina de Adabas http www adabas com dBase with dbase Habilita el soporte integrado para DBase No se precisan librer as externas filePro with filepro Habilita el soporte integrado de s lo lectura para filePro No se precisan librer as externas mSQL with msal DIR Habilita el soporte para mSQL El par metro es el directorio de instalaci n de mSQL y por defecto vale usr local Hughes Este es el directorio por defecto de la distribuci n mSQL 2 0 configure detecta autom ticamente qu versi n de mSQL est ejecut ndose y el PHP soporta tanto 1 0 como 2 0 pero si compila el PHP con mSQL 1 0 s lo podr acceder a bases de datos de esa versi n y viceversa Vea tambi n Directivas de Configuraci n de mSQL en el larchivo de configuraci n P gina de mSQL http www hughe
100. pts los cuales seran solamente accesibles via PHP CGI y por ello siempre seran interpretados y no mostrados 42 Cap tulo 5 Seguridad Habra que tener en cuenta que si el metodo que asegura que las peticiones no son redireccionadas como hemos descrito en la seccion anterior no esta disponible sera necesario configurar un script doc_root que sea diferente del web document root Podeis definir el script PHP document root con la directiva de configuracion doc rootjen el fichero de o definir la variable de entorno PHP DOCUMENT ROOT Si esta definida la version CGI de PHP siempre obtendra el nombre del fichero a abrir con doc_root y el camino path utilizado en la peticion asi podeis estar seguros que ningun script sera ejecutado fuera de este directorio excepto para user_dir ver a continuacion Otra opcion que se puede usar aqui es user dir Cuando user dir no esta definido lo unico que controla la apertura del fichero es doc_root Si intentamos abrir una url tal como esta http my host user doc php3 no se abrira un fichero en el directorio de usuarios en su lugar se abrira un fichero llamado user doc php3 en el directorio doc root si un directorio que empieza por tilde Si user_dir esta definido por ejemplo como public_php una peticion tal como http my host user doc php3 abrira un fichero llamado doc php3 en el directorio llamado public_php del directorio home del usuario Si el directorio del usuario es home
101. r Sa 3 bar En PHP4 sin embargo todo el problema se puede circunvenir encerrando la referencia al array dentro de la cadena entre llaves Sa 3 bar Bob echo Esto va a funcionar Sa 3 bar Se pueden rellenar arrays multidimensionales de muchas formas pero la m s dif cil de comprender es c mo usar el comando para arrays asociativos Estos dos trozos de c digo rellenar n el array unidimensional de la misma manera Ejemplo 1 Sa color rojo Sa sabor dulce Sa forma redondeada Sa nombre manzana 33 Example 2 a La funci n array se puede anidar para arrays multidimensionales array color gt roger sabor gt dulce forma gt redondeada nombre gt manzana 3 gt 4 lt Sa array manzana gt array color gt rojo sabor gt dulce forma gt redondeada naranja gt array color gt naranja sabor gt Acido forma gt redondeada pl tano gt array color gt amarillo sabor gt paste y forma gt aplatanada y echo Sa manzana sabor devolver 2 gt Objetos Inicializaci n de Objetos Cap tulo 7 Types Para inicializar un objeto se usa la sentencia new para instanciar el objeto a una variable class foo Function do oo O echo Doing foo 54 Cap tulo 7 Types Sbar new foo Sba
102. r gt do foo Type juggling PHP no requiere o soporta la declaraci n expl cita del tipo en la declaraci n de variables el tipo de una variable se determina por el contexto en el que se usa esa variable Esto quiere decir que si se asigna un valor de cadena a la variable var var se convierte en una cadena Si despu s se asigna un valor entero a la variable var se convierte en una variable entera Un ejemplo de conversi n de tipo autom tica en PHP3 es el operador suma Si cualquiera de los operandos es un doble entonces todos los operandos se eval an como dobles y el resultado ser un doble En caso contrario los operandos se interpretar n como enteros y el resultado ser tambi n un entero N tese que esto NO cambia los tipos de los operandos propiamente dichos el nico cambio est en c mo se eval an los operandos Sfoo 0 foo es una cadena ASCII 48 Sfoott foo es la cadena 1 ASCII 49 Sfoo 1 foo ahora es un entero 2 Sfoo foo 1 3 foo ahora es un doble 3 3 Sfoo 5 10 Cerditos Pequefiitos foo es entero 15 Sfoo 5 10 Cerditos foo es entero 15 Si los ltimos dos ejemplos anteriores parecen confusos vea Conversi n de cadenas Si se desea obligar a que una variable sea evaluada con un tipo concreto mire la secci n Forzado de tipos Si se desea cambiar el tipo de una variable vea la funci n settype Si quisiese probar cualquiera de los ej
103. r configurado en Apache usando las directivas AddHandler y Action ver mas abajo Caso 2 usando enable force cgi redirect Esta opcion a la hora de compilar previene que alguien llame PHP directamente con una url como la siguiente http my host cgi bin php secretdir script php3 PHP solamente analizara en este modo si ha pasado por una regla de redireccionamiento en el servidor Normalmente la redireccion en la configuracion de Apache es hecha con la siguientes directivas Action php3 script cgi bin php AddHandler php3 script php3 Esta opcion ha sido solo comprobada con el servidor web Apache y depende de Apache para fijar la variable de entorno CGI no estandar REDIRECT STATUS en las peticiones de redireccionamiento Si tu servidor web no soporta ningun modo para informar si una peticion es directa o redireccionada no podeis usar esta opcion y debereis usar alguno de los otros modos de ejecucion de la version CGI documentados aqui Caso 3 Usando doc_root or user_dir Incluir contenidos activos como script y ejecutables en el directorio de documentos del servidor web es algunas veces considerada una practica insegura Si por algun fallo de configuracion los scripts no son ejecutados pero mostrados como documentos HTML cualquiera podra conseguir codigo registrado o informacion de seguridad como p ej claves de acceso Por ello muchos administradores prefieren utilizar otra estructura de directorios que contenga solamente los scri
104. regular la condici n se comprueba al principio de cada iteraci n si esta se eval a como FALSE desde el principio la ejecuci n del bucle finalizar inmediatamente Hay una sola sintaxis para los bucles do while i 0 do print i while 5i gt 0 El bucle de arriba se ejecutar a exactamente una sola vez despu s de la primera iteraci n cuando la condici n se comprueba se eval a como FALSE i no es m s grande que 0 y la ejecuci n del bucle finaliza Los usuarios avanzados de C pueden estar familiarizados con un uso distinto del bucle do while para permitir parar la ejecuci n en medio de los bloques de c digo encapsulandolos con do while 0 y usando la sentencia break El siguiente fragmento de c digo demuestra esto 88 for Cap tulo 12 Estructuras de Control do if Si lt 5 print i no es lo suficientemente grande break Si Sfactor if Si lt Sminimum_limit break print i es correcto procesa i while 0 No se preocupes si no entiende esto completamente o en absoluto Se pueden codificar archivos de comandos e incluso archivos de comandos potentes sin usar esta propiedad Los bucles for son los bucles m s complejos en PHP Se comportan como su contrapartida en C La sintaxis de un bucle for es for exprl expr2 expr3 sentencia La primera expresi n expr1 se eval a ejecuta incondicionalmente una vez al principio de
105. ripts que necesitan ser reescritos utilizando en su lugar el concatenador de cadenas Directivas de Configuraci n de Correo SMTP string Nombre DNS o direcci n IP del servidor de SMTP que el PHP bajo Windows deber usar para enviar correo con la funci n mail sendmail fromstring La direcci n del remitente De para los correos enviados desde PHP bajo Windows sendmail path string Localizaci n del programa sendmail Generalmente usr sbin sendmail o usr lib sendmail configure intenta localizarle este archivo lo mejor que puede y fijar un valor por defecto pero en caso de fallo lo puede usted fijar aqu 33 Cap tulo 4 Configuraci n Los sistemas que no usan sendmail deber n fijar esta directiva al nombre del programa alternativo que ofrezca su sistema de correo si es que existe Por ejemplo los usuarios del Qmail http www qmail org pueden fijarlo normalmente a var qmail bin sendmail Directivas de Configuraci n de Modo Seguro safe_mode boolean Para activar el modo seguro del PHP Lea el Cap tulo de seguridad para m s informaci n safe_mode_exec_dir string Si el PHP se utiliza en modo seguro la funci n system y el resto de funciones que ejecutan programas del sistema se niegan a ejecutar programas que no est n en este directorio Directivas de Configuraci n del Debugger debugger host string Nombre DNS o direcci n IP del servidor usado por el debugger debugger port string
106. rte una buena idea de qu son las expresiones y c mo construir expresiones tiles A lo largo del resto del manual escribiremos expr para indicar una expresi n PHP v lida 76 Cap tulo 11 Operadores Cap tulo 11 Operadores Operadores Aritm ticos Recuerdas la aritm tica b sica del colegio Pues estos operadores funcionan exactamente igual Tabla 11 1 Operadores Aritm ticos ejemplo nombre resultado a b Adici n Suma de a y b a b Substracci n Diferencia entre a y b a b Multiplicaci n Producto de a and b a b Divisi n Cociente de a entre b a b M dulo Resto de a dividido entre b Operadores de Asignaci n El operador b sico de asignaci n es A primera vista podr as pensar que es el operador de comparaci n igual que Pero no Realmente significa que el operando de la izquierda toma el valor de la expresi n a la derecha esto es toma el valor de El valor de una expresi n de asignaci n es el propio valor asignado Esto es el valor de a 3 es 3 Esto permite hacer cosas curiosas como Sa Sb 4 5 ahora a es igual a 9 y Sb vale 4 Adem s del operador b sico de asignaci n existen los operadores combinados para todas las Operaciones aritm ticas y de cadenas que sean binarias Este operador combinado te permite de una sola vez usar una variable en una expresi n y luego establecer el valor de esa variable al
107. rtencia en el nivel de depuraci n m s alto La segunda forma de delimitar una cadena de caracteres usa el car cter de comilla simple Cuando una cadena va encerrada entre comillas simples los nicos caracteres de escape que ser n comprendidos son W y V Esto es por convenio as que se pueden tener comillas simples y barras invertidas en una cadena entre comillas simples Las variables no se expandir n dentro de una cadena entre comillas simples Otra forma de delimitar cadenas es usando la sintaxis de documento incrustado lt lt lt Se debe proporcionar un identificador despu s de lt lt lt despu s la cadena y despu s el mismo identificador para cerrar el entrecomillado Ejemplo 7 1 He aqu un ejemplo de entrecomillado de cadenas con sintaxis de documento incrustado str lt lt lt EOD Ejemplo de cadena T Expandiendo m ltiples l neas usando sintaxis de documento incrustado EOD Nota La sintaxis de documento incristado fue a adida en PHP 4 Las cadenas se pueden concatenar usando el operador punto N tese que el operador suma no sirve para esto Por favor mire Operadores de cadena para m s informaci n Se puede acceder a los caracteres dentro de una cadena trat ndola como un array de caracteres indexado num ricamente usando una sintaxis similar a la de C Vea un ejemplo m s abajo 50 Cap tulo 7 Types Ejemplo 7 2 Algumos ejemplos de cadenas lt php
108. s com au 15 Cap tulo 3 Instalaci n MySQL with mysgl DIR Habilita el soporte para MySOL El par metro es el directorio de instalaci n de MySOL y por defecto vale usr local Este es el directorio de instalaci n de la distribuci n de MySQL Vea tambi n Directivas de Configuraci n de MySQL en el archivo de configuraci n P gina de MySQL http www tcx se ODBC with iodbc DIR Incluye soporte para iODBC Esta caracter stica se desarroll inicialmente para el ODBC Driver Manager un gestor de controlador de ODBC de redistribuci n libre que ese ejecuta bajo varios sabores de UNIX El par metro es el directorio de instalaci n de ODBC y por defecto vale usr local P gina de FreeODBC http users ids net bjepson freeODBC o p gina de ODBC http www iodbc org OpenLink ODBC with openlink DIR Incluye soporte para OpenLink ODBC El par metro es el directorio de instalaci n de OpenLink ODBC y por defecto vale usr local openlink P gina de OpenLink Software http www openlinksw com Oracle with oracle DIR Incluye soporte para Oracle Se ha probado y deber a funcionar al menos con las versiones de la 7 0 a la 7 3 El par metro es el directorio ORACLE HOME No necesita especificar este par metro si su entorno de Oracle ya est ajustado P gina de Oracle http www oracle com PostgreSQL with pgsql DIR 16 Cap tulo 3 Instalaci n Incluye soporte para PostgreSQ
109. s de c digo PHP caracteriza una estructura if que es similar a la de C if expr sentencia Como se describe en la secci n sobre expresiones expr se eval a a su valor condicional Si expr se eval a como TRUE PHP ejecutar la sentencia y si se eval a como FALSE la ignorar El siguiente ejemplo mostrar a a es mayor que b Si a fuera mayor que b if Sa gt b print a es mayor que b A menudo se desea tener m s de una sentencia ejecutada de forma condicional Por supuesto no hay necesidad de encerrar cada sentencia con una cl usula if En vez de eso se pueden agrupar varias sentencias en un grupo de sentencias Por ejemplo este c digo mostrar a a es mayor que bsi a fuera mayor que b y entonces asignar a el valor de Sa a b if a gt b print a es mayor que b Sb Sa Las sentencias if se pueden anidar indefinidamente dentro de otras sentencias if lo cual proporciona una flexibilidad completa para ejecuciones condicionales en las diferentes partes de tu programa A menudo queremos ejecutar una sentencia si se cumple una cierta condicion y una sentencia distinta si la condici n no se cumple Esto es para lo que sirve else else extiende una sentencia if para ejecutar 85 Cap tulo 12 Estructuras de Control una sentencia en caso de que la expresi n en la sentencia if se eval e como FALSE Por ejemplo el siguiente c digo mostrar a a es mayor que b si Sa fuera mayor que b y a NO e
110. s estilo ASP lt gt adem s de las habituales etiguetas lt php gt Tambi n se incluye el atajo para imprimir variables lt valor gt Para m s informaci n vea Escapando del HTML Nota El soporte para etiquetas estilo ASP se a adi en la 3 0 4 29 Cap tulo 4 Configuraci n auto append file string Especifica el nombre de un archivo que es troceado autom ticamente despu s del archivo principal El archivo se incluye como si fuese llamado mediante la funci n include as que se utiliza include_path El valor especial none desconecta la adici n autom tica de archivos Nota Si el script es terminado con lexit no tendr lugar la adici n autom tica auto_prepend_file string Especifica el nombre de un archivo que es troceado autom ticamente antes del archivo principal Specifies the name of a file that is automatically parsed before the main file El archivo se incluye como si fuese llamado mediante la funci n linclude as que se utilizalinclude path El valor especial none desconecta la adici n autom tica de archivos cgi ext string display errors boolean Determina si los errores se visualizan en pantalla como parte de la salida en HTML o no doc_root string Directorio raiz del PHP en el servidor S lo se usa si no est vac o Si el PHP se configura con safe mode no se sirven archivos fuera de este directorio engine boolean Esta directiva s lo es realmente til en la versi
111. s mayor que b en cualquier otro caso if Sa gt b print a es mayor que b else print a NO es mayor que b La sentencia else se ejecuta solamente si la expresi n if se eval a como FALSE y si hubiera alguna expresi n elseif s lo si se evaluaron tambi n a FALSE Ver elseif elseif elseif como su nombre sugiere es una combinaci n de if y else Como else extiende una sentencia if para ejecutar una sentencia diferente en caso de que la expresi n if original se eval a como FALSE No obstante a diferencia de else ejecutar esa expresi n alternativa solamente si la expresi n condicional elseif se eval a como TRUE Por ejemplo el siguiente c digo mostrar a a es mayor que b a es igual a b Oa es menor que b if a gt b print a elseif Sa print a mayor que b b igual que b I Os Il n 10 n else print a es mayor que b Puede haber varios elsei s dentro de la misma sentencia if La primera expresi n elseif si hay alguna que se eval e como TRUE se ejecutar a En PHP tambi n se puede escribir else if con dos palabras y el comportamiento ser a id ntico al de un elseif una sola palabra El significado sint ctico es ligeramente distinto si estas familiarizado con C es el mismo comportamiento pero la l nea b sica es que ambos resultar an tener exactamente el mismo comportamiento La sentencia elseif se ejecuta s lo si la expresi n
112. se eval a al valor asignado en este caso 5 En la pr ctica quiere decir que a 5 independientemente de lo que hace es una expresi n con el valor 5 De esta manera escribir algo como b a 5 es como escribir a 5 b 5 un punto y coma marca el final de una instrucci n Como las asignaciones se eval an de derecha a izquierda puedes escribir tambi n b a 5 Otro buen ejemplo de orientaci n a expresiones es el pre y post incremento y decremento Los usuarios de PHP FI 2 y los de otros muchos lenguajes les sonar la notaci n variable y variable Esto son las operaciones de incremento y decremento En PHP FI 2 la instrucci n a no tiene valor no es una expresi n y no puedes asignarla o usarla de ning n otro modo PHP mejora las caracter sticas del incremento decremento haci ndolos tambi n expresiones como en C En PHP como en C hay dos tipos de incremento pre incremento y post incremento Ambos en esencia incrementan la variable y el efecto en la variable es id ntico La diferencia radica en el valor de la propia expresion incremento El preincremento escrito variable se eval a al valor incrementado PHP incrementa la variable antes de leer su valor de ah el nombre preincremento El postincremento escrito variable se eval a al 74 Cap tulo 10 Expresiones valor original de variable antes de realizar el incremento PHP incrementa la variable
113. sesesecsusssusessvsssesesssesscessessssseresenseeed A OPPO SRO etica dede Lalola cacaos cd A A eee A e A SPORO PMPO Task SRO RMM PRES SR A N 96 io a ee E DR RI O 97 Ti EMMA PRES VAR POOH ROVNA C 1100 A esa ene ren 102 A T N EC N 103 Funciones definidas por el usuarig cc 1111r tttrr tittratta rrinte 104 Par metros de las funciones oa 104 Pasar par metros por FE EFENCI 2 104 Par metros por defect cc t111 titr ttttrttttnr taten trten retten rtnen reanna OS Lista de longitud variable de par metros cc 106 DO ra a PAP 106 A AS 107 Iron A 107 paa 105 000000 0 00000000004 Prefacio PHP acr nimo de PHP Hypertext Preprocessor es un lenguaje Open Source interpretado de alto nivel especialmente pensado para desarrollos web y el cual puede ser embebido en p ginas HTML La mayor a de su sintaxis es similar a C Java y Perl y es f cil de aprender La meta de este lenguaje es permitir escribir a los creadores de p ginas web p ginas din micas de una manera r pida y f cil aunque se pueda hacer mucho m s con PHP Este manual contiene principalmente una referencia de funciones PHP tambien contiene una referencia del lenguaje explicaciones de caracteristicas importantes de PHP y alguna informaci n suplementaria Este manual se puede conseguir en diferentes formatos en http www php net docs php Estos ficheros son actualizados a medida que el manual vaya cambiando M s informaci n sobre como este man
114. son int integer fuerza a entero integer real double float fuerza a doble double string fuerza a cadena string array fuerza a array array object fuerza a objeto object N tese que las tabulaciones y espacios se permiten dentro de los par ntesis as que los siguientes ejemplos son funcionalmente equivalentes Sfoo Sfoo int Sbar int Sbar Puede no ser obvio que ocurrir cuando se fuerce entre ciertos tipos Por ejemplo lo siguiente deberia ser tenido en cuenta 56 Cap tulo 7 Types Cuando se fuerza el cambio de un escalar o una variable de cadena a un array la variable se convertir en el primer elemento del array Svar ciao arr array var echo Sarr 0 produce la salida ciao Cuando se fuerza el tipo de una variable escalar o de una cadena a un objeto la variable se convertir en un atributo del objeto el nombre del atributo ser scalar Svar ciao Sobj object Svar echo Sobj gt scalar produce la salida ciao 57 Cap tulo 8 Variables Cap tulo 8 Variables Conceptos B sicos En PAP las variables se representan como un signo de d lar seguido por el nombre de la variable El nombre de la variable es sensible a min sculas y may sculas Bob Joe Svar SVar echo Svar SVar produce la salida Bob Joe En PHP3 las variables siempre se asignan por valor Esto significa que cuando se asigna una expr
115. son apostrofes normales PHP intentar ejecutar la instrucci n contenida dentro de los ap strofes invertidos como si fuera un comando del shell y su salida devuelta como el valor de esta expresi n 1 e no tiene por qu ser simplemente volcada como salida puede asignarse a una variable Soutput ls al echo lt pre gt output lt pre gt Ver tambi n system passthru exec popen y lescapeshellemd Operadores de Incremento decremento PHP soporta los operadores de predecremento y post incremento al estilo de C Tabla 11 4 Operadores de Incremento decremento ejemplo nombre efecto H a Preincremento Incrementa a en uno y despu s devuelve a a Postincremento Devuelve a y despu s incrementa a en uno a Predecremento Decrementa a en uno y despu s devuelve a a Postdecremento Devuelve a y despu s decrementa a en uno He aqu un listado de ejemplo 80 Cap tulo 11 Operadores lt php echo lt h3 gt Postincremento lt h3 gt Sa 5 cho Deber a ser 5 Sa lt br gt n cho Deber a ser 6 Sa lt br gt n echo lt h3 gt Preincremento lt h3 gt Sa 5 cho Deberia ser 6 Sa tebeo cho Deber a ser 6 Sa lt br gt n echo lt h3 gt Postdecremento lt h3 gt Sa 5 cho Deberia ser 5 Sa lt br gt n cho Deber a ser 4 Sa lt br gt n echo
116. th ci eecereeeerere non non ceras eeeeenerencanaa With exe cdi iii e enable debuel eos naaa E Enable ae O ta SEARS PRO OP A O P o S p o meter eo p n z Pa PE A re erent rere aloe GR q cane Se oo RA POP RL DER SR ORE AOA seem aie tle SAGE o A ERRO AN DRA PRE PO P UR AEE CPPFLAGS y LDELAGS possi sccsosseiss ars ocios areas aaa P O O O O P RA DR A le o k Comprobando la velocidad oooncnnnnnonincnonnnononnnonnnononononn conc 9000000090009 eee nen Instalaci n en sistemas Windows 95 98 NT cccsscceceessscccecesseececesesseeceecesssaeecesessaeseeseeses AE OR PR OE A TE A A naa A O A Windows 9x NT y Apache 1 3 X errar area enter ete Omni HTTPd 2 0b1 para Windows ocooooccocccoccnonononononononnconconnno nono non eee eee A RR RATA Problemas MA cio did Lea las PMF FAQ ccccccccsssscssscsssesssscsssessecsssscsessesecessecesseseeceusecausceeecsusesesseseecsetees Informes de PSP RR V OR O O Pago era eE Ee ea eeart es A O ee A A P S CO ee ee atentos Ze am o a o a eter P oa o E od E o AA E Lieut E E EES ano ue sted RN E A ese A a z oP N ae A iaa A so rias o S UR A Bin rios COM iii i Posibles ataques BRN Caso 1 solamente se sirven ficheros publicos Caso 2 usando enable force cgl TediEe Cl cooonconcnonnnnnconoconcnnnononononn es Caso 3 Usando doc root or user IP occcccnnnncnonanonoaonononnnnnnonocononcnnnnnnn non nn cnn nee 00000
117. tros PHP tiene m dulos disponibles para la mayor a de los servidores para aquellos otros que soporten el est ndar CGI PHP puede usarse como procesador CGI Asi que con PHP teneis la libertad de escoger el sistema operativo y el servidor de vuestro gusto Tambien teneis la posibilidad de usar programaci n de procediminetos programaci n orientada a objetos Aunque no todas la caracter sticas est ndares de la programaci n orientada a objetos est n implementadas en la versi n actual de PHP muchas librer as y aplicaciones grandes incluyendo la libreria PEAR est n escritas ntegramente usando programaci n orientada a objetos Con PAP no estais limitados a resultados en HTML Entre las habilidades de PHP se incluyen creaci n de im genes ficheros PDF y pel culas Flash usando libswf y Ming sobre la marcha Tambien podeis presentar otros resultados como XHTM y ficheros XML PHP puede autogenerar estos ficheros y grabarlos en el sistema de ficheros en vez de presentarlos en la pantalla Quizas la caracter stica m s potente y destacable de PHP es su soporte para una gran cantidad de bases de datos Escribir un interfaz via web para una base de datos es una tarea simple con PHP Las siguientes bases de datos est n soportadas actualmente Adabas D Ingres Oracle OCI7 and OCI8 dBase InterBase Ovrimos Empress FrontBase PostgreSQL FilePro read only mSQL Solid Hyperwave Direct MS SQL Sybase IBM DB2 MySQL Velocis Informix O
118. uaje y el interprete tanto incluido en el servidor web como modulo o ejecutado como un binario CGI puede acceder a ficheros ejecutar comandos y abrir comunicaciones de red en el servidor Todas estas caracteristicas hacen que lo que se ejecute en el servidor web sea inseguro por defecto PHP ha sido disenado especificamente para ser un lenguaje mas seguro para escribir programas CGI que Perl o C y con la correcta seleccion de las opciones de configuraci n del tiempo de compilaci n y ejecucion se consigue la exacta combinaci n de libertad y seguridad que se necesita Ya que existen diferentes modos de utilizar PHP existen multitud de opciones de configuraci n que permiten controlar su funcionamiento Una gran selecci n de opciones garantiza que se pueda usar PHP para diferentes usos pero tambien significa que existen combinaciones de estas opciones y configuraciones del servidor que producen instalaciones inseguras Este capitulo explica las diferentes combinaciones de opciones de configuraci n y las situaciones donde pueden ser usadas de manera segura Binarios CGI Posibles atagues Usando PHP como un binario CGI es una opci n para instalaciones gue por cualguier causa no guieren integrar PHP como modulo en el software servidor p ej Apache o usaran PHP con diferentes clases de CGI wrappers para crear entornos chroot y setuid seguros para los scripts Esta configuraci n implica generalmente el instalar el binario ejecutable de PHP en
119. ual es desarrollado puede encontrarse en el ap ndice Sobre este manual Parte I Conceptos B sicos Cap tulo 1 Introducci n Cap tulo 1 Introducci n Qu es PHP PHP acronimo de PHP Hypertext Preprocessor es un lenguaje open source interpretado de alto nivel embebido en p ginas HTML y ejecutado en el servidor Una respuesta corta y concisa pero que significa realmente Un ejemplo nos aclarar las cosas Ejemplo 1 1 Un ejemplo introductorio lt html gt lt head gt lt title gt Example lt title gt lt head gt lt body gt lt php echo Hi I m a PHP script 2 gt lt body gt lt html gt Podemos ver que no es lo mismo que un script escrito en otro lenguaje de programaci n como Perl o C En vez de escribir un programa con muchos comandos para crear una salida en HTML escribimos el c digo HTML con cierto c digo PHP embebido introducido en el mismo que producir cierta salida en nuestro ejemplo producir un texto El c digo PHP se incluye entre etiquetas especiales de comienzo y final que nos permitir n entrar y salir del modo PHP Lo que distingue a PHP de la tecnolog a Javascript la cual se ejecuta en la m quina cliente es que el c digo PHP es ejecutado en el servidor Si tuviesemos un script similar al de nuestro ejemplo en nuestro servidor el cliente s lamente recibir a el resultado de su ejecuci n en el servidor sin ninguna posibilidad de determinar que c digo
120. ulo de Apache 1 gunzip apache_1 3 x tar gz 2 tar xvf apache_1 3 x tar 3 gunzip php 3 0 x tar gz 4 tar xvf php 3 0 x tar 5 cd apache_1 3 x 6 configure prefix www 7 cd php 3 0 x 8 configur with mysql with apache apache_1 3 x nable track vars 9 make 10 make install 11 cd apache_1 3 x 12 configur prefix www activate module src modules php3 libphp3 a 13 make 14 make install En lugar de este paso guiz s prefiera simplemente copiar el binario httpd encima del binario existente Si lo hace aseg rese antes de cerrar su servidor 15 cd php 3 0 x 16 cp php3 ini dist usr local lib php3 ini Puede editar el archivo usr local lib php3 ini para ajustar opciones del PHP Si prefiere tenerlo en otro sitio utilice with config file path path en el paso 8 17 Edite su archivo httpd conf o srm conf y a ada AddType application x httpd php3 php3 13 Cap tulo 3 Instalaci n Puede elegir la extensi n que desee aqu php3 es simplemente nuestra sugerencia 18 Utilice su m todo habitual para iniciar el servidor Apache debe detener y reiniciar el servidor no solamente hacerlo recargarse usando una se al HUP o USR1 Configuraci n Hay dos maneras de configurar el PHP Utilizando el script de setup que viene con el PHP Este script le hace una serie de preguntas casi como el script install del PHP FI 2 0 y ejecuta el configure
121. una tabla hash PHP3 no posee tal construcci n PHP4 s ver foreach En PHP3 se puede combinar while con las funciones list y leach para conseguir el mismo efecto Mirar la documentaci n de estas funciones para ver un ejemplo foreach PHP4 PHP3 no incluye una construcci n foreach tal como perl y algunos otros lenguajes Esto simplemente da un modo f cil de iterar sobre arrays Hay dos sintaxis la segunda es una extensi n menor pero til de la primera foreach expresion array as value sentencia foreach expresion array as key gt value sentencia La primera forma recorre el array dado por expresion_array En cada iteraci n el valor del elemento actual se asigna a value y el puntero interno del array se avanza en una unidad as en el siguiente paso se estar mirando el elemento siguiente 90 Cap tulo 12 Estructuras de Control La segunda manera hace lo mismo salvo que la clave del elemento actual ser asignada a la variable Skey en cada iteraci n Nota Cuando foreach comienza su primera ejecuci n el puntero interno a la lista array se reinicia autom ticamente al primer elemento del array Esto significa que no se necesita llamar a reset antes de un bucle foreach Nota Hay que tener en cuanta queforeach con una copia de la lista array especificada y no la lista en si por ello el puntero de la lista no es modificado como en la construcci n each Puede haber observado que las siguientes s
122. user el fichero ejecutado sera home user public_php doc php3 La expansion de user dir ocurre sin tener en cuenta la configuracion de doc root de este modo se puede controlar los accesos al directorio principal document root y al directorio de usuario separadamente Caso 4 Analizador PHP fuera del arbol web Una opcion muy segura es poner el analizador binario PHP en algun lugar fuera del arbol de ficheros web Por ejemplo en usr local bin La unica pega real de esta opcion es que habra que poner una linea similar a usr local bin php como primera linea en cualquier fichero que contenga codigo PHP Tambien sera necesario asignar al fichero permisos de ejecucion De esta manera es tratado de la misma manera que cualquier otro CGI script escrito en Perl o sh o otro lenguaje utilizado para scripts y que utilicen el mecanismo para ejecutarse Para conseguir que PHP maneje correctamente con esta configuracion la informacion de PATH_INFO y PATH_TRANSLATED el analizador PHP deberia ser compilado con la opcion de configuracion enable discard path Modulo Apache Cuando PHP es usado como modulo Apache hereda los permisos de usuario de Apache normalmente nobody 43 Parte II Referencia del Lenguaje Cap tulo 6 S ntaxis b sica Cap tulo 6 S ntaxis b sica Saliendo de HTML Para interpretar un archivo php s mplemente interpreta el texto del archivo hasta que encuentra uno de los car cteres especiales que
123. ved Variables section of the manual or you can get a complete list of them by creating a file that looks like this Ejemplo 2 3 Show all predefined variables with phpinfo lt php phpinfo gt If you load up this file in your browser you will see a page full of information about PHP along with a list of all the variables available to you You can put multiple PHP statements inside a PHP tag and create little blocks of code that do more than just a single echo For example if we wanted to check for Internet Explorer we could do something like this Ejemplo 2 4 Example using control structures and functions lt php if strstr SERVER HTTP USER AGENT MSIE Cap tulo 2 A simple tutorial echo You are using Internet Explorer lt br gt 2 gt A sample output of this script may be You are using Internet Explorer lt br gt Here we introduce a couple of new concepts We have an ifistatement If you are familiar with the basic syntax used by the C language this should look logical to you If you don t know enough C or some other language where the syntax used above is used you should probably pick up any introductory PHP book and read the first couple of chapters or read the Language Reference part of the manual You can find a list of PHP books at http www php net books php The second concept we introduced was the strstr function call strstr is a function built
124. vo de configuraci n enable url includes enable url includes Hace posible ejecutar c digo en otros servidores HTTP o FTP directamente desde el PHP usando include Vea tambi n la opci n include_path en el archivo de configuraci n disable syntax hl disable syntax hl Desconecta el resalte de sint xis CPPFLAGS y LDFLAGS Para hacer que la instalaci n de PHP busque los archivos de cabecera o de librer a en distintos directorios modifique las variables de entorno CPPFLAGS y LDFLAGS respectivamente Si est utilizando un shell sensible podr ejecutar LDFLAGS L my lib dir CPPFLAGS I my include dir configure Construyendo Cuando el PHP est configurado ya est listo para construir el ejecutable CGI o la librer a PERL El comando make deber a ocuparse de esto Si fallara y no puede saber el motivo vea la secci n de 22 Cap tulo 3 Instalaci n Probando Si ha constru do el PHP como un programa CGI puede probar su funcionamiento tecleando make test Siempre es buena idea probar su construcci n As puede atrapar pronto los problemas del PHP en su plataforma sin tener que batallar con ellos luego Comprobando la velocidad Si ha constru do el PHP como un programa CGI puede comprobar la velocidad de su c digo escribiendo make bench N tese que se el modo seguro est habilitado por defecto el test no podr finalizar si se toma m s de los 30 segundos disponibles Esto se debe a que la funci

Download Pdf Manuals

image

Related Search

Related Contents

Middleby Cooking Systems Group PS200-R68 User's Manual  CHAPTER 3 — PC Setup Port Connections  Makita 9045N Sander User Manual  A.O. Smith Hot Water Generator Technical Documents  Mode d'emploi  

Copyright © All rights reserved.
Failed to retrieve file