Вы находитесь на странице: 1из 31

TUTORIAL PHP

Introduccin
PHP es un lenguaje de programacin interpretado, diseado originalmente para la creacin de pginas web dinmicas. Se usa principalmente para programacin del servidor (server-side scripting), pero puede ser utilizado desde una interfaz de lnea de comandos o en la creacin de otros tipos de programas incluyendo aplicaciones con interfaz grfica usando las bibliotecas Qt o GTK+.

PHP es un acrnimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la implementacin actual de PHP es del The PHP Group y es el estndar de facto para PHP al no haber una especificacin formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre.

El objetivo final es conseguir la integracin de las paginas HTML con aplicaciones que corran en el servidor como procesos integrados en el mismo, y no como un proceso separado, como ocurra con los CGIs. Igualmente interesa que dichas aplicaciones sean totalmente independientes del navegador (lo que no ocurra con otros lenguajes basados en scripts, como JavaScript o VisualBasic Script), independientes de la plataforma y de la Base de Datos.

Perl ha sido el lenguaje estndar para construir CGIs durante mucho tiempo, y an sigue siendo una de las mejores soluciones para desarrollar aplicaciones Web portables, ya que trabaja sobre cualquier servidor Web que soporte CGIs, y sobre cualquier plataforma que soporte Perl; incluso ha servido para desarrollar mdulos que extienden la funcionalidad de los servidores.

PHP es un lenguaje de programacin soportado por HTML. La sintaxis est heredada de C, Java y Perl. Este lenguaje est orientado a los desarrolladores de pginas Webs. El gran parecido que posee PHP con los lenguajes ms comunes de programacin estructurada permite a la mayora de los programadores crear aplicaciones complejas con una curva de aprendizaje muy corta.

PHP es una alternativa a las tecnologas de Microsoft ASP y ASP.NET (que utiliza C# VB.NET como lenguajes), a ColdFusion de la compaa Adobe (antes Macromedia), a JSP/Java de Sun Microsystems, y a CGI/Perl. Aunque su creacin y desarrollo se da en el mbito de los sistemas libres, bajo la licencia GNU, existe adems un IDE (entorno de desarrollo integrado) comercial llamado Zend Studio. Recientemente, CodeGear (la divisin de lenguajes de programacin de Borland) ha sacado al mercado un entorno integrado de desarrollo para PHP, denominado Delphi for PHP. Tambin existe un mdulo para Eclipse, uno de los IDE ms populares.

Cmo funciona PHP?


PHP es un lenguaje interpretado de propsito general mpliamente usado y diseado especialmente para desarrollo web que puede ser incrustado dentro de cdigo HTML. Generalmente se ejecuta en un servidor web, tomando el cdigo en PHP como su entrada y creando pginas web como salida. Puede ser desplegado en la mayora de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. Veamos un ejemplo sencillo:

<html> <body> <?php echo "Hola. Esto es un script PHP";?> </body> </html>

Esto es muy parecido a cualquier otro Script escrito en Perl o C. El cdigo de PHP est incluido en tags especiales <?php ?>

Lo que hace diferente a PHP es que el cdigo se ejecuta siempre en el servidor.

Cuando el cliente hace una peticin al servidor para que le enve una pgina web, el servidor ejecuta el intrprete de PHP. ste procesa el script solicitado, que generar el contenido de manera dinmica (por ejemplo obteniendo informacin de una base de datos). El resultado es enviado por el intrprete al servidor, quien a su vez se lo enva al cliente.

As, al ejecutar el script anterior, el cliente recibir slo los resultados de la ejecucin por lo que es imposible para el cliente acceder al cdigo que gener la pgina.

Qu se puede hacer con PHP?


En el nivel ms bsico PHP es equiparable a un CGI cualquiera. La mayor fuerza de PHP es que est preparado para soportar accesos a muchos tipos de bases de datos como:

1. Adabas D 2. dBase 3. Empress 4. FiclePro 5. informix 6. InterBase 7. Solid

8. Sybase 9. Velocis 10. Unix dbm 11. mSQL 12. MySQL 13. Oracle 14. PosgreSQL

Adems de esto, PHP soporta la utilizacin de otros protocolos como IMAP, SNMP, NNTP, POP3 o HTTP a nivel de socket.

Algo de Historia
PHP fue creado por Rasmus Lerdorf a finales de 1994, aunque no hubo una versin utilizable por otros usuarios hasta principios de 1995. Esta primera versin se llam, Personal Home Page Tools.

Al principio, PHP slo estaba compuesto por algunas macros que facilitaban el trabajo a la hora de crear una pgina Web. Hacia mediados de 1995 se creo el analizador sintctico y se llam PHP/F1 Versin 2, y slo reconoca el texto HTML y algunas directivas de mSQL. A partir de este momento, la contribucin al cdigo fue pblica.

El crecimiento de PHP desde entonces ha sido exponencial, y han surgido versiones nuevas como la actual, PHP3 (1999), PHP4 (2000), PHP5 (2004) y PHP6 (actualmente).

Caractersticas de PHP

Entre las ventajas cabe destacar:

Es un lenguaje multiplataforma. Completamente orientado a la web. Capacidad de conexin con la mayora de los motores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL y PostgreSQL. Capacidad de expandir su potencial utilizando la enorme cantidad de mdulos (llamados ext's o extensiones). Posee una amplia documentacin en su pgina oficial, entre la cual se destaca que todas las funciones del sistema estn explicadas y ejemplificadas en un nico archivo de ayuda. Es libre, por lo que se presenta como una alternativa de fcil acceso para todos. Permite las tcnicas de Programacin Orientada a Objetos. Biblioteca nativa de funciones muy amplia. No requiere definicin de tipos de variables aunque sus variables se pueden evaluar tambin por el tipo que estn manejando en tiempo de ejecucin. Tiene manejo de excepciones (desde PHP5). Si bien PHP no obliga a quien lo usa a seguir una determinada metodologa a la hora de programar (muchos otros lenguajes tampoco lo hacen), an estando dirigido a alguna en particular, el programador puede aplicar en su trabajo cualquier tcnica de programacin y/o desarrollo que le permita escribir cdigo ordenado, estructurado y manejable.

Como desventaja, hay que decir que la nica forma de ocultar los fuentes es mediante la ofuscacin de cdigo.

Instalacin y configuracin del servidor web para el soporte de PHP


Un buen tutorial de http://www.php.net sobre cmo instalar PHP se puede descargar de http://www.php.net/manual/en/install.php

Sin embargo, la mejor opcin es usar un paquete que incluya el servidor web, PHP, Perl y MySQL como XAMPP.

XAMPP es un servidor independiente de la plataforma, de software libre, que consiste principalmente en el servidor web Apache, la base de datos MySQL, y los intrpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrnimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El programa est liberado bajo la licencia GNU y acta como un servidor Web libre, fcil

de usar y capaz de interpretar pginas dinmicas. Actualmente XAMPP est disponible para Microsoft Windows, GNU/Linux, Solaris y Mac OS X . XAMPP solamente requiere descargar y ejecutar un archivo zip, tar, o exe, con unas pequeas configuraciones en alguno de sus componentes del servidor Web. Para instalar XAMPP se requiere solamente una pequea fraccin del tiempo necesario para descargar y configurar los programas por separado.

Para descargar la ltima versin podemos entrar en: http://www.apachefriends.org/en/xampp.html

Lenguaje PHP
Bases de la Sintaxis
La insercin de PHP en HTML se hace mediante etiquetas especiales:

Slo si se activa la funcin short_tags() o la bandera de configuracin short_open_tag.


<? .... ?> <?php .... ?> <script languaje="php"> .... </script>

Slo si se activan las etiquetas para ficheros 'asp' con la bandera de configuracin asp_tags.
<% .... %>

Las instrucciones se separan con ';', en el caso de ser la ltima instruccin no es necesario el punto y coma.

Los comentarios en PHP pueden ser:

Como en C o C++, /*...*/ // Otro tipo de comentario de una lnea es #, que comentar la lnea en la que aparezca pero slo hasta el tag ?> que cierra el cdigo php.

Tipos de Datos
Los tipos de cada variable en PHP no estn tan claros como en C. El intrprete asigna el tipo de una variable segn el uso que se est haciendo de ella. Para asignar un tipo fijo a una variable se utiliza la funcin settype().

En PHP, una variable no necesita estar declarada antes de darle un valor. Adems, PHP convierte automticamente la variable al tipo de datos que almacena. En un lenguaje fuertemente tipificado (C/C++ o Java) debemos indicar el tipo en la declaracin, mientras que en PHP no es necesario.

Respecto al tipo entero y flotante, no hay mucho que decir, as que detallaremos slo los tipos ms complejos:

String
Las cadenas pueden estar delimitadas por comillas dobles " o simples '. Si la cadena est delimitada por comillas dobles, cualquier variable incluida dentro de ella ser sustituida por su valor. Para especificar el carcter " se escapar con el carcter backslash. Otra forma de delimitar una cadena es utilizando la sintaxis de documentos "<<<" Ejemplo:

$variable = <<< EOD Ejemplo de cadena que ocupa varias lneas EOD;

Esta ltima sintaxis slo se puede utilizar a partir de PHP 4. Las operaciones con cadenas son exactamente igual que en PERL.

Podemos generar la fecha y hora actuales usando la funcin date()

$fecha_generada = date("Y\-n\-j H\:i\:s");

Podemos trocear una cadena a partir de un carcter, usando la funcin explode()

$trocitos = explode( "#" , $cadena );

En la siguiente direccin encontraremos la gua completa de las funciones de cadenas de PHP: http://www.w3schools.com/PHP/php_ref_string.asp

Arrays
Los Arrays en PHP se pueden utlizar tanto como Arrays indexados o como Arrays asociativos. Los Arrays de una sola direccin, pueden ser tanto escalares como asociativos. En realidad no existe ninguna diferencia entre ellos. Las funciones que se utilizan para crear Arrays de este tipo son list() o array(). En el caso de que no se especifique el ndice en un array, el elemento que se asigna se aade al final. Los arrays pueden ser ordenados utilizando las siguientes funciones: asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort() y uksort(). Otras funciones para el manejo de arrays son: count(), next(), prev() y each().

Arrays Numricos
Un array numrico almacena cada elemento con un ndice asociado. Hay dos formas de crear un array numrico:

1. Crear el array automticamente, comenzando en el ndice 0 (asignado al primer valor):


$nombres=array("pepe","juan","luisa","antonia");

2. Asignar los ndices manualmente:


$nombres[0]="pepe"; $nombres[1]="juan"; $nombres[2]="luisa"; $nombres[3]="antonia";

A continuacin veremos cmo acceder a los elementos que almacena el array usando los ndices asociados:

<?php $nombres[0]="pepe"; $nombres[1]="juan";

$nombres[2]="luisa"; $nombres[3]="antonia"; echo $nombres[0] . " y " . $nombres[1] . " son chicos."; ?>

Arrays Asociativos
En un array asociativo cada elemento est asociado a un identificador-clave. Hay dos formas de crear el array:

1. En el siguiente ejemplo, usaremos un array asociativo para guardar datos de varias personas:
$edad = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);

2. En este otro caso, creamos un array idntico al anterior, pero usando una sentencia para cada elemento:
$edad['Peter'] = "32"; $edad['Quagmire'] = "30"; $edad['Joe'] = "34";

La forma de usar estos arrays en un script es:


<?php $edad['Peter'] = "32"; $edad['Quagmire'] = "30"; $edad['Joe'] = "34";

echo "Peter tiene " . $edad['Peter'] . " aos."; ?>

Arrays Multidimensionales

En PHP los arrays multidimensionales combinan las propiedades de un array unidimensional. Los indices de un array multidimensional pueden ser tanto numricos como asociativos.

Cada elemento del array principal ser a su vez un array. Incluso, podemos hacer que cada elemento de cada sub-array sea otro array (y as sucesivamente).

Veamos un ejemplo de array multidimensional asociativo:

$a=array( "manzana" => array("color" => "rojo", "tacto" => "suave"), "naranja" => array("color" => "naranja", "tacto" => "rugoso"), "platano" => array("color" => "amarillo", "tacto" => "suave") );

En el siguiente ejemplo se asignan automticamente las claves identificadoras:

$familias = array ( "Griffin"=>array ( "Peter", "Lois", "Megan" ), "Quagmire"=>array ( "Glenn" ), "Brown"=>array ( "Cleveland", "Loretta", "Junior" ) );

A partir de ese array, podemos hacer el siguiente acceso:

echo "El segundo miembro de la familia Griffin es " . $familias['Griffin'][2] ;

Gua Completa del manejo de Arrays en PHP


En la siguiente direccin encontraremos la gua completa de las funciones de manejo de arrays de PHP: http://www.w3schools.com/PHP/php_ref_array.asp

Objetos
Al final de este tutorial veremos en detalle cmo usar clases e instanciar objetos. Para inicializar un objeto se utiliza el mtodo new , y para acceder a cada uno de sus mtodos se utiliza el operador -> .

Tipos de Variables
Una variable en PHP define su tipo segn el contenido y el contexto en el que se utilice, es decir, si se asigna una cadena a una variable, el tipo de esa variable ser string . Si a esa misma variable se le asigna un nmero, el tipo cambiar a entero . Para asegurarte de que una variable es del tipo adecuado se utiliza la funcin settype(). Para obtener el tipo de una variable se utiliza la funcin gettype(). Tambin es posible utilizar el mecanismo del casting tal y como se utiliza en C.

Variables y constantes en PHP


Variables
Cualquier nombre de variable est precedido por el smbolo $. Adems, en PHP las variables siempre se asignan por valor, aunque en PHP4 existen mtodos para asignar por referencia (&).

En PHP cada vez que se ejecuta un script, existen variables que se crean y que nos pueden informar del entorno en el que se est ejecutando dicho script.

Para obtener una lista de todas estas variables predefinidas se puede utilizar la funcion
phinfo()

De todas estas variables, algunas se crean dependiendo del servidor que se est utilizando y otras son propias de PHP.

Si se tratara de un servidor Apache, la lista de variables es:

* GATEWAY_INTERFACE * SERVER_NAME * SERVER_SOFTWARE * SERVER_PROTOCOL * REQUEST_METHOD * QUERY_STRING * DOCUMENT_ROOT * HTTP_ACCEPT * HTTP_ACCEPT_CHARSET * HTTP_ENCODING * HTTP_ACCEPT_LANGUAJE * HTTP_CONNECTION * HTTP_HOST * HTTP_REFERER * HTTP_USER_AGENT * REMOTE_ADDR * REMOTE_PORT * SCRIPT_FILENAME * SERVER_ADMIN * SERVER_PORT * SERVER_SIGNATURE * PATH_TANSLATED * SCRIPT_NAME * REQUEST_URL

Las variables creadas por el propio PHP son:

argv argc PHP_SELF HTTP_COOKIE_VARS HTTP_GET_VARS HTTP_POST_VARS

El mbito de una variable en PHP es exactamente igual que en C o en Perl tomando siempre en cuenta los ficheros incluidos al principio de cada programa.

Constantes
Las constantes en PHP tienen que ser definidas por la funcin define() y adems no pueden ser redefinidas con otro valor:

<?php define("CONSTANTE", "hello world.");

echo CONSTANTE; ?>

Adems, existen una serie de variables predefinidas denominadas:

_FILE_: Fichero que se est procesando. _LINE_: Lnea del fichero que se est procesando _PHP_VERSION: Versin de PHP. PHP_OS: Sistema operativo del cliente. TRUE: Verdadero. FALSE: Falso. E_ERROR: Error sin recuperacin. E_WARNING: Error recuperable. E_PARSE: Error no recuperable (sintaxis). E_NOTICE: Puede tratarse de un error o no. Normalmente permite continuar la ejecucin.

Todas las constantes que empiezan por "E_"se utilizan normalmente con la funcin
error_reporting()

Expresiones y operadores
En PHP una expresin es cualquier cosa que pueda contener un valor. Las expresiones ms simples son las variables y las constantes y otras ms complicadas sern las funciones, puesto que cada funcin devuelve un valor al ser invocada, es decir, contiene un valor, por lo tanto, es una expresin.

Las expresiones en PHP se parecen mucho a las de C. Los operadors abreviados, los incrementos, etc, son exactamente iguales. Existen otros operadores adicionales como el operador "." que concatena valores de variables, o el operador "= = =" denominado operador de identidad que devolver verdadero si las expresiones a ambos lados del operador contienen el mismo valor y a la vez son del mismo tipo. Por ltimo, el operador "@" sirve para el control de errores. Para poder ver como funciona el operador @, veamos un ejemplo:

<?php $res = @mysql_query("select nombre from clientes") or die ("Error en la seleccin, '$php_errormsg'");

?>

Este ejemplo, utiliza el operador @ en la llamada a mysql_query y en el caso de dar un error, se salvar el mensaje devuelto en una variable denominada php_errormsg. Esta variable contendr el mensaje de error de cada sentencia y si ocurre otro error posterior, se machaca el valor con la nueva cadena.

PHP mantiene tambin los operadores ' que sirven para ejecutar un comando del sistema tal y como hace la funcin system() por ejemplo.

Las diferencias con C son los operadores de referencia, & y *, puesto que las operaciones por referencia no existen en PHP, aunque s son posibles a partir de PHP4.

Las siguientes tablas muestran los diferentes operadores disponibles:

Operadores aritmticos
Operador + * / % suma resta multiplicacin divisin mdulos (resto de la divisin) incremento decremento Descripcin x=2 x+2 x=2 5-x x=4 x*5 15/5 5/2 5%2 10%8 10%2 x=5 x++ x=5 x-Ejemplo 4 3 20 3 2.5 1 2 0 x=6 x=4 Resultado

++ --

Operadores de asignacin
Operador = += -= *= x=y x+=y x-=y x*=y Ejemplo x=y x=x+y x=x-y x=x*y Es igual a...

/= .= %=

x/=y x.=y x%=y

x=x/y x=x.y x=x%y

Operadores de comparacin
Operador == != > < >= <= Descripcin Es igual a Es diferente Es mayor Es menor Es mayor o igual Es menor o igual Ejemplo 5==8 es falso 5!=8 es verdad 5>8 es falso 5<8 es verdad 5>=8 es falso 5<=8 es verdad

Operadores lgicos
Operador && and Descripcin x=6 y=3 (x < 10 && y > 1) es verdad || or x=6 y=3 (x==5 || y==5) es falso ! not x=6 y=3 !(x==y) es verdad Ejemplo

Estructuras de control
Condicionales
Cuando estamos escribiendo cdigo, de cuando en cuando, querremos ejecutar diferentes porciones de cdigo en funcin de ciertas condiciones. En estos casos debemos usar las sentencias condicionales.

En PHP disponemos de las siguientes sentencias:

if : se usa para ejecutar una sola porcin de cdigo si la condicin es verdadera if...else : se usa para ejecutar una u otra en funcin de la condicin

if...elseif....else : podemos especificar varios bloques de cdigo en funcin de varias condiciones diferentes switch : con esta otra podemos especificar muchos bloques diferentes

<html> <body> <?php $d=date("D"); if ($d=="Fri") echo "Buen finde!"; ?> </body> </html>

<html> <body> <?php $d=date("D"); if ($d=="Fri") echo "Buen finde!"; else echo "Buenos dias!"; ?> </body> </html>

<html> <body> <?php $d=date("D"); if ($d=="Fri") echo "Buen finde!"; elseif ($d=="Sun") echo "Hoy es domingo"; else echo "Buenos dias!"; ?> </body> </html>

<html> <body> <?php switch ($x) { case 1: echo "Num. break; case 2: echo "Num. break; case 3: echo "Num. break; default: echo "Otro } ?> </body> </html>

1"; 2"; 3"; nmero distinto";

Bucles
Cuando estamos escribiendo cdigo, de cuando en cuando, tendremos que ejecutar diferentes porciones de cdigo de forma repetida. En lugar de replicar varias veces el mismo cdigo, debemos usar las sentencias de tipo bucle:

while : repite el cuerpo mientras que la condicin sea cierta do...while : repite el cuerpo mientras que la condicin sea cierta for : repite el cuerpo un nmero de veces foreach : repite el cuerpo para cada elemento que haya en el array que le pasamos

<html> <body>

<html> <body>

<?php $i=1; while($i<=5) { echo "Iteracin " . $i . "<br />"; $i++; } ?>

</body> </html>

<?php $i=1; do { $i++; echo "Iteracin " . $i . "<br />"; } while ($i<=5); ?> </body> </html>

<html> <body> <?php for ($i=1; $i<=5; $i++) { echo " Iteracin " . $i . "<br />"; } ?> </body> </html>

<html> <body> <?php $x=array("uno","dos","tres"); foreach ($x as $valor) { echo $valor . "<br />"; } ?> </body> </html>

Funciones en PHP
En PHP podemos usar las funciones que nos ofrece el lenguaje, o podemos crear otras que necesitemos.

Funciones incluidas en el lenguaje PHP


En la siguiente direccin encontraremos la gua completa de las funciones incluidas en PHP: http://www.w3schools.com/PHP/default.asp

Crear una funcin. Sintaxis


El cuerpo de una funcin se ejecuta al llamarla desde cualquier punto del script. La sintaxis de definicin es:

function functionName() { cdigo a ejecutar; }

La llamada se realiza escribiendo el nombre dado a la funcin. Veamos un ejemplo de funcin que saluda cuando se la llama:

<html><body>

<?php function escribe() { echo "Hola"; }

echo "Vamos a saludar."; escribe(); ?>

</body></html>

Usando parmetros
Las funciones normalmente reciben parmetros (actan internamente a la funcin como variables). Los parmetros se especifican en la cabecera de definicin entre los parntesis.

En los siguientes ejemplos, la funcin recibe parmetros. El ejemplo de la izquierda recibe un parmetro (nombre) y lo muestra. El ejemplo de la derecha recibe dos parmetros (nombre y edad) y los muestra:

<html> <body>

<html> <body>

<?php function escribe($nombre) { echo $nombre . " <br />"; }

<?php function escribe($nombre,$edad) { echo $nombre . " tiene "; echo $edad . " aos <br />"; }

echo "Me llamo "; escribe("Juan"); escribe("Angel","78");

echo "Te llamas "; escribe("Luisa"); ?>

escribe("Pepa","47"); ?>

</body> </body> </html> </html>

Devolviendo valores
Las funciones pueden devolver valores usando la sentencia return:

<html> <body>

<?php function suma($x,$y) { $total=$x+$y; return $total; }

echo "1 + 16 = " . suma(1,16); ?>

</body> </html>

Entrada/Salida con ficheros en el servidor


PHP permite la utilizacin de ficheros almacenados en el servidor. Veremos las funciones bsicas: abrir (fopen), cerrar (fclose), leer (fgets) y escribir (fputs). Con stas podremos resolver la mayora de problemas en los que necesitemos acceder al ficheros.

fopen (archivo, modo): Con esta funcin abrimos un fichero (bien sea local o una direccin de internet) sobre el que tengamos permisos para el tipo de acceso que queremos hacer.

La funcin fopen nos devuelve un valor numrico (manejador de archivo) de tipo integer que nos servir para hacer referencia al archivo abierto. Con fopen podemos abrir un archivo para lectura (r) o escritura (w). Tambin podemos abrirlo para lectura y escritura (r+, a+).

$fichero=fopen("fichero.txt" , "r");

fgets (manejador_archivo, longitud): La funcin fgets nos devuelve una cadena con la longitud especifica del fichero al que apunta el manejador de archivo.

<?php $archivo = fopen("fichero.txt" , "r"); if ($archivo) { while (!feof($archivo)) { $linea = fgets($archivo, 255);

echo $linea; } } fclose ($archivo); ?>

La funcin feof devuelve TRUE si el puntero de lectura/escritura se encuetra al final del fichero, y FALSE en caso contrario.

fputs (manejador_archivo, cadena): La funcin fputs escribe una cadena en el fichero indicado (previamente abierto). La funcin fputs devuelve TRUE si se ha escrito con xito, en caso contrario devuelve FALSE.

<?php $archivo = fopen("fichero.txt" , "w"); if ($archivo) { fputs ($archivo, "Hola Mundo"); } fclose ($archivo); ?>

fclose (manejador_archivo): Con esta funcin cerramos el fichero que nos marca el manejador de archivo.

file_exists (fichero): Esta funcin devuelve TRUE si el archivo especificado existe, y FALSE en caso contrario.

<?php if (file_exists("fichero.txt")) { echo "El fichero existe";

} else { echo "El fichero NO existe"; } ?>

Un ejemplo complejo en el que analizamos un archivo de texto, buscando una palabra clave en cierto campo de cada lnea sera:

$contador=0; $encontrado=0; $F = fopen ($fichero, "r"); while ( !feof($F) ) { $buffer = fgets($F, 4096); if($buffer){ $partes = explode( "#" , $buffer ); if( $palabra == $partes[4] ) { $encontrado=1; echo "lo he encontrado en la lnea $contador \n" ; } $contador++; } } fclose($F);

Manejo de formularios HTML


El cdigo HTML para crear un formulario muy bsico tiene el siguiente aspecto (un par de campos de tipo texto y un botn para enviar):

<html>

<body>

<form action="procesar.php" method="post"> Nombre: <input type="text" name="nombre" /> Edad: <input type="text" name="edad" /> <input type="submit" /> </form>

</body> </html>

Cuando el usuario rellena el formulario y lo enva, los datos llegan a un script llamado procesar.php, que podra ser como sigue:

<html> <body>

Hola <?php echo $_POST["nombre"]; ?> <br /> Tienes <?php echo $_POST["edad"]; ?> aos.

</body> </html>

Las funciones $_GET y $_POST se explican a continuacin.

La funcin $_GET
La funcin $_GET se usa para recoger valores enviados usando method="get" La informacin enviada es visible por todo el mundo (se muestra en la barra de direcciones del navegador, de la misma forma en que funciona el formulario de

bsqueda de Google). Hay un lmite de 100 caracteres que podemos enviar de esta forma.

<form action="procesar.php" method="get"> Nombre: <input type="text" name="nombre" /> Edad: <input type="text" name="edad" /> <input type="submit" /> </form>

Al enviar el formulario, la URL enviada al servidor es algo similar a:

http://www.servidor.com/procesar.php?nombre=Pepe&edad=27

El script procesar.php usar la funcin $_GET para recoger la informacin enviada:

Hola <?php echo $_GET["nombre"]; ?>. <br /> Tienes <?php echo $_GET["edad"]; ?> aos

El method="get" debemos usarlo en HTML cuando queramos que las variables y sus valores se vean en la URL (si vamos a enviar claves, debemos usar el mtodo POST).

La funcin $_POST
La funcin $_POST se usa para recoger valores enviados usando method="post". La informacin enviada no es visible y no hay lmite de informacin que podemos enviar de esta forma.

<form action="procesar.php" method="post"> Nombre: <input type="text" name="nombre" /> Edad: <input type="text" name="edad" /> <input type="submit" />

</form>

Al enviar el formulario, la URL enviada al servidor es algo similar a:

http://www.servidor.com/procesar.php

El script procesar.php usar la funcin $_POST para recoger la informacin enviada:

Hola <?php echo $_POST["nombre"]; ?>. <br /> Tienes <?php echo $_POST["edad"]; ?> aos

El method="post" debemos usarlo en HTML cuando queramos que las variables y sus valores queden ocultos en el envo de la URL (si vamos a enviar claves) o bien debamos enviar una cantidad de informacin mayor que 100 caracteres.

La funcin $_REQUEST
Disponemos de una funcin que recoge los valores enviados desde un formulario sin necesidad de conocer si fue enviado por el mtodo GET o POST. La funcin $_REQUEST puede recoger valores enviados mediante los mtodos GET, POST o $_COOKIE.

Hola <?php echo $_REQUEST["nombre"]; ?>. <br /> Tienes <?php echo $_REQUEST["edad"]; ?> aos

Manejo de cookies
La principal utilidad de las cookies (galletas) es la de solventar el problema de la falta de estado en la navegacin a travs de las paginas web. Con las cookies almacenamos pequeas porciones de informacin que quedan registradas en el navegador, permitiendo identificar a ste a travs de diferentes pginas de un mismo sitio e incluso durante visitas entre distintos das.

Realmente las cookies no son ms que cadenas de texto que son enviadas desde el servidor al cliente (navegador) y almacenadas en ste; luego el navegador enva estas cookies al servidor permitiendo as la identificacin del cliente en el servidor.

El manejo de cookies en PHP se realiza mediante el uso de la funcin setcookie(). Esta funcin est disponible a partir de la versin 3 de PHP:

int setcookie (string Nombre [, string Valor [, int Expire [, string Path [, string Dominio [, int Secure]]]]])

La funcin define una cookie que es enviada junto con el resto de la informacin de la cabecera. Deben ser enviadas antes de cualquier etiqueta de HTML, por lo tanto deberemos realizar la llamada a estas funciones antes de cualquier etiqueta <HTML> o <HEAD>. Esta es una restriccin de las cookies, no de PHP.

Todos los argumentos excepto el nombre son opcionales: Nombre. Nombre de la cookie. Si creamos una cookie solamente con el nombre, en el cliente se eliminar la que exista con ese nombre. Tambin podemos reemplazar cualquier argumento con una cadena vaca (""). Value. Valor que almacenar la cookie en el cliente. Expire. Es un argumento entero que indica la hora en que se eliminar en el formato de hora que devuelven las funciones UNIX time() y mktime(). Normalmente se usa time()+N segundos de duracin, para especificar la duracin. Path. Subdirectorio donde tiene valor la cookie. Dominio. Dominio donde tiene valor la cookie. Si ponemos como dominio www.servidor.com la cookie no se transmite para servidor.com, mientras que si ponemos servidor.com la cookie se transmite tanto para servidor.com como para www.servidor.com Secure. El argumento secure indica que la cookie solo se transmitir a travs de una conexin segura HTTPS.

En el siguiente ejemplo:

setcookie("usuario", "Luis", time()+3600,"/","servidor.com");

establecemos una cookie de nombre usuario que contiene el valor Luis, que dura 1 hora (3600 segundos) vlida para todo el dominio servidor.com

Ejemplo de uso de cookies


Vamos a ver cmo establecer una cookie y cmo se recupera el valor establecido. Para ello pediremos al usuario que introduzca su nombre, que guardaremos en una cookie. Primero pedimos al usuario que introduzca el valor de su nombre, usamos un formulario que procesar la pgina procesar_cookie.php
<html> <head> <title>Ejemplo de COOKIES (1)</title> </head> <body> <H1>Ejemplo de uso de cookies</H1> Nombre: <FORM ACTION="procesar_cookie.php" METHOD="GET"> <INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

Se establece la cookie ejemusuario con el valor introducido anteriormente, y cuya duracin es una hora:

<?php setcookie("ejemusuario", $_GET['nombre'], time()+3600,"/",""); ?> <html> <head> <title>Ejemplo de COOKIES (2)</title>

</head> <body> <H1>Establecemos la cookie</H1>

Se ha establecido una cookie de nombre <b>ejemusuario</b> con el valor: <b> <? print $_GET['nombre']; ?> </b> que ser vlida durante 1 hora. </body> </html>

Ahora podemos recuperar el valor de la cookie establecida anteriormente:


<html> <head> <title>Ejemplo de COOKIES (3)</title> </head> <body> <H1>Recuperamos el valor de lacookie</H1>

El valor de la cookie de nombre <b>ejemusuario</b> es: <b> <? print $_COOKIE['ejemusuario']; ?> </b> </body> </html>

Variables externas a PHP


Variables de los formularios HTML
Cuando existe un formulario en HTML, inmediatamente despus de ser enviado, dentro del mbito PHP se crean automticamente una variable por cada uno de los objetos que contiene el formulario.

Si se activa la directiva <?php_track_vars?> o con la variable track_vars, todo lo enviado por los mtodos POST y GET estar en las variables $HTTP_POST_VARS y $HTTP_GET_VARS.

Cookies HTML
Hemos visto cmo usar la funcin setcookie() de PHP para asignar Cookies a un ordenador cliente. Esta funcin se debe llamar siempre antes de comenzar a crear la pgina puesto que debe formar parte de la cabecera de HTML. Cualquier Cookie que se enva a un cliente, se convierte dentro de PHP en una variable.

Variables de entorno
Las variables de entorno, tales como $HOME (para entornos Linux) se pueden utilizar desde PHP.

Clases y objetos
Una clase es una coleccin de variables y funciones que trabajan con estas variables. Las variables se definen con var y las funciones con function. Una clase se define usando la siguiente sintaxis:

<?php class Carrito { var $items;

// tems en nuestro carrito de compras

// Agregar $num artculos de $tipo al carrito function agregar_item($tipo, $num) { $this->items[$tipo] += $num; } // Tomar $num artculos de $tipo del carrito

function retirar_item($tipo, $num) { if ($this->items[$tipo] > $num) { $this->items[$tipo] -= $num; return true; } elseif ($this->items[$tipo] == $num) { unset($this->items[$tipo]); return true; } else { return false; } } } ?>

Esto define una clase llamada Carrito que consiste en una matriz asociativa de artculos y dos funciones para agregar y eliminar elementos del carrito.

<?php $carrito = new Carrito; $carrito->agregar_item("ordenador", 1); $otro_carrito = new Carrito; $otro_carrito->agregar_item("disco", 3); ?>

Esto crea los objetos $carrito y $otro_carrito, ambos de la clase Carrito. La funcin agregar_item() del objeto $carrito es llamada para agregar 1 item del artculo ordenador al $carrito. Se agregan 3 items del artculo disco al $otro_carrito. Ambos, $carrito y $otro_carrito, tienen funciones agregar_item(), retirar_item() y una variable items propias. Estas son variables y funciones diferentes.

La herencia en PHP se realiza con extends. Los constructores de cada clase se llaman automticamente por el operador new . El constructor de cada clase debe tomar el mismo nombre de la clase y cuando se trata de una clase derivada, hay que tener cuidado porque slo se llama automticamente al constructor de dicha clase pero no al constructor de la clase padre.

Para ampliar los conocimientos sobre desarrollo orientado a objetos en PHP, podemos visitar la siguiente URL http://www.php-es.com/language.oop5.html

Conexin con bases de datos


Obtener registros de una base de datos utilizando PHP es una de las tareas ms comunes (MySQL tiene muy buen soporte). La tarea se basa en tres pasos fundamentalmente (lo veremos con un ejemplo):

Conectar con la base de datos:

$conexion = mysql_connect("localhost", "usuario", "clave"); mysql_select_db("basededatos", $conexion);

Hacer una consulta SQL:

$seleccion = "SELECT * FROM tabla";

$resultado = mysql_query($seleccion, $conexion) or die(mysql_error()); $numResultados = mysql_num_rows($resultado);

Extraer la informacin:

if ($numResultados> 0) { while ($fila = mysql_fetch_assoc($resultado)) { echo " Id " . $fila['id'] . " <br>"; echo " Nombre " . $fila['nombre'] . "<br>"; } }

Aunque aqu no trataremos este tema en profundidad, dejaremos una serie de enlaces donde ampliarlo:

http://es.php.net/manual/en/book.mysql.php http://geneura.ugr.es/~maribel/php/temario.html#conexionesBD http://blog.unijimpe.net/conectar-php-con-mysql/

Bibliografa y enlaces
http://www.php.net http://www.w3schools.com/PHP/default.asp http://www.php.net/manual/en/install.php http://www.php-es.com/language.oop5.html http://es.php.net/manual/en/book.mysql.php

http://geneura.ugr.es/~maribel/php/temario.html http://blog.unijimpe.net/conectar-php-con-mysql/