Guia Teorica Php

download Guia Teorica Php

If you can't read please download the document

Transcript of Guia Teorica Php

GUA TERICA AL PHP 1. Introduccin al lenguaje Elementos introductorios de PHP y finalidad de esta gua 2. Origen y tipologa del lenguaje Qu es el PHP, cmo funciona y a qu bases de datos pueden hacer preguntas 3. CGI y PHP: principales diferencias Diferencias y distintas utilizaciones entre el PHP y los CGI 4. Creacin de las pginas y sintaxis Panormica general sobre los elementos bsicos del PHP, as como la sintaxis de base Variables 5. Variables Introduccin a la posibilidad de utilizar las variables con PHP 6. Variables de Apache La serie de variables de las que hablaremos a continuacin estn generedas por Apache. Veremos cules. 7. Variables de ambiente Tambin con PHP, como con otros lenguajes, es posible especificar y utiizar las variables de ambiente 8. Variables PHP Para terminar, veremos las variables que PHP mismo pone a disposicin 9. Constantes PHP pone a disposicin tambin unas constantes, es decir, lo contrario de las variables Tipos de datos 10. Tipos de datos El PHP soporta distintos tipos de datos que el motor adquiere automticamente. 11. Integer Los Integers, o enteros, pueden tener distintos valores nmericos que se expresan mediante distintas anotaciones. 12. Floating point number Este tipo de datos son simplemente los nmeros en coma mvil 13. Strings Sobre las cadenas hay mucho que decir, ms que de los tipos de datos anteriores. Las analizaremos 14. Array

El PHP soporta tanto los array escalares como los array asociativos. 15. Objects En PHP se pueden utilizar tambin los objetos. Veremos, para empezar, un ejemplo. Operadores 16. Operadores Los operadores que se pueden utilizar con PHP son parecidos a los que se utilizan en los dems lenguajes de programacin 17. Aritmticos Los operadores aritmticos son los ms simples 18. Asignacin El operador de asignacin es el smbolo del signo igual (=) que da un valor a una variable 19. Otros operadores Los operadores que el PHP nos pone a disposicin son muchos, y veremos en esta pgina los ms importantes que no hemos tenido todava la oportunidad de ver Estructuras de control 20. Estructuras de control Permiten al programador establecer unas acciones que el programa tiene que hacer cuando se dan unas particulares condiciones (o cuando no se dan) 21. ELSE Else sirve para completar if: con if 22. ELSEIF Elseif permite especificar casualidades que "if" no ha establecido 23. WHILE La condicin "while" se porta de la misma forma que en C 24. FOR Tambin "for" se porta exactamente de la misma forma que en C o en Perl 25. SWITCH "Switch" permite sustituir una serie de "if" en la misma expresin Funciones 26. Las funciones que empiezan por A Abs, acos, array, asin, atan

27. Las funciones que empiezan por B Base64_decode, basename, bcadd, bccomp, bcdiv, bcmult, bcpow, bcsqrt, bcsub, bin2hex 28. Las funciones que empiezan por C Ceil, chdir, checkdate, chgrp, chmod, chmop, chown, chr, chunk_split, closedir, copy, cos, count, crypt, current 29. Las funciones que empiezan por D Debugger_off, date, debugger_on, dechex, decoct, define, defined, die, dirname, diskfreespace 30. Las funciones que empiezan por E Each, echo, ereg_replace, ereg, eregi_replacem eregi, error_log, escapeshellcmd, exec, exit, exp, explode 31. Las funciones que empiezan por F y G> Fclose, feof, file_exists, filegroup, filesize, filetype, flock, fopen, get_browser, get_cfg_var, get_current_user, get_meta_tags, getenv 32. Las funciones que empiezan por H, I, J, K y L Header, hexdec, implode, in_array, is_array, isset, join, key, link, list 33. Las funciones que empiezan por M, O, P y R Mail, max, mkdir, opendir, phpinfo, phpversion, popen, print, rand, range, rename, rmdir, round 34. Las funciones que empiezan por S, T y U Shuffle, sin, sizeof, sleep, split, sqrt, strcmp, system, tan, unset, usleep Las dems funciones 35. Introduccin a las dems funciones apache_lookup_uri, getallheaders, virtual, 36. Funciones relacionadas con Apache Apache_lookup_uri, getallheaders, virtual ... 37. Funciones relacionadas con la criptacin PHP ofrece una serie de funciones relacionadas con la criptacin y con la biblioteca mcrypt. 38. Funciones relacionadas con el protocolo FTP Una amplia biblioteca de funciones relacionadas con el protocolo FTP (FILE TRANSFER PROTOCOL), para la transferencia de un ordenador a otro en una red. 39. Funciones relacionadas con el networking Esta familia de funciones, que analizaremos por encima, est relacionada con el trabajo en la red y sobre todo con los protocolos, direcciones, etc. 40. Estndar POSIX

Estas funciones nos permiten establecer una interaccin completa con el sistema para mejorar la escritura de nuestros script. Funciones no built-in 41. Las exensiones Las funciones de las bibliotecas aadidas que se tienen que instalar en el sistema y se tienen que invocar de forma particular. 42. El porqu de las extensiones LLegados a este punto, habr alguien que se est pregutando el porqu de estas bibliotecas aadidas ... PHP y bases de datos 43. Introduccin a PHP y bases de datos Las funciones de las bibliotecas aadidas que tienen que ser instaladas e invocadas de forma particular. 44. Configuraciones antes de empezar En primer lugar, tenemos que estar seguros de que hemos instalado en el sistema la biblioteca PHP que permita la interaccin con la base de datos, instalando el paquete. 45. Funciones El anlisis de las funciones que pueden ser tiles para nuestros script. 46. Y ahora? Conclusiones sobre el tema funciones en los script PHP Cookie 47. Gestin de los Cookies Gestionar los cookies, pequeos archivos de texto que incluyen informaciones tiles y no peligrosas, para la gestin de las sesiones en el web. 48. Autenticar con PHP Con el PHP y la ayuda de su funcin "header" es posible programar sin la necesidad de utilizar el archivo .htaccess o las autorizaciones del servidor las pginas protegidas. La gua prctica PHP 15 lecciones redactadas por Alberto Mucignat para explicar con muchos ejemplos prcticos qu es y cmo funciona el lenguaje PHP.

Introduccin al lenguaje A lo mejor la mayora de vosotros ya hayan ledo el curso al PHP y, quizs, hayan empezado a poner en prctica los ejemplos que hemos propuesto. En esta gua no queremos volver a repetir lo que ya dijimos, sino que queremos slamente tratar el tema del lenguaje desde un punto de vista ms terico y menos prctico. Visto el xito, a partir de la versin 3, del PHP, es importante para los que quieran considerarse programadores web tener unos conocimientos ms profundos para saber crear aplicaciones con determinadas finalidades y tambin para dejar que su propia fantasa se desahogue. Orgenes y tipologa del lenguaje PHP es el acrnimo de "PHP: Hypertext Preprocessor", es decir, un "preprocesador del hipertexto" que se basa en una sintaxis parecida al C, al Java y al Perl, por supuesto con unos aadidos ms. Naci en 1994 como proyecto "personal" y la primera versin se utiliz pblicamente en 1995 con el nombre "Personal Home Page". El resto es historia. Como cada buen proyecto que llama la atencin de los usuarios y de los programadores, el lenguaje se ha desarrollado como proyecto open-source hasta el punto que, en 1996, ya se estaba utilizando en 15.000 sitios web. En el momento de la release 3 (a mediados de 1999) el nmero de servidores que utilizaban PHP se haba decuplicado. El PHP es un lenguaje de scripting server-side. Se trata de un lenguaje "embeeded" en las pginas que lo incluyen, por citar un ejemplo, el lenguaje Javascript. La principal diferencia es que el PHP lo ejecuta en el servidor en lugar de en el cliente directamente. Por lo tanto, no se necesitan compatibilidades particulares o estndar definidos por otros (como el ejemplo ms clsico del Javascript). El mecanismo de realizacin de los script, para los que los conocen, es parecido al lenguaje ASP. Por ejemplo, si en una pgina estuviera el cdigo: si invocis la pgina desde el browser, no veis la lnea del cdigo entre (las verdaderas etiquetas del PHP), sino el resultado que esta instruccin devuelve. En la prctica, el servidor HTTP, una vez que se le haya solicitado una pgina parecida, la reconoce (si ha sido configurado debidamente) y pone en marcha la parte "dinmica". Lo que llega a vuestro browser es la elaboracin de este cdigo y podis entender que se trata de una pgina escrita en lenguaje PHP slo por su extensin (tpicamente .php3). Las posibilidades del lenguaje PHP son excelentes, hasta el punto que es posible crear en PHP todas las aplicaciones que se podran crear con unos script CGI. La diferencia principal entre los dos es que el primero hace mucho ms simple la conexin y las preguntas con las bases de datos; el PHP3 soporta las siguientes bases de datos: Adabas D InterBase Solid dBase mSQL Sybase

Empress MySQL Velocis FilePro Oracle Unix dbm Informix PostgreSQL Al igual que con los CGI, con el PHP es posible utilizar los protocolos de red ms famosos como IMAP, SMTP, POP3 e incluso HTTP, o utilizar los socket (enchufes). CGI y PHP: principales diferencias Es sabido que los script CGI escritos en Perl y los script PHP se utilizan sobre todo para la realizacin de pginas dinmicas, dejando de lado por un momento el lenguaje ASP que, recordamos, es propietario y puede utilizarse (casi) slo en webserver NT con IIS. El PHP, sobre todo en estos ltimos tiempos, se est imponiendo como lenguaje principal de scripting para la realizacin de pginas dinmicas. En primer lugar porque es multiplataforma, es decir, es posible encontrar el motor PHP para las plataformas ms utilizadas. Pero el PHP, lentamente y inexorablmente, est superando por complejidad a los CGI y esto se puede justificar por varias cuestiones: PHP es un lenguaje embeeded (empotrado) en el cdigo HTML de las pginas y no necesita, por lo tanto, otros archivos para que se ponga en marcha; un script PHP, de hecho, no necesita ser instalado como ocurre con un script CGI. Los que han ledo alguna vez algn artculo en www.cgipoint.it, se habrn dado cuenta de que cada script tieneque cargarse en el servidor en determinados directorios, con permisos especiales, etc.. Con el PHP esto ya no pasa: adems de no necesitar un directorio cgi-bin, ya que el cdigo se introducee directamente en las pginas, una vez que la pgina se cargue el script est listo para el uso, siempre que se haya configurado correctamente; con el PHP ya no se necesitan configuraciones especiales del servidor de la red para que se habiliten directorios cgi-bin o la realizacin de unos archivos que tengan determinadas extensiones. Primero se dan instrucciones al servidor de la red, luego cada script (o mejor, cada pgina que tenga el cdigo del script) se puede poner en marcha en CADA directorio donde est. Fijaos en la comodidad de esta caracterstica del PHP. Por supuesto, estas son slo algunas de las caractersticas que permiten al PHP superar a los CGI, y pueden ser criticadas por los fanticos del "otro bando". Obviamente, los CGI tienen sus ventajas y elegir entre uno y otro lenguaje (o los dos a la vez) es algo personal. Si hablamos de "qu se puede hacer con PHP" se puede decir que, a partir de la versin 4, las posibilidades del PHP son prcticamente iguales a las de los CGI en Perl, pero no a las del mismo Perl. Creacin de las pginas y sintaxis de base Como vimos en el pequeo ejemplo anterior y como probablemente muchos de vosotros habr ledo en el resto del curso publicado anteriormente, la sintaxis del PHP se tiene que introducir entre las etiquetas:

Sin embargo es posible itroducir el cdigo de otras formas: /* short tags*/ /* default junto a */ /* ASP-like tags */ Por ejemplo, es lo mismo escribir: echo ("Yo soy un script PHP\n"); aunque para los ejemplos que citaremos, vamos a utilizar la sintaxis Recordamos que las etiquetas aceptadas por default son y . Para establecer las etiquetas cortas y los ASP-like tags se necesita modificar el archivo de configuracin de las primeras lneas, en las que es posible leer algo como: short_open_tag = On ; allow the Adems, hay que recordar otras variables, y que algunas dependen directamente del PHP. Las dividimos en tres clases: Variables de Apache; Variables de ambiente; Variables PHP. Variables de Apache La serie de variables de las que hablaremos estn en Apache. Si utilizamos otros servidores, algunas de ellas sern, por supuesto, diferentes. Antes de analizarlas detalladamente, recordamos que es posible leer el valor de cada variable o con la funcin phpinfo() o con una simple. echo "NOMBRE_DE LA_VARIABLE";

Adems, los valores de ejemplo se han tomado o directamente de la documentacin del PHP, o del valor que tienen en el servidor que se ha utilizado para escribir estas pginas. GATEWAY_INTERFACE: la versin de los CGI especficos que ha utlizado el servidor, por ejemplo "CGI/1.1"; SERVER_NAME: el nombre del servidor, que en Apache se define como "ServerName" en httpd.conf, por ejemplo "myhost.com"; SERVER_SOFTWARE: el nombre del software utilizado por el servidor de la red, por ejemplo "Apache/1.3.9 (Unix) Debian/GNU PHP/3.0.15 mod_perl/1.21_03-dev"; SERVER_PROTOCOL: el nombre y la versin del protocolo con el que se ha solicitado la pgina, por ejemplo "HTTP/1.0"; REQUEST_METHOD: utilizado en el form, puede ser "GET", "POST", "HEAD", "PUT"; QUERY_STRING: si est, la cadena con la que se ha solicitado la pgina; DOCUMENT_ROOT: la DocumentRoot del servidor, como configurada httpd.conf, por ejemplo "/var/www"; HTTP_ACCEPT: el contenido del header Accept, por ejemplo "text/*, image/*, audio/*, application/*"; HTTP_ACCEPT_CHARSET: el charset aceptado, por ejemplo "iso-8859-1"; HTTP_ENCODING: el encoding de la solicitud, si est; por ejemplo, "gzip"; HTTP_ACCEPT_LANGUAGE: por ejemplo el lenguaje "in"; HTTP_CONNECTION: el contenido del header Connection, por ejemplo "Keep-alive"; HTTP_HOST: el nombre del husped, por ejemplo "localhost"; HTTP_REFERER: el nombre de la pgina de la que se llega; HTTP_USER_AGENT: el contenido del header User_Agent, por ejemplo "Mozilla/4.72 [en] (X11; I; Linux 2.2.14 i586)"; REMOTE_ADDR: la direccin IP del usuario conectado a nuestra pgina; REMOTE_PORT: como antes, pero referido a la puerta; por ejemplo, las dos variables podran tener un output del tipo: "127.0.0.1 1275"; SCRIPT_FILENAME: el nombre del script solicitado por el servidor, por ejemplo "prova.php3"; SERVER_ADMIN: el nombre del administrador del sistema; SERVER_PORT: la puerta en la que el servidor est en escucha, por ejemplo la puerta 80; SERVER_SIGNATURE: la posible "firma" del servidor; PATH_TRANSLATED: el recorrido del script invocado, por ejemplo "/var/www/php/prova.php3"; SCRIPT_NAME: el path, a partir de la DocumentRoot, del script; por ejemplo, /php/prova.php3"; REQUEST_URI: el URI que se necesita para acceder a la pgina; Variables de ambiente Tambin con PHP, como con otros lenguajes, es posible especificar y utilizar las variables de ambiente, pero tienen que depender de la shell que se ha utilizado si no es intil especificarlas. Para leerlas, intentad invocarlas desde el script PHP de esta forma: echo "Mi path es $PATH"; que visualizar vuestro path en el sistema. Variables PHP Para terminar, vamos a ver las variables que el mismo PHP nos pone a disposicin: argv: un array que inclluye los parmetros que pasan al script; argc: como arriba, pero si el script se ejecuta a travs de la lnea de mando;

PHP_SELF: el nombre del script actualmente en ejecucin; HTTP_COOKIE_VARS: un array de asociacin que incluye las variables que han pasado al script a travs de los cookies HTTP; HTTP_GET_VARS: un array de asociacin que incluye las variables que han pasado al script a travs de la solicitud de GET; HTTP_POST_VARS: como arriba, pero referido al mtodo POST. Hay que recordar que las ltimas tres variables tienen sentido slo si, en el archivo de configuracin (track_vars=On) o en el script con la instruccin "php_track_vars", ha sido habilitado el tracking de las variables. Constantes Adems de los datos que hemos visto anteriormente, PHP pone a disposicin de los programadores tambin unas constantes, es decir, lo opuesto a las variables. A un nombre se asocia un valor que el programador puede utilizar, pero que no puede modificar. Vamos a ver cules son: __FILE__ El nombre del script que est sometido al parsing; __LINE__ La lnea en la que se encuentra esta declaracin; PHP_VERSION La versin di PHP en uso; PHP_OS El nombre del sistema operativo sobre el que trabaja el script; TRUE Un valor siempre verdadero; FALSE Un valor siempre falso; E_ERROR Un error, diferente del error usual de parsing (es decir, escritura del cdigo), que no se puede recuperar; E_WARNING Como arriba, pero en este caso el PHP puede seguir la ejecucin del cdigo; E_PARSE Un error del parser (es ecir, de la sintaxis del archivo); E_NOTICE Algo que podra o no podra ser un error. La ejecucin no se interrumpe; La pregunta, a este punto, es: cmo utilizamos estas constantes? La respuesta es bastante simple: hay que utilizar un cdigo como:

que os devolver Linea XX del archivo NOMBREFILE. Probadlo. Adems hay que aadir que, si stas son las constantes "de default" del lenguaje, es posible definir en un script las propias constantes de forma mucho ms simple, como veremos cuando hablemos de las funciones internas del lenguaje. Tipos de datos El PHP soporta distintos tipos de datos, que no los tiene que impostar el programador, sino que son asumidos directamente por el motor, siempre que el programador no cambie el tipo (utilizando la funcin settype() ). Los datos pueden ser: Integer; Floating Point number; String; Array; Object. Vamos a verlos de uno en uno. Integer Los Integers, o enteros, pueden tener distintos valores nmericos que se expresan con diferentes anotaciones. $a = 18; # decimal $a = -18; # decimal negativo $a = 022; # anotacin octal; es igual a 18 decimales $a = 0x12; # anotacin exadecimal, es igual a 18 decimales Probablmente, por lo menos para empezar, tendris que utilizar sobre todo los nmeros decimales, sin embargo hay que saber que el lenguaje admite incluso otras anotaciones ademas de la decimal. Floating point number Este tipo de datos son los nmeros con la coma mvil, por ejemplo, 9.876. La sintaxis para utilizarlos es bastante simple: $a = 9.876; $a = 9.87e6; Strings Con respecto a las strings hay mucho ms que decir porque son tipos de datos diferentes. La sintaxis de base es: $string = "Yo soy una cadena"; Si se utilizan las comillas (""), el contenido de la cadena se expande (o, tcnicamente, "interpolado") ,

como en el ejemplo a continuacin: $num = 10; $string = "El nmero es $num"; Esto visualizar "El nmero es 10". Sin embargo, como con todos los lenguajes, tambin con los PHP tenemos caracteres especiales que tienen que estar anticipados por un smbolo, por ejemplo: $num = 10; $string = "El nmero es "$num""; Los que piensen que el output de este cdigo es 'El nmero es "10"' se equivocan. A parte de que, as como est escrito, el script dara un error de redaccin, las comillas son caracteres especiales, sin embargo, es posible utilizarlas. Por lo tanto la sintaxis correcta para el mando es: $num = 10; $string = "El nmero es \"$num\""; Otros caracteres especiales son: \n -> newline \r -> carriage return \t -> tabulacin \\ -> backslash \$ -> smbolo del dlar La alternativa a los caracteres de escape, cuando no haya contenidos que extender, son los pices (''); por ejemplo: $string = '$ es el smbol del dlar'; visualizar precisamente los que estn en los pices. Cuidado con un error muy comn: $num = 10; $string = 'El nmero es $num'; no visualizar "El nmero es 10" sino "El nmero es $num". Por lo tanto, podemos decir que con los pices el contenido de la cadena se se hace una transmisin literal, tal como est escrito entre las pices. Array El PHP soporta tanto los array escalares como los array asociativos. En PHP un array de valores se puede crear explcitamente definiendo los elementos, o su creacin puede hacerse introduciendo valores en el array. Por ejemplo: $a = ("abc", "def", "ghi");

crea el array definiendo explcitamente los elementos del array, al contrario de lo que ocurre en el ejemplo siguiente: $a[0] = "abc"; $a[1] = "def"; $a[2] = "ghi"; En este caso, el array se crea con tres elementos. Recordemos que el primer elemento de un array se identifica con el nmero "0". Si, por ejemplo, la longitud de una array es "5", ste incluye seis elementos. El elemento que tiene el ndice "0" es el primero del array. Si, en cambio, para aadir elementos a un array (supongamos que nos referimos al que hemos creado arriba) se utilizan los corchetes vacos y los datos se ajustan al array. Por ejemplo: $a[] = "lmn"; $a[] = "opq"; En este caso caso, el array se alarga 2 elementos y resulta ser: $a[0] = "abc"; $a[1] = "def"; $a[2] = "ghi"; $a[3] = "lmn"; $a[4] = "opq"; Este ejemplo es mucho ms til cuando queremos ajustar los elementos al array sin acudir a funciones especficas y sin tener que leer el nmero de los elementos que estn en el array. Todo se ajustar automticamente y correctamente. Los array asociativos se basan, en cambio, en parejas "name-value" y un ejemplo podra ser: $a = array( "nombre" => "Mario", "apellido" => "Rossi", "email" => "[email protected]", ); Es interesante la posibilidad que tiene la funcin array de introducir las entries, como en el ejemplo que sigue: $a = array( "primero" => array( "nombre" => "Mario", "apellido" => "Rossi", "email" => "[email protected]", ), "segundo" => array( "nombre" => "Marco", "apellido" => "Verdi", "email" => "[email protected]",

) ); Ejecutar en este array una instruccin del tipo: visualizar "[email protected]". Objects En PHP se pueden utilizar tambin los objetos. Para empezar vamos a ver un ejemplo: class visualiza { function ejecutar_visualiza () { eco "Visualiza un mensaje"; } } $obj=new visualiza; $obj->ejecutar_visualiza(); En primer lugar definimos la clase "visualiza", que incluye la funcin "ejecutar_visualiza" que quiere decir que visualiza simplemente un mensaje en la pantalla. Con la declaracin "new" inicializamos el objeto "$obj" e invocamos la funcin visualizar con el operador -> en $obj. Como podis ver, utilizar los objetos no es nada difcil aunque, para describirlos ms en detalle, seran neceserario ms explicaciones. Operadores Los operadores que se pueden utilizar con PHP son parecidos a los que se utilizan con otros lenguajes de programacin. Para nuestra comodidad, los vamos a dividir en distintas "familias": los operadores aritmticos, los operadores de asignacin y todos los dems. Operadores aritmticos Los operadores aritmticos son los ms simples y son: $a + $b -> sumar $a - $b -> restar $a * $b -> multiplicar $a / $b -> dividir $a % $b -> resto Fijmonos un momento en los ltimas dos: El resultado de la divisin no se aproxima al entero que est ms cerca sino que da todo el nmero. El nmero de los caracteres despus del punto se define en el archivo php3.ini en la lnea: precision = 14

Por lo tanto, saldrn slo 14 nmeros despus de la coma, siempre que los haya, como en el ejemplo: $a = 12; $b = 5; $c = $a / $b; echo $c; el resultado es 2.4 y se visualizar precisamente como 2.4, no como 2.40000000000000. Por lo tanto, los 14 decimales se visualizan slo si existen y no indiscriminadamente como ceros intiles. el resto se da por s solo, sin el resultado de la divisin misma. Si en el ejemplo anterior hubieramos utilizado "%" en vez de "/", el resultado habra sido "2". Asignacin A menudo, desgraciadamente, los operadores de asignacin se confunden con el operador de identidad. El operador "=" tiene un significado que no hay que confundir con el de "==". El operdaor de asignacin es el smbolo igual a (=) que da a una variable un valor, por ejemplo $a = 2; asigna a "$a" el valor "2". El error que se hace a menudo es escribir algo como: if ($a=2) { do_something; } que, si lo leen ojos inexpertos, podra parecer una expresin para decir que si $a es IGUAL a 2 hay que ejecutar el cdigo que est entre las llaves. Pues bien, no es tan grave: si hubieramos querido escribir lo que acabamos de decir, hubiramos tenido que utilizar: if ($a == 2) { do_something; } Otros operadores Los operadores que el PHP nos pone a disposicin son muchos y veremos en est pgina los ms importantes que hasta ahora no hemos tenido la posibilidad de analizar. En particular, hablaremos de los valores booleanos, los matemticos y los de incremento-decremento: $a & $b operador "And" ($a e $b); $a && $b como arriba, pero con una procedencia ms alta; $a | $b operador "Or" ($a o $b);

$a || $b como arriba, pero con una procedencia ms alta; $a ^ $b operador "Xor" ($a o $b pero con ambos); !$a operador "Not" (verdadero si $a no es verdadera); $a == $b operador de igualdad, verdadero si $a tiene el mismo valor que $b; $a != $b lo opuesto de lo de arriba; $a < $b; $a es menor de $b; $a $b $a mayor que $b; $a >= $b $a es mayor o igual a $b; $a ? $b : $c ste, se utiliza ms con las expresiones que con las variables, evala $b si $a es verdadera, y evala $c si $a es falsa; ++$a incrementa de uno $a y la devuelve; $a++ devuelve $a y la incrementa de uno --$a $a-como los dos anteriores, pero se decrementa el valor; Estructuras de control No pueden faltar en un lenguaje de programacin las estructuras de control que permiten que el programador ejecute unas acciones en el programa cuando se dan (o no se dan) determinadas condiciones. IF If permite ejecutar un bloque de noticias si se da (o no se da) una determinada condicin. Su sintaxis es:

if (condicin) statement Por ejemplo, queremos que un script nos indique si dos variables son iguales: $a = 2; $b = 2; if ($a == $b) { eco "\$a es igual a \$b y valen $a.\n"; } If se puede utilizar tambin de forma diferente de la que acabamos de explicar. Aqu hay un ejemplo: $a es igual a $b. que hace lo mismo que la de arriba. "if" se puede utilizar incluso entre llaves, utilizando "endif" cuando se quiera terminar el bloque "if"; por ejemplo: if ($a == $b) eco "\$a es igual a \$b y valen $a.\n"; endif; ELSE Else sirve para "completar" if: con if, de hecho, hemos decidido que ocurra algo cuando se da una condicin. Con else podemos programar qu ocurre cuanda esta condicin no se da. Un ejemplo podra ser: $a = 2; $b = 3; if ($a == $b) { eco "\$a es igual a \$b y valen $a.\n"; } else { eco "\$a es distinta de \$b.\n\$a vale \"$a\" mientras \$b vale \"$b\".\n"; } ELSEIF Elseif permite especificar casos no definidos por "if". Un ejemplo podra ser: "Si $a es igual a $b visualiza $a, si $a es distinto de $b visualiza un mensaje de error; avisa si $a no existe, avisa si $b no existe". Slo con if y else no se podra conseguir, sin embargo con elseif se convierte en una oparacin muy simple: if ($a == $b) { echo "\$a es igual a \$b.\n"; } elseif ($a != $b) {

echo "\$a es distinto de \$b.\n"; } elseif (!$a) { echo "\$a no existe.\n"; } elseif (!$b) { echo "\$b no existe.\n"; } Fijaos en dos aspectos: en un bloque pueden estar todos los elseif que necesitis y, para los que conocen el Perl, cuidado con no escribir "elsif" en lugar de "elseif", porque el significado es el mismo pero "elsif" no es reconocido por el PHP as como elseif no es reconocido por el Perl. WHILE La condicin "while" se comporta exactamente como en C; la sintaxis de base es: while (expresin) declaracin Como "if", adems, "while" se puede utilizar con o sin corchetes, aadiendo en el segundo caso la declaracin "endwhile". Los dos ejemplos que ponemos a continuacin son lo iguales: /* Primer ejemplo: */ /* $a se incrementa y se visualiza */ /* hasta que su valor no supere "5" */ $a = 1; while ($a $val\n"; } que devuelve: nombre => valor nombre2 => valor2 Si, en cambio, el array no es asociativo, el cdigo ser: $array = array ("nombre", "valor", "nombre2", "valor2"); while (list($key, $val) = each ($array)) { echo "$key => $val\n"; } y el resultado: 0 => nombre 1 => valor 2 => nombre2 3 => valor2 Seguramente os habis fijado en que la funcin "each()" a menudo se utiliza junto a "list()", que veremos a continuacin; echo: visualiza una o ms cadenas. No creo que haya mucho que comentar sobre esta funcin, en principio porque es muy simple y adems porque ya la hemos analizado y hemos visto como funciona. ereg_replace: devuelve una expresin regular con valores establecidos. En la funcin hay que incluir tres argumentos: el primero indica el texto que hay que sustituir, el segundo es el texto que se est utilizando y el tercero es la cadena que hay que modificar. Por ejemplo: $stringa = "ste es un curso ASP"; echo ereg_replace("ASP", "PHP", $cadena); Se hubiera podido escribir tambin: echo ereg:replace("ASP", "PHP", "ste es un curso ASP");

que, sin embargo, no tendra mucho sentido. ereg: ejecuta el matching de una expresin regular. El ejemplo que se encuentra en la documentacin es bastante claro: if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) { echo "$regs[3].$regs[2].$regs[1]"; } else { echo "Invalid date format: $date"; } Todo el procedimiento se desarrolla para controlar que una fecha est escrita en un formato correcto. Vamos a ver el significado de "[0-9]{4})-([0-9]{1,2})-([0-9]{1,2}". Para los que conocen las expresiones regulares, no ser difcil traducirlo con "un nmero entre 0 y 9 que hay que repetir cuatro veces y que tiene que astar seguido de un '-', de un nmero entre 0 y 9 repetido una o dos veces, de un '-' y de un nmero entre 0 y 9 repetido una o dos veces". Muy a menudo es mucho ms simple leer una expresin regular que traducirla al lenguaje hablado. eregi_replace: funciona exctamente como "ereg_replace()", solamente que, en este caso, la expresin regular se sustituye por una forma "case insensitive", es decir, pasando de los caracteres maysculas y minsculas; eregi: funciona excatmente como "ereg()", solamente que en este caso la expresin regular se sustituye mediante una forma "case insensitive"; error_log: enva un mensaje de error al archivo de log del servidor, directamente a la puerta TCP de la que ha llegado la solicitud o a un archivo. La sintaxis es: error_log(message, mesage_type, destination); Message_type es un nmero que especifica donde tiene que llegar el mensaje Puede ser: 0: el mensaje se enva al logger del PHP o al archivo especificado por "error_log"; 1: el mensaje se enva por email al parmetro (probablemente una direccin email vlida) especificado en "destination"; 2: el mensaje se enva al depurador; 3: el mensaje se introduce en append en el parmetro especificado en destination"; escapeshellcmd: si se invoca un mando exterior de una shell, con este mando se consigue que delante de los metacaracteres de la shell haya un carcter de escape para evitar que el mando produzca errores; exec: ejecuta un programa externo; exit: sale de un script; el mando "exit()" es til cuando se quiere parar un script siempre que no se cumplan unas condiciones, por ejemplo: if (condicin) { ejecutar el bloque; } else {

exit; } Recordad que "exit()" no lleva un mensaje de error como "die()": si os interesa dar "explicaciones" sobre el porqu el script termina, hay que utilizar "die()", pero no es posible escribir: exit "Salir del programa\n"; o mejor, es posible pero no tiene ningn efecto excepto el de salir; exp: eleva "e" (2.71828.....) a la potencia que es el argumento de la funcin: echo exp(3); devolver: 20.0855369... explode: divide una cadena segn un determinado pattern. Por ejemplo, si queremos dividir una cadena que incluye tres nombres separados por comas, podemos escribir: $nombres = "Fulano,Mengano y Zutano"; list ($nombre1, $nombre2, $nombre3) = explode (",", $nombres); echo "$nombre1\n$nombre2\n$nombre3\n"; que devolver: Fulano Mengano Zutano Explode() es una versin simplificada de "split() que veremos sucesivamente. Las dos funciones, adems, son muy tiles cuando tenemos la necesidad de leer unos archivos incluidos en los listados. Fclose, feof, filegroup, filesize...

fclose: cierra un puntero en un archivo que se ha abierto antes con fopen(). Vase fopen() para ms informaciones; feof: controla un puntero en un archivo para ver si est al final del mismo; fgetc: restituye el primer carcter del puntero que se ha abierto antes con fopen(). Si, por ejemplo, el puntero $file seala el archivo "/tmp/prova.txt" que incluye solamente la lnea "Hola", aparecer un cdigo como el siguiente: $char = fgetc($file); echo "$char\n"; devolver "C" (por supuesto sin comillas);

file_exists: controla si un archivo existe, en este caso dar TRUE sino FALSE, por ejemplo : if (file_exists($file)) { print "$file esiste; } Puede ser muy til utilizar esta funcin cuando necesitamos intervenir en uno o ms archivos para actuar sobre el mismo slo si ste existe sin arriesgarse a inexplicables "anomalas" del script; filegroup: devuelve el grupo al que pertenece el archivo: $filename = "/tmp/prueba.txt"; $group = filegroup($filename); echo "$filename pertenece al gruppo $group\n"; Obviamente, la funcin se implementa slo en los sistemas multiuser; filesize: devuelve la domensin de un archivo: $filename = "/tmp/prueba.txt"; $size = filesize($filename); echo "$filename -> $size\n"; filetype: determina el tipo de archivo; los valores posibles son: fifo, char, dir, block, link, file y unknown; flock: aplica el locking a un archivo; de modo especfico flock() opera en un puntero en un archivo que se ha abierto antes y las operaciones posibles son: 1: para el lock en lectura; 2: para el lock en escritura; 3: para quitar el lock, cualquiera que sea el tipo; 4: para impedir que flock() bloquee un archivo cuando aplica el lock; Por ejemplo, para aplicar flock() en un puntero "$file" definido antes, se necesita escribir: flock($file, 2); /* Para impedir que el archivo se lea*/ ..... /* Cdigo para trabajar en el archivo */ flock($file, 3); /* Para quitar el flock */ fopen: abre un archivo o un URL. La sintaxis es: fopen(filename, mode); Obviamente a "filename" le corresponde el nombre del archivo o el URL del mismo, y a "mode" la

modalidad con la que se tiene que abrir. Aqu se puede elegir entre: r -> abre el archivo slo cuando se lee; r+ -> abre el archivo cuando se lee y se escribe; w -> abre el archivo slo cuando se escribe; w+ -> abre el archivo cuando se lee y se escribe; a -> abre el archivo slo cuando se escribe e introduce el puntero al final del archivo ("w" lo introduce al final) a+ -> abre el archivo cuando se lee y se escribe introduciendo el puntero al final del archivo; Por ejemplo, para abrir un archivo local slo para leerlo tendremos que escribir: $file = fopen("/tmp/prueba.txt", "r"); Para un URL, en cambio: $file = fopen("http://www.myhost.com/index.html", r"); Para todas las sucesivas operaciones en el archivo, adems, tendremos que actuar directamente sobre el puntero ($file) y no directamente sobre el archivo. Header, hexdec, implode, in_array...

header: enva cualquier header HTTP; por ejemplo: header("Pragma: no-cache"); Esta funcin es muy til en distintos casos: por ejemplo, para forzar una autorizacin se puede enviar un "401", etc.; hexdec: devuelve el valor decimal de un nmero exadecimal; implode: como se puede entender por el nombre, esta funcin no es nada ms que lo contrario de "explode". La sintaxis es igual, pero en este caso devuelve una cadena con los valores separados del primer argumento y la funcin; in_array: devuelve valor verdadero si en un array hay un determinado valor. Un ejemplo podra ser: $nmeros = array("1", "2", "3", "4", "5"); $num = 2; if (in_array($num, $nmeros)) { print "$num est en el array \$nmeros\n"; } is_array: controla si una fecha variable es un array: if (is-array($var)) {

echo "\$var es un array\n"; } Lo mismo ocurre con las funciones siguientes, con la nica diferencia del argumento: - is_dir; - is_double; - is_executable; - is_file; - is_float; - is_int; - is_integer; - is_link; - is_long; - is_object; - is_readable; - is_real; - is_string; - is_writeable. isset: devuelve TRUE si existe la variable, falso si no existe. Por ejemplo, para ver si existe o no una variable es posible escribir: $a = 10; echo isset($a), "\n"; echo isset($b), "\n"; que devolver 1 y 0. recordemos que 1 se considera valor positivo (TRUE), 0 negativo (FALSE); join: une los elementos de un array con una cadena determinada; el uso es igual al de implde(); key: toma una clave de un array asociativo. Un ejemplo simple puede ser: $array = array("1" => "uno"); $clave = key($array); echo "$clave\n"; que devolver "1". Esta funcin es til pata retomar todas las claves de los array asociativos complejos; link: crea un hard enlace. La sintaxis es: link(target, link); Las informaciones sobre los enlaces (a propsito de la existencia del archivo al que se refiere el enlace mismo) se pueden visualizar con linkinfo(); list: da unas variables como si fueran partes de un array. Volvamos al ejemplo que hemos hecho con each:

$array = array ("nombre" => "valor", "nombre2" => "valor2"); while (list($key, $val) = each ($array)) { echo "$key => $val\n"; } En este caso, list() se utiliza para "redactar" una lista de variables que se recogern del array sin darles un valor sino dejando a las partes sucesivas del cdigo la asignacin de sus valores. Adems hay que notar que las variables creadas por list() no tienen slo un valor, sino que cada vez que se invocan tienen un valor diferente, segn los elementos que se encuentran en el array. Mail, max, mkdir, opendir, phpinfo...

mail: funcion para enviar email. La funcin tiene una sintaxis: mail(To, Subject, Message, Otros_headers); Si queremos enviar un email a "[email protected]" con subject "Prueba" y queremos especificar el nombre del remitente, podemos escribir: mail("[email protected]", "Subject", "ste es el texto del email", "From: remitente ); Como podis ver, enviar email con script PHP utilizando la funcin "mail" es muy simple. Obviamente, en el archivo de configuracin, tenis que haber especificado la locacin de sendmail (o programa anlogo para enviar email); max: restituye el valor ms alto de una serie de variables: $num = 1; $num2 = 23; $num3 = 0.3; $max = max($num, $num2, $num3); echo $max, "\n"; devolver "23"; Opuesto a max() es min(), que tiene la misma sintaxis que max(); mkdir: crea un directorio del que se tiene que especificar el recorrido y los permisos: mkdir("/tmp/prueba", 0777); crea el directorio "/tmp/prueba" con permisos impostados en 0777; opendir: abre un directorio del que es posible leer los elementos con readdir() y, sucesivamente, cerrarla con closedir();

phpinfo: es la funcin ms "representativa" del PHP, porque visualiza muchsimas informaciones en el PHP mismo. Su uso tendra que concerse ya: phpinfo(); phpversion: visualiza la versin de PHP que se est utilizando; popen: abre un puntero para un procedimiento que se tiene que cerrar con pclose(); print: visualiza una cadena de vdeo como eco(); rand: genera un valor numrico de forma casual. Si quisiramos un valor entre 10 y 20, se podra escribir: $random = rand(10, 20); range: crea un array que incluye una serie de valores enteros especificados. Por ejemplo, para crear un array con valores de 1 a 10 ser necesario escribir: $array = range(1, 10); rename: vuelve a nombrar un archivo. Por ejemplo, si se usa: rename("oldname", "newname"); para volver a nombrar "oldname" como "newname"; rmdir: como el anlogo mando unix, suprime un directorio. Esto se puede conseguir slo si: - el directorio est vaco; - los permisos en el directorio lo permiten. round: redondea un nmero: $nmero = round(2,3); /* devuelve 2 */ $nmero = round(2.5); /* devuelve 3 */ $nmero = round(2.6); /* devuelve 3 */ Como podis ver, los decimales de 0 a 4 se redondean en el nmero entero anterior, de 5 a 9 al nmero entero sucesivo. Shuffle, sin, sizeof, sleep, split...

shuffle: ordena de forma casual los elementos de un array. Por ejemplo, para poder visualizar los elementos de un array de manera casual se podra escribir: $num = range(0,10); shuffle($num); while (list(,$nmero) = each($num)) { echo "$nmero ";

} sin: devuelve el seno de la expresin; sizeof: calcula el nmero de los elementos en un array. Si, por ejemplo, se quiere calcular el nmero de elementos y actuar consecuentemente, se podra escribir: $array = array("1", "2", "3", "4", "5"); $size = sizeof($array); if ($size