cur sode php

82
Curso de PHP PHP es un lenguaje de programación que se interpreta en el servidor HTTP y envía el resultado de su ejecución al navegador del usuario. En este curso aprenderemos desde cero a utilizar PHP para poder crear aplicaciones en el lado del servidor con acceso a bases de datos, manipulación de imagenes... Capítulos Curso de PHP: 1. Introduccion al PHP PHP es lo que llamamos un lenguaje de programacion del lado del servidor, esto significa que el código se interpreta en el... 2. Instalar fácilmente Apache y PHP Es muy duro para los novatos en PHP instalar un servidor al ordenador para comprobar sus códigos. Yo ya hará unos tres meses que... 3. Comentarios Para que en futuras revisiones a tu código por tu parte y sobretodo por parte de otros programadores este código sea inteligible... 4. Variables Una variable es un nombre que contiene unos determinados datos, ya sean de texto o numéricos, y en php tienen la peculiaridad de... 5. Constantes Una constante es como una variable pro con la diferencia que una vez toma un valor este no puede variar durante la ejecucion del... 6. Tipos de datos en PHP PHP es un lenguaje de los denominados de tipado dinámico, lo que significa que una misma variable

Upload: roberto-munoz

Post on 08-Aug-2015

48 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Cur Sode Php

Curso de PHPPHP es un lenguaje de programación que se interpreta en el servidor HTTP y envía el resultado de su ejecución al navegador del usuario.

En este curso aprenderemos desde cero a utilizar PHP para poder crear aplicaciones en el lado del servidor con acceso a bases de datos, manipulación de imagenes...

Capítulos Curso de PHP:

1. Introduccion al PHP PHP es lo que llamamos un lenguaje de programacion del lado del servidor, esto significa que el código se interpreta en el...

2. Instalar fácilmente Apache y PHP Es muy duro para los novatos en PHP instalar un servidor al ordenador para comprobar sus códigos. Yo ya hará unos tres meses que...

3. Comentarios Para que en futuras revisiones a tu código por tu parte y sobretodo por parte de otros programadores este código sea inteligible...

4. Variables Una variable es un nombre que contiene unos determinados datos, ya sean de texto o numéricos, y en php tienen la peculiaridad de...

5. Constantes Una constante es como una variable pro con la diferencia que una vez toma un valor este no puede variar durante la ejecucion del...

6. Tipos de datos en PHP PHP es un lenguaje de los denominados de tipado dinámico, lo que significa que una misma variable puede tener tipos ( numero,...

7. Vectores en PHP Los vectores o array ( a veces mal llamados arreglos ) son listas ordenadas de elementos. Para definir un vector en PHP...

8. Operadores Los operadores son expresiones que nos permiten manipular los datos que les pasamos, cada uno de los datos que se le pasa a un...

8.1. Operadores de Aritmética Los operadores de aritmética són los operadores básicos para el trabajo con números, nos permiten sumar dos valores,...

8.2. Operadores de Asignación Los operadores de asignación, són aquellos que nos permiten modificar

Page 2: Cur Sode Php

el valor de una variable, el operador de asignación...8.3. Operadores de Comparación 

Los operadores de comparación son operadores en su mayoría binarios que nos permiten comparar variables devolviendo un valor...

8.4. Operadores de Control de Errores Para evitar que se muestre en página un determinado error que se puede producir eventualmente en una linea PHP dispone del...

8.5. Operadores de Incremento Los operadores de incremento (++) permiten aumentar en una unidad el valor de una variable numérica, los de decremento (--)...

8.6. Operadores de Logica Los operadores de Lógica nos permiten crear expresiones mas complejas para evaluar nuestras estructuras de control,...

8.7. Operadores de Cadena En esta categoría encontramos el operador binario de concatenacion (.), que se encarga de unir dos cadenas dadas la una a...

9. Estructuras de control Porque los scripts PHP no son lineales, debemos poder controlar la ejecucion de una acción o de un determinado bloque de...

9.1. Condicional if La estructura if nos permite ejecutar un bloque de acciones si se cumple una determinada condicion, de lo contrario nos...

9.2. Bucle while Esta instruccion nos permite efectuar un bloque de acciones mientras se cumpla una determinada condicion, cuando deje de...

9.3. Bucle do while El bucle do while es en su esencia igual al bucle while con la diferéncia de que ejecuta las acciones antes de comprobar la...

9.4. Bucle for El bucle for nos permite ejecutar un determinado bloque de acciones un número determinado de veces, a esta estructura le...

9.5. Bucle foreach El bucle foreach nos permite iterar para cada elemento de un vector, su sintaxi es sencilla, solo hay que indicar el...

9.6. El ciclo switch En muchas ocasiones, programando en PHP, nos encontramos que queremos hacer una u otra acción dependiendo del valor de una...

10. Las funciones En toda aplicacion mas o menos compleja hay bloques de acciones que realizamos mas de una vez y PHP no es una excepcion, para que...

Page 3: Cur Sode Php

11. Procesamiento de formularios Al enviar un formulario HTML, los datos són enviados al servidor Web y este es capaz de procesarlos y realizar un seguido de...

12. Cookies en PHP Antes de leer este artículo recomiendo leer el artículo cookies en JavaScript pues aquí no explicare que es una cookie, sólo como...

13. Envio de Emails En este articulo aprenderemos a enviar emails (correo electrónico) de una forma compleja, gracias a mis experiencias. Antes...

14. Sesiones PHP Utilizaremos sesiones para almacenar una serie de variables en el servidor relacionándolas ( grácias a una variable pasada por...

15. PHP orientado a objetos Cuando a principios de los años 80 se empezó a experimentar la Programacion Orientada a Objetos (POO) esta ha ido suplantando la...

16. Image GD, descripción y ejemplos A menudo, cuando estamos programando una aplicación, contamos con una gran cantidad de datos interesantes para el usuario pero...

16.1. Creación de una imagen con GD El primer paso para empezar a trabajar con gráficos y image GD, es la creación de una imagen, que puede ser en blanco (para...

16.2. Uso del color con GD La utilización de colores en GD es algo mas compleja que en HTML aunque ambos utilizan el modelo RGB. Crear un color...

16.3. Dibujo de líneas con GD En este tutorial de 3 páginas veremos cómo podemos dibujar todo tipo de líneas (normales, gruesas, discontinuas, punteadas......

16.4. Dibujo de rectángulos con GD Con GD, podemos dibujar rectángulos y rectángulos coloreados facilmente utilizando las funciones que explicaremos en este...

16.5. Dibujo de arcos y elipses con GD Una elipse es una sección cónica, una especie de huevo, y un caso particular de elipse es el círculo, por otra parte, un arco...

Introduccion al PHPPHP es lo que llamamos un lenguaje de programacion del lado del servidor, esto significa que el código se interpreta en el servidor y no en el ordenador

del usuario.

Page 4: Cur Sode Php

El código php interpretado, produce un resultado que es enviado al navegador del visitante en forma de HTML, imagen, documento .doc... de ninguna

manera el navegador del visitante accede al código fuente en php sino solo a su resultado en HTML.

El navegador pide un documento al servidor, en el caso que este documento sea un archivo PHP, el archivo es interpretado y se envía su resultado al

navegador.

Vamos a ver un ejemplo sencillo de código escrito en php para que nos sea mas fácil de comprender:

 000 001 002 003 004 005 006 007 008 009 010 011 

<html>  <head>    <title>Prueba</title>  </head>  <body>  <? $texto = "Hola mundo";echo $texto;?>  </body></html>

  Maximizar      Seleccionar      XML,PHP

 Este código producirá el siguiente resultado que es lo que se enviará al navegador del visitante:

Page 5: Cur Sode Php

 000 001 002 003 004 005 006 007 

<html>  <head>    <title>Prueba</title>  </head>  <body>  Hola mundo  </body></html>

  Maximizar      Seleccionar      XML

 Vemos que el código php esta delimitado por las etiquetas <? y ?>, aunque tambien puede usarse <?php en lugar de <?.

Otra característica del php es que las variables se identifican con el signo del dolar ($) y que cada instruccion debe finalizarse con un punto y coma (;).

Instalar fácilmente Apache y PHPPara poder empezar a aprender a programar en PHP, debemos tener un servidor web con PHP instalado, y lo más cómodo para trabajar es que lo tengamos en nuestro propio ordenador. Las herramientas que necesitamos, son un servidor web ( en el curso se utiliza Apache pero el IIS de Windows también puede servir ), el propio PHP y posiblemente el motor de bases de datos MySQL.

Todo esto se puede instalar por separado, o se puede hacer con paquetes que instalan y configuran PHP, Apache y MySQL. Aunque en este capítulo enseñaré a instalar el XAMPP, existen otros como el WAMP o el easyPHP.

Tabla de contenido

· El XAMPP · Otros paquetes.

El XAMPP

El XAMPP es el único paquete de los que hemos comentado en este capítulo disponible para multiplataforma (Windows, Mac OS X, GNU/Linux y Solaris). Incluye, entre otros, aplicaciones como el Apache, el MySQL, el intérprete PHP, el OpenSSL, el phpMyAdmin, el Mercury Mail Transport System y el FileZilla FTP Server.

Page 6: Cur Sode Php

El primer que hacemos es descargarnos el instalador. Os explicaré la instalación para WINDOWS. Nos damos cuenta de que la versión para WINDOWS supera los 30 MB, así que tened paciencia los que no dispongan de conexión rápida a Internet o bajaos el WAMP Server o el EasyPHP (al final del artículo).

Una vez bajado el ejecutable, lo abrimos y vemos que nos pregunta por el idioma en que queremos realizar la instalación (hay 11, uno de ellos el español).

Después de esto, nos dan la bienvenida al asistente de instalación i, al presionar sobre Siguiente, nos preguntan el directorio sobre el cual queremos realizar la instalación.

El asistente nos da la bienvenida.

Page 7: Cur Sode Php

Especificamos el directorio de instalación.

Si la instalación se produce sin problemas, presionamos sobre Acabar y el XAMPP ya estará listo.

Proceso de instalación.

Page 8: Cur Sode Php

La instalación se ha finalizado.

Si lo ejecutas, podrás visualizar el XAMPP Control Panel Application, donde podrás poner en funcionamiento el Apache, el MySQL, el FileZilla y el Mercury.

XAMPP Control Panel.

Page 9: Cur Sode Php

Tan solo por tener activado el Apache, puedes acceder al http://localhost, donde podrás ver si se ha instalado correctamente el servidor local.

Localhost por defecto de XAMPP.

Aunque lo puedes eliminar, el localhost por defecto de XAMPP puede ser muy útil: des de allí puedes acceder a todas las herramientas, y además puedes ver cuál es el estado de este y sus agujeros de seguridad.

Otros paquetes.

Además del XAMPP, hay otros paquetes de instalación del servidor local. No os quedéis tan solo con esto, probar ne tantos como podáis. Aquí os dejo dos:

EasyPHP

EasyPHP contiene el mínimo para poder trabajar bien: un servidor web (Apache), el intérprete PHP y el MySQL. La última versión está disponible en español (y en 27 lenguas más) y tan solo ocupa 7 MB la aplicación y 144 KB todo el conjunto de idiomas. Aún así, la última versión es muy antiguas y les versiones del Apache y el PHP están muy desfasadas (Apache 1.x y PHP4), para el que si te quieres introducir en programación orientada a objectos te recomiendo seguir leyendo.

WAMP Server

Page 10: Cur Sode Php

WAMP es el acrónimo de Windows Apache MySQL PHP. Es bastante más completo, ya que incorpora el PHP5, el Apache 2 y el MySQL 5. No dispone de más idiomas que no sean el inglés o el francés y ocupa unos 17 MB.

ComentariosPara que en futuras revisiones a tu código por tu parte y sobretodo por parte de otros programadores este código sea inteligible para la mente humana, es un buen costumbre comentar lo que se esta haciendo en PHP pero en palabras.

De esta manera el código será mucho mas sencillo de comprender y a su vez de modificar, corregir, ampliar...

Los comentarios que soporta PHP són los de C, C++ y los del shell de Unix, asi podemos usar // y /* */ para comentarios y comentarios multilinea respectivamente como haríamos en C:  

000 001 002 003 004 005 006 

<?echo 'Esto se ve';// esto no se veecho  'esto tambien se ve';/* esto tampoco   se ve */?>

  Maximizar      Seleccionar      PHP

 O tambien podemos usar # como en los comentarios del shell de Unix: 

000 001 002 003 

<?# esto no se veecho 'pero esto si';?>

  Maximizar      Seleccionar      PHP

 Tendremos cuidado con no poner un comentario multilínea en el interior del otro:  

000 001 002 

<?/* /* No hacer nunca esto */ */?>

  Maximizar      Seleccionar      PHP

 Como veis, PHP interpreta como comentario desde el primer /* al primer */ sin tener en cuenta que hay otro */, esto nos producirá un error asi que habrá que

tener cuidado.

Page 11: Cur Sode Php

VariablesUna variable es un nombre que contiene unos determinados datos, ya sean de texto o numéricos, y en php tienen la peculiaridad de ir precedidas por el signo del dolar ($).

En PHP no es necesario declarar las variables antes de usarlas y pueden contener texto y números indiferentemente ( ya hablaremos de esto más adelante ). Vamos a ver un ejemplo de uso de variables: 

000 001 002 003 004 005 

<?$miVariable = 'Hola ';$miVariable2 = 33;// Imprimimos Hola 33echo $miVariable.$miVariable2;?>

  Maximizar      Seleccionar      PHP

 Como vemos, asignamos valor a una variable con el operador de igualdad (=), y concatenamos con el operador punto (.).

Existe la posibilidad de trabajar con una variable de nombre variable, es decir, podemos acceder a una variable que tenga el nombre que nos viene indicado por el contenido de otra variable, usando ($$): 

000 001 002 003 004 005 

<?$nombreVariable = "miVariable";$$nombreVariable = "Hola";// Imprimimos Holaecho $miVariable;?>

  Maximizar      Seleccionar      PHP

 Para que una variable sea accesible desde cualquier parte de nuestro script php, la definiremos cómo global de la siguiente manera:  

000 001 002 

<?global $miVariableGlobal = 'Hola';?>

  Maximizar      Seleccionar      PHP

 Hay un seguido de variables que ya vienen definidas en nuestros scripts en php por defecto, estas son las variables predefinidas.

Variables predefinidas

Page 12: Cur Sode Php

El PHP tiene muchas variables predefinidas, pero hay que tener en cuenta que todas estas variables no suelen estar activas en todos los servidores, para saber de que variables disponemos, podemos usar la función de info de PHP: 

000 001 002 

<?phpinfo();?>

  Maximizar      Seleccionar      PHP

 Estas són las variables que usaremos más comunmente y que probablemente nuestro servidor tendra correctamente habilitadas: 1 $SERVER_NAMECuando imprimimos a nuestros servido la variable $SERVER_NAME nos devolverá normalmente el nombre del server si estamos trabajando en local nos saldria http://localhost/ o el nombre que le hayamos puesto a la maquina y si tenemos la web alojada por ejemplo en este caso nos saldría www.programacionweb.net

2 $SERVER_SOFTWAREEn este caso nos saldria el servidor que andamos usando si usamos el IIS o el apache tal version.

3 $DOCUMENT_ROOTEn la variable DOCUMENT_ROOT lo que nos pasaria cuando imprimimos en el navegador nos diria la ruta del fichero exacta , tambien pensando depende de la configuracion delservidor que no dara su ruta, no penseis que nos dará www.nuestraweb.com/nuestroarchivo.php ke este no es caso 

4 $HTTP_REFERERHaciendo referers queremos decir que nos dira de donde procede la persona que visita nuestra web, es decir , de donde viene.

5 $HTTP_USER_AGENTComo muy bien dice la siguiente variable es USER_AGENT y que quiere decir esto? Pues que nos dira en que navegador estamos utilizando, Netscape,mozilla,Internet Explorer,etc...

6 $REMOTE_ADDREsta variable nos puede ser muy util por un motivo muy concreto, ¿Cuantas veces hemos pensado quiero saber la IP del visitante que nos esta visitando?Pues esta misma variable es la que nos ayuda a esto

7 $SERVER_ADMINSimplemente nos devolverá el email de configuracion del servidor donde esta

Page 13: Cur Sode Php

alojado el script PHP.

8 $REQUEST_METHODSi imprimimos esta variable nos devolvera el tipo de petición que usamos para acceder a la pagina si fue con POST o con GET 

9 $HTTP_ACCEPTLos tipos de archivos que el visitante puede recibir de este servidor con el navegador actual

10 $REMOTE_PORTComo ya habiamos comentado la variable de $REMOTE_ADDR no ibamos a dejar aparte el puerto que se esta utilizando para comunicarse con el servidor web

NOTA: No nombré todas las variables predefinidas, todo hay que decirlo esto es un breve resumen hay muchas mas

ConstantesUna constante es como una variable pero con la diferencia que una vez toma un valor este no puede variar durante la ejecucion del script, otra particularidad de las constantes es que son globales, por lo que se pueden leer desde el interior de una funcion sin tener que pasarlas como parametro.

Al contrario que las variables, las constantes se expresan sin signo del dolar ($), y se tienen que definir usando la funcion define:

 000 001 002 003 

<?define ('miConstante','valor de mi constante');echo miConstante;?>

  Maximizar      Seleccionar      PHP

 Existe otra funcion, llamada defined que nos permite saber si se ha declarado una constante determinada, lo haremos de la siguiente manera: 

000 001 002 003 004 

<?$definida = defined("miVariable");// Mostrara 0 si existe la variable y 1 si no existeecho $definida;?>

  Maximizar      Seleccionar      PHP

Page 14: Cur Sode Php

 En algunos casos no es posible acceder al valor de una constante directamente por su nombre, pues este nombre puede coincidir con el de una funcion y el resultado producido no sería el esperado, en ese caso usaremos la funcion constant para leer el valor de dicha constante:

 000 001 002 003 

<?define ('echo','valor de mi constante');echo constant('echo');?>

  Maximizar      Seleccionar      PHP

 En este ejemplo vemos como la constante tiene un nombre polémico, que coincide con el de una funcion (echo) y para diferenciar el primer echo del segundo hemos usado la funcion constant.

Existen muchas constantes predefinidas en PHP, entre las cuales encontramos las llamadas constantes mágicas, estas son:

Constantes mágicasExisten unas constantes llamadas magicas que son accesibles para cualquier script PHP, estas nos proporcionan información sobre el script que depende del lugar en el que las usemos:__FILE__ - Contiene el nombre y la ruta del archivo que se está ejecutando__LINE__ - Contiene la línea que se está ejecutando en ese momento exacto del fichero actual__FUNCTION__ - Añadida en la versión 4.3 de PHP, contiene el nombre de la función que se está ejecutando actualmente__CLASS__ - Añadida tambien en la versión 4.3, contiene el nombre de la clase que se ejecuta actualmente__METHOD__ - Añadida el la versión 5, contiene el nombre del método actual

Veamos un ejemplo de uso de estas constantes:[código]<?echo "Ejecutando la línea ".__LINE__;?>[/código]Nótese que estas constantes tienen dos barras de subrayado delante y dos detras del nombre cada una.

Tipos de datos en PHPPHP es un lenguaje de los denominados de tipo dinámico, lo que significa que una misma variable puede tener tipos ( numero, texto, vector... ) diferentes en distintos momentos. Por esta razón, no soporta la definición de tipos en la

Page 15: Cur Sode Php

declaración de variables sino que el tipo de la variable viene determinado por el contexto en el que se encuentra, veamos un ejemplo: 

000 001 002 003 004 005 006 007 008 009 

<?php// La variable $var1 es un numero ( entero )$var1 = 3;// La variable $var2 es un texto ( cadena de caracteres )$var2 = "9 años";// Si juntamos las variables $var1 y $var2, obtenemos un texto  

$var3 = $var1 . $var2; // "39 años"// Si en cambio las sumamos obtendremos un número$var3 = $var1 + $var2; // 12 ( 3 + 9)?>

  Maximizar      Seleccionar      PHP

 Podemos forzar un tipo determinado, con la función settype o ente paréntesis delante de la variable uno de los siguientes tipos de datos:ArribaTabla de contenido

· boolean - Lógico · integer - Entero · float - Decimal · string - Cadena de caracteres · null - vacío · array - vector · object – Objeto

boolean - Lógico

Puede contener 2 valores True o False. Al usarlo cómo entero su valor puede ser 1 ( True ) o 0 ( False ).

Un ejemplo típico de lógico es el resultado de una comparación: 

000 001 002 

<?php$var1= 1 != 2 ; // $var1 es true?>

  Maximizar      Seleccionar      PHP

 

integer - Entero

Puede contener enteros ( sin decimales ) positivos y negativos, se pueden escribir en notación octal, decimal y hexadécimal:

Page 16: Cur Sode Php

 000 001 002 003 004 

<?php$var1 = 027; // Notación octal ( 23 en decimal )$var1 = 23; // Notación decimal$var1 = 0x17; // Notación hexadecimal ( 23 en decimal )?>

  Maximizar      Seleccionar      PHP

 Si lo utilizamos cómo lógico su valor es False si es 0 o True en cualquier otro caso.

float - Decimal

En versiones anteriores a la 4.2.0 de PHP se les llamaba double, contienen números decimales positivos o negativos. Si lo usamos cómo entero, su valor se redondea a la baja ( truncamiento ).

string - Cadena de caracteres

Es una lista de caracteres ( letras, cifras, signos... ) en un orden determinado, por ejemplo "hola mundo". Los representamos delimitados con comillas dobles o simples. No podemos utilizar el mismo tipo de comillas en el interior de una cadena que para delimitarla, en este caso le tendremos que poner un \ delante para diferenciarla del final de la cadena, y si se puede confundir, \\ en lugar de \: 

000 001 002 003 004 005 006 007 

<?php // Así si$var1 = "pongo \ delante de las \" pero no de las ' ";$var1 = 'pongo \ delante de las \' pero no de las " ';$var1 = "pongo \\";// Así no$var1 = "pongo " donde quiero"; // Mal ! "$var1 = "pongo \"; // Mal ! \?>

  Maximizar      Seleccionar      PHP

 Las cadenas con comillas dobles, a parte de \" y \' tienen otros caracteres especiales:\n - Salto de línea (en el código, no en la presentación de la pág.)\r - Retorno de carro (Enter)\t - Tabulador\$ - DólarLa existencia de un carácter especial \$ para el dólar, es porque en el interior de comillas dobles podemos usar variables. Si vamos a acceder a elementos

Page 17: Cur Sode Php

de un vector, lo agruparemos con { y } detrás del $: 

000 001 002 003 004 005 006 007 

<?php // Así si$var1 = "php";$var2 = Array ( "php","html" ); // [0]=>php, [1]=>html$var3 = "aprendo $var1"; // aprendo php$var3 = "aprendo {$var2[0]}"; // aprendo php// Así no$var3 = "aprendo $var2[0]"; // aprendo Array?>

  Maximizar      Seleccionar      PHP

 Si mezclamos una cadena con números ( enteros o decimales ) se utilizará cómo número hasta el primer carácter incorrecto ( ver primer ejemplo del capítulo ). Si lo mezclamos con lógicos será False cuando la cadena está vacía.

null - vacío

No tiene valor, se comporta como cadena vacía, cero o false;

array - vector

Los veremos en profundidad en el próximo capítulo vectores en PHP.

object - Objeto

Los veremos más adelante en el capítulo PHP orientado a objetos

Vectores en PHPLos vectores o array ( a veces mal llamados arreglos ) son listas ordenadas de elementos. Para definir un vector en PHP utilizamos la función array: 

000 001 002 

<?php$vector = array ( "elemento 1", "elemento 2" );?>

  Maximizar      Seleccionar      PHP

 Una vez definido el vector, podemos acceder a sus elementos, sus elementos estarán identificados por un número ( empezando por 0 ) o una clave que se puede definir así: 

000 001 002 

<?php$vector = array ( "clave 1" => "elemento 1", "clave 2" => "elemento 2" )

Page 18: Cur Sode Php

;?>

  Maximizar      Seleccionar      PHP

 Para acceder a un elemento usaremos [ y ] con su clave ( "clave 1" o 0 ): 

000 001 002 003 

<?phpecho $vector[0];// elemento 1echo $vector['clave 1'];// elemento 1?>

  Maximizar      Seleccionar      PHP

 Podemos borrar un elemento de una variable con la función unset. Si usamos una clave que no existe, estaremos creando un nuevo elemento ( con la clave que hayamos usado ), si no ponemos clave entre los [], crearemos un elemento nuevo al final del vector:  

000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 

<?php$vector  = array ( "elemento 1", "elemento 2" );// Añadimos "elemento 3" al final$vector[] = "elemento 3";// Añadimos un elemento con clave "clave 3"$vector['clave 3'] = "elemento 4";// Cambiamos el texto al elemento 3 ( 2 contando el 0 )$vector[2] = "elemento N";// Borramos el 'clave 3';unset ( $vector['clave 3'] );print_r ($vector);/* Array(    [0] => elemento 1    [1] => elemento 2    [2] => elemento N) */ ?>

  Maximizar      Seleccionar      PHP

 El resultado de este ejemplo está disponible a continuación:

Array ( [0] => elemento 1 [1] => elemento 2 [2] => elemento 3 [3] => elemento N )

OperadoresLos operadores son expresiones que nos permiten manipular los datos que les pasamos, cada uno de los datos que se le pasa a un operador se llama operando, y según el número de operandos de que disponga un operador estaremos hablando de un operador unario (un operando), binario (dos operandos), ternario...

Page 19: Cur Sode Php

Los operadores no los utilizamos aisladamente, sino que solemos utilizar mas de uno en una misma expresión compleja, en este caso tendremos que tener en cuenta las normas de preferencia para no encontrarnos con resultados no deseados.

Tabla de contenido

· Normas de preferencia · Tipos de operadores

Normas de preferencia

Las operaciones no se realizarán de izquierda a derecha sino que se realizarán siguiendo un orden de preferencia que PHP asigna a cada operando, estas son las preferencias de PHP en cuanto a los operadores:new[! ~ ++ -- (int) (float) (string) (array) (object) @* / %+ - .<< >>< <= > >=== != === !==&^|&&||? := += -= *= /= .= %= &= |= ^= <<= >>= printandxoror,Para cambiar el orden en que se realizan las operaciones utilizaremos los paréntesis (), consiguiendo que se realicen primero las operaciones del interior del paréntesis y, acto seguido, el resto de operaciones siguiendo en cada caso el mismo orden de preferencia anteriormente citado:  

000 001 002 003 004 

<?php// el operador de multiplicación es l signo asterisco ( * )$a = 2 + 4 * 2; // El resultado es 10$a = (2+4) * 2; // el resultado es 12?>

Page 20: Cur Sode Php

  Maximizar      Seleccionar      PHP

 Tipos de operadores

PHP dispone de una gran cantidad de operadores que podríamos organizar en las siguientes categorías:Operadores de Aritmética Operadores de Asignación Operadores Bit a Bit Operadores de Comparación Operadores de Control de Errores Operadores de ejecución Operadores de Incremento Operadores de Lógica Operadores de Cadena Operadores de Matrices Operadores de Tipo

Estos operadores en su mayor parte són para trabajar con valores numéricos, a excepción de los 4 últimos de la lista anterior, y se explicaran uno a uno en el curso de operadores PH

Operadores de AritméticaLos operadores de aritmética són los operadores básicos para el trabajo con números, nos permiten sumar dos valores, restarlos, dividirlos... Se trata de operadores binarios en todos los casos ya que requieren dos operandos para funcionar correctamente.

Los operadores aritméticos existentes son los siguientes:Adición (+) - Devuelve la suma de los dos operandos que recibe el operador.

000 001 002 

<?$a = 1 + 2; // $a toma valor 3?>

  Maximizar      Seleccionar      PHP

Substracción (-) - Devuelve la diferencia entre el primer y el segundo operando.Multiplicación (*) - Devuelve el producto de los operandos.División (/) - Devuelve el cociente en valor flotante de los operandos.Módulo (%) - Devuelve el resto de dividir el primer operando entre el segundo.Este operador es muy útil para saber si un número es múltiple de otro

000 001 002 

<?$a = 3 % 2; // $a toma valor 1?>

Page 21: Cur Sode Php

  Maximizar      Seleccionar      PHP

.

Al tratar de operar matemáticamente con cadenas u otros tipos de datos, PHP intentará transformar a enteros y luego realizará las operaciones deseadas.

Operadores de AsignaciónLos operadores de asignación, són aquellos que nos permiten modificar el valor de una variable, el operador de asignación básico es el 'es igual a' (=), que da el valor que lo sigue a la variable que lo precede: 

000 001 002 

<?$miVariable = 'suValor';?>

  Maximizar      Seleccionar      PHP

 Asimismo, combinando los operadores de aritmética, bit a bit o de cadenas con el operador de asignacion, conseguimos los 'operadores combinados', con los que podemos realizar una operacion de asignacion conjuntamente con otra operacion:

 000 001 002 003 004 

<?$a = 1;$a += 1; // Sumamos y asignamos$a = $a + 1; // Operacion equivalente?>

  Maximizar      Seleccionar      PHP

 En este ejemplo vemos que podemos poner el operador de suma seguido del de asignacion para incrementar el valor de la variable, asimismo podriamos usar el operador de concatenacion (.=), el de multiplicacion (*=)... consiguiendo efectos similares.

Operadores de ComparaciónLos operadores de comparación son operadores en su mayoría binarios que nos permiten comparar variables devolviendo un valor booleano a 1 (TRUE) si se cumple la condición que expresan y a 0 (FALSE) en el caso contrario.

Los operadores binarios de comparación son:

Page 22: Cur Sode Php

Igual (==) - Devuelve 1 si los operandos son iguales aunque sean de tipo distinto.Idéntico (===) - Devuelve 1 si los operandos son iguales y del mismo tipo.Diferente (!= o <>) - Devuelve 1 si los operandos són distintos.No idénticos (!==) - Devuelve 1 si son distintos o de tipo diferente.Menor que (<) - Devuelve 1 si el primer operando es mas pequeño que el segundo.Mayor que (>) - Devuelve 1 si el primer operando es mas grande que el segundo.Menor o igual que (<=) - Devuelve 1 si el primer operando es mas pequeño o igual que el segundo.Mayor o igual que (>=) - Devuelve 1 si el primer operando es mas grande o igual que el segundo.

Estos operadores se usan mayormente como condición para las estructuras de control.

El operador de comparación ternario es el '?:', este operador, evalúa una condición, que puede ser una operación de comparación binaria y si se cumple ejecuta el segundo operando, de lo contrario ejecuta el tercero:

 000 001 002 

<?echo ($variable == 1) ? 'Vale 1' : 'Vale mas de uno';?>

  Maximizar      Seleccionar      PHP

 Este ejemplo imprime 'Vale 1' si se cumple la expresion '$variable == 1' de lo contrario imprime 'Vale mas de uno'.

Operadores de Control de ErroresPara evitar que se muestre en página un determinado error que se puede producir eventualmente en una linea PHP dispone del operador de control de errores.

Este operador que se representa con el signo arroba (@), permite evitar que se imprima en la página de resultado un error prodcido por la ejecución del código PHP en una línea determinada: 

000 001 002 003 

<?phpecho 'Hola mundo';@ funcionquenoexiste (); // Esto debería producir un error?> 

  Maximizar      Seleccionar      PHP

Page 23: Cur Sode Php

 Encontrarás mas informacion sobre este operador y otros métodos para evitar errores eneste artículo del usuario include.

Operadores de IncrementoLos operadores de incremento (++) permiten aumentar en una unidad el valor de una variable numérica, los de decremento (--) por lo contrario disminuyen la misma variable en una unidad.

Estos operadores son operadores unarios por lo que solo reciben un operando al que incrementan o decrementan según el operador.

Estos operadores pueden ponerse delante del operando, en ese caso la operación devolverá el valor una vez operado, o después, caso en el que la operación devolverá el valor antes de operar: 

000 001 002 003 004 

<?$variable = 2;echo $variable++; // Imprime 2 y luego incrementaecho ++$variable; // incrementa y luego imprime 4?>

  Maximizar      Seleccionar      PHP

 Este tipo de operador se utiliza mucho para el tercer parámetro de un bucle for.

Operadores de LogicaLos operadores de Lógica nos permiten crear expresiones mas complejas para evaluar nuestras estructuras de control, permitiendonos enlazar varias operaciones de comparación con los diferentes operadores booleanos.

Estos operadores són mayoritariamente binarios, por lo que reciben 2 operandos, dependiendo de estos operandos (de valor 0 o 1) devolvera 0 (FALSE) o 1 (TRUE), los operadores lógicos binarios són:Y (&& o and) - Devuelve 1 si ambos operandos són 1O (|| o or) - Devuelve 1 si algún operando es 1O exclusivo (xor) - Devuelve 1 si solo 1 operando es 1Veamos un ejemplo para ver como funcionan estos operadores: 

000 001 002 

<?echo ((1 == 1)&&(2 != 2)); // Devuelve 0?>

  Maximizar      Seleccionar      PHP

Page 24: Cur Sode Php

 Existe otro operador lógico, en este caso unario, que es el operador No (!), este operador delante de un valor binario, devuelve el valor contrario (0 si es 1 y 1 si es 0):

 000 001 002 

<?echo !((1 == 1)&&(2 != 2)); // Devuelve 1?>

  Maximizar      Seleccionar      PHP

 En esta expresion primero evaluaremos los parentesis, el primero vale 1 porque se cumple, el segundo 0 porque no se cumple, como usamos Y (&&) y no son 1 los dos vale 0, entonces lo negamos y vale 1

Operadores de CadenaEn esta categoría encontramos el operador binario de concatenacion (.), que se encarga de unir dos cadenas dadas la una a continuacion de la otra: 

000 001 002 003 

<?$texto = 'hola ' . 'mundo';echo $texto;?>

  Maximizar      Seleccionar      PHP

 A su vez, existe un operador que hemos incluido entre los operadores de asignacion, que es el operador de asignación sobre concatenación (.=), este operador concatena a una variable un valor dado de la siguiente manera: 

000 001 002 003 004 

<?$texto = 'hola ';$texto .= 'mundo';echo $texto;?>

  Maximizar      Seleccionar      PHP

 Este operador nos será de gran utilidad para almacenar una gran cantidad de datos en una misma variable de manera limpia, veamos un ejemplo:

 000 001 002 003 

<?$html  = "<html>\n";$html .= "<head>\n";

Page 25: Cur Sode Php

004 005 006 007 008 009 010 011 

$html .= "<title>Mi página</title>\n";$html .= "</head>\n";$html .= "<body>\n";$html .= "Este es el contenido de mi\n";$html .= "preciosa página\n";$html .= "</body>\n";$html .= "</html>\n";echo $html;?>

  Maximizar      Seleccionar      PHP

 Como veis, hemos almacenado una página HTML en la variable $html de forma limpia y bien presentada para finalmente imprimir el resultado.

Estructuras de controlPorque los scripts PHP no son lineales, debemos poder controlar la ejecucion de una acción o de un determinado bloque de acciones, para hacer esto, PHP dispone de lo que se llama estructuras de control, que nos permiten ejecutar o no, una o mas veces un determinado bloque de acciones.

Estas estructuras són:ifwhiledo..whileforforeachswitch

Y se explicarán una a una en el curso de estructuras de control

Condicional ifLa estructura if nos permite ejecutar un bloque de acciones si se cumple una determinada condición, de lo contrario nos permite ejecutar otro bloque de acciones identificado por la sentencia else, si el resultado de la condición es distinto de 0, se ejecutarán las acciones del if, de lo contrario las del else: 

000 001 002 003 004 005 006 007 

<?if($var1 == 12){   echo 'La variable vale 12';}else {   echo 'La variable tiene otro valor';}?>

Page 26: Cur Sode Php

  Maximizar      Seleccionar      PHP

 La condición, se escribe entre paréntesis a continuación de la palabra if, y esta formada por operaciones PHP, sobre todo por operaciones lógicas y de comparación.

Hay otra sentencia que usamos a menudo para unir más de un condicional if, es la sentencia elseif, ésta nos permite dar otra condición por si no se ha cumplido la primera, después de elseif podemos volver a usar else con normalidad:

 000 001 002 003 004 005 006 007 008 009 010 

<?if($var1 == 12){   echo 'La variable vale 12';}elseif($var1 == 3){   echo 'La variable vale 3';}else {   echo 'La variable tiene otro valor';}?>

  Maximizar      Seleccionar      PHP

 En este caso, si var1 es distinto de 12, evaluará si vale 3, si es así mostrará el segundo mensaje, si no el tercero.

 Bucle whileEsta instruccion nos permite efectuar un bloque de acciones mientras se cumpla una determinada condicion, cuando deje de cumplirse, se continuará ejecutando el resto del código PHP, la condicion se cumple mientras no de resultado 0 y esta formada poroperaciones PHP, sobretodo por operaciones lógicas y de comparacion. 

000 001 002 003 004 005 006 

<?$var1 = 0;while($var1 < 10){  echo "\$var1 = $var1<br>";  $var1++; // Incrementamos la variable}?>

 Maximizar     Seleccionar     PHP

 Hay que tener cuidado con este tipo de bucle, en el interior del bloque de

Page 27: Cur Sode Php

acciones siempre se debe modificar algun parametro de la condicion para que esta acabe cumpliendose, de lo contrario crearemos un bucle infinito.

Bucle do whileEl bucle do while es en su esencia igual al bucle while con la diferéncia de que ejecuta las acciones antes de comprobar la condicion, consiguiendo que se ejecuten las acciones una vez si la condicion retorna 0 o FALSE, así, este bucle se ejecutará siempre una vez mas que while si tienen la misma condicion: 

000 001 002 003 004 005 006 

<?$var1 = 0;do {   echo "\$var1 = $var1<br>";   $var1 ++;} while ($var1 <= 10);?>

  Maximizar      Seleccionar      PHP

 Si ejecutais este ejemplo, veréis cómo imprime:

$var1 = 0$var1 = 1$var1 = 2$var1 = 3$var1 = 4$var1 = 5$var1 = 6$var1 = 7$var1 = 8$var1 = 9$var1 = 10

Aunque en el último caso no se haya cumplido la condicion de ya que $var1 no seria mas pequeño que 10.

Bucle forEl bucle for nos permite ejecutar un determinado bloque de acciones un número determinado de veces, a esta estructura le pasaremos tres parámetros que separaremos por punto y coma (;) y que serán:accion inicial - Inicializa la variable de control del buclecondicion - Se evalua en cada iteracion, cuando devuelve 0 o FALSE se

Page 28: Cur Sode Php

continua ejecutando el código de después del foraccion - Se ejecuta en cada bucle y debe modificar la variable de la condicionVamos a ver un ejemplo para que nos quede todo claro, ya que el concepto puede costar un poco de comprender. 

000 001 002 003 004 

<?for ($var1 = 0; $var1 < 10; $var1++){   echo "\$var1 = $var1";}?>

  Maximizar      Seleccionar      PHP

 Antes de empezar el bucle se ejecutará $var1 = 0, entonces se ejecutará el

interior del bucle y $var1++ hasta que se cumpla $var1 < 10. Bucle foreach

El bucle foreach nos permite iterar para cada elemento de un vector, su sintaxis es sencilla, solo hay que indicar el identificador de la matriz, la expresion as y seguidamente la variable que identificará el valor del elemento: 

000 001 002 003 004 005 

<?$vector = array("uno", "dos", "tres");foreach ($vector as $valor) {   echo "Valor: $valor<br>";}?>

  Maximizar      Seleccionar      PHP

 Esta expresión tambien nos permite trabajar con vectores con indice, en este caso trabajaremos así: 

000 001 002 003 004 005 006 007 008 009 010 

<?$vector = array(   "uno" => 1,   "dos" => 2,   "tres" => 3,   "diecisiete" => 17);foreach($vector as $indice => $valor) {   print "\$vector[$indice] => $valor.\n";}?>

  Maximizar      Seleccionar      PHP

 Como vemos en este caso especificamos la variable que identifica el indice y la que identifica el valor separadas por =>

Page 29: Cur Sode Php

 El ciclo switchEn muchas ocasiones, programando en PHP, nos encontramos que queremos hacer una u otra acción dependiendo del valor de una variable, en este caso, podríamos usar una sucesión de condicionales if, pero el código resultante será confuso y difícil de modificar en el futuro.

Pero PHP y en general todos los lenguajes de programación de un nivel mas o menos alto, dispone de un ciclo que nos irá como anillo al dedo en este caso, el ciclo switchque nos realizará un bloque de acciones para cada valor de una variable dada. 

000 001 002 003 004 005 006 007 008 009 010 011 

<?switch ($i) {    case 0:        echo "Variable en valor bajo";        break;    case 1:        echo "Variable en valor alto";        break;    default:        echo "La variable no es binária";}?>

  Maximizar      Seleccionar      PHP

 Este código hará un switch para la variable $i, en el caso que esta sea 0, imprimirá el mensaje 'Variable en valor bajo', si es 1 imprimirá 'Variable en valor alto' y sino, nos dirá que la variable no es un número decimal.

Vemos que cada valor se relaciona con un caso, en el interior del cual realizamos las acciones requeridas y una instrucción llamada break, de lo contrario, se seguirían ejecutando las instrucciones de los demás casos.

Finalmente encontramos un caso especial llamado default, este caso se activará si no se ha activado ninguno de los casos anteriores.

A continuación podemos ver y ejecutar un ejemplo de ciclo switch

Paso de variables por URLVamos a ver un tema muy sencillo del trabajo con PHP pero básico para cualquier aplicación web, para los que ya conocéis el trabajo con variables pasadas por url es posible que os ponga un poco al día sobre este tipo de tarea.

Page 30: Cur Sode Php

El tema consiste en acceder a una dirección del tipo pagina.php?variable1=valor1&variable2=valor2 y que el intérprete PHP acceda a los valores pasados en la dirección de la página para configurar la página que se mandará al usuario. 

000 001 002 003 

<?echo '<b>variable1:</b> '.$_POST["variable1"];echo '<br><b>variable2:</b> '.$_POST["variable2"];?>

  Maximizar      Seleccionar      PHP

 Por ejemplo, vamos a mostrar un mensaje en una página dependiendo de un parámetro pasado por url: 

 variables.php

000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 

<?if(isset($_GET["mensaje"])) switch ($_GET["mensaje"]){  case 0:   echo 'Bienvenido a mi web';   break;  case 1:   echo 'Mensaje 2';   break;  case 2:   echo 'Último mensaje';   break;  default:    echo 'Error en el parametro';} else echo 'No se pasó parametro';?>

  Maximizar      Seleccionar      PHP

 Este código, lee el parámetro llamado mensaje, la manera de hacerlo es a partir de$_GET["mensaje"], asi como si hubiera otro parámetro (variables.php?mensaje=1&usuario=343) accederíamos a el desde $_GET["usuario"].

A partir de ahí, miramos si esta definida la variable para ver si esta pasada con la funciónisset, luego hacemos un ciclo switch para mostrar un u otro mensaje según el valor de la variable pasada.

Page 31: Cur Sode Php

El ejemplo, nos mostrará un mensaje distinto dependiendo de si mensaje vale 0, vale 1,vale 2, tiene otro valor o no esta definido.

Nota:Debemos observar que según que parámetros pasemos por URL algunos buscadores cómo google, no agregaran nuestra url, por ejemplo, google no indexa páginas con la variable id.

Las funcionesEn toda aplicación mas o menos compleja hay bloques de acciones que realizamos mas de una vez y PHP no es una excepción, para que no tengamos que escribir estas acciones repetidamente, todos los lenguajes de un nivel mas o menos alto incorporan lo que llamamos funciones.

Para declarar una función utilizamos la expresión function seguida del nombre que queremos dar a la función, a continuación y entre paréntesis, los argumentos que recibe la función y finalmente y entre corchetes el código que esta debe ejecutar, veamos un ejemplo: 

000 001 002 003 004 

<?function miFuncion ($argumento_1, $argumento_2) {   //  Codigo de la funcion}?>

  Maximizar      Seleccionar      PHP

 

Tabla de contenido · Llamando a una funcion · El valor de retorno

Llamando a una funcion

Una vez creada la función, la debemos llamar como una función prefabricada de PHP, por su nombre pasando los argumentos que necesita. Veamos un ejemplo: 

 000 001 002 

<?miFuncion("hola", "pepe");?>

  Maximizar      Seleccionar      PHP

El valor de retorno

Page 32: Cur Sode Php

Es interesante saber que las funciones pueden devolver un valor al lugar donde las llamamos, esto se hace gracias a la instrucción return seguida del valor de retorno, veamos este ejemplo:

 000 001 002 003 004 005 

<?function saludo($nombre,$momento){    return "Hola $nombre buenas $momento";}echo saludo("Pepe","tardes");?>

  Maximizar      Seleccionar      PHP

 Este ejemplo dará como resultado: Hola Pepe buenas tarde

Procesamiento de formulariosAl enviar un formulario HTML, los datos són enviados al servidor Web y este es capaz de procesarlos y realizar un seguido de acciones en función de los datos introducidos, los datos del formulario se envían utilizando uno de los siguientes métodos, dependiendo delmethod del formulario:GET - Los datos del formulario són enviados al servidor a través de los encabezados HTTP, estos datos són visibles en la URL y en los logs del servidor, es poco recomendado para datos de usuario. POST - Los datos del formulario són enviados al servidor como datos de la petición, no se recomienda para pasar parametros de modularización, paginación...Estos datos, podemos recojerlos desde nuestra aplicación PHP utilizando los arrays superglobales, $_GET y $_POST de manera respectiva. 

De esta manera, cuando el usuario rellena un campo cómo el siguiente... 

000 001 002 

<form method="POST">   <input type="text" name="telefono"> </form>

  Maximizar      Seleccionar      XML

 ... el servidor recibe los datos y PHP genera la variable $_POST['telefono'], que podemos mostrar por ejemplo con un echo:

 000 001 

<?php   echo $_POST['telefono']; 

Page 33: Cur Sode Php

002  ?>  Maximizar      Seleccionar      PHP

 Exactamente igual pasará cuando el método especificado sea GET (siempre, tambien con POST los escribiremos en mayúsculas).

Puedes ver algunos ejemplos usando el método GET a continuación.

Utilización básica de formulariosUtilizar formularios es una forma de dinamizar nuestro sitio. Sus bases son muy sencillas, pero puede llegar a ser muy potente también. Requiere tanto conocimientos de HTML como de PHP, ambos en niveles básicos. Este artículo se divide en dos partes: la primera, pasar variables a la URL mediante HTML; la segunda, obtener esas variables mediante PHP. 

Tabla de contenido · Pasando variables a la URL · Obteniendo variables de la URL · Conclusiones

Pasando variables a la URLEn este paso utilizaremos exclusivamente HTML para crear el formulario. Podemos colocar el código en cualquier archivo, un .html está bien. 

Empezamos con el código del formulario: 

000  <form name="microsano" action="microsano.php" method="get">  Maximizar      Seleccionar      XML

 El parámetro "name" indica el nombre del formulario; "action" el archivo al cual se enviará los datos del formulario para ser procesados, en este caso "microsano.php", pero puede ser cualquier otro con extensión .php; y "method" es la forma de enviar estos datos, en este caso utilizaremos "get" para enviarlos por la URL. 

Una vez abierto el formulario, podemos colocar algún input para que ingresen un texto, por ejemplo el nombre de la persona:    

000  <input type="text" name="nombre" value="" />  Maximizar      Seleccionar      XML

Page 34: Cur Sode Php

 Ese código mostrará un campo de texto; el nombre de variable que contendrá el dato enviado para ese campo será "nombre"; y el valor inicial lo dejaremos vacío. 

Luego, para darle más dinamismo aún, colocaremos un select, donde podrán elegir el valor de una lista predefinida por nosotros. En este caso preguntaremos la edad:  

000 001 002 003 004 005 

<select name="edad">  <option value="18">18 años</option>  <option value="19" selected="selected">19 años</option>  <option value="20">20 años</option>  <option value="21">21 años</option> </select>

  Maximizar      Seleccionar      XML

 El nombre de la variable que incluye este dato, será "edad", como lo indicamos en el parámetro "name". Incluimos cuatro opciones para elegir su edad, se puede añadir tantas como sea necesario, simplemente agregando otro "<option value="22">22 años</option". Al option que le agreguemos el parámetro "selected="selected" será el que aparecerá inicialmente seleccionado. 

El visitante ya ingresó su nombre y edad, pero aún no tenemos esos datos, permanecen en su navegador. Así que le daremos la posibilidad de que nos envíe dichos datos: 

 000  <input name="submit" type="submit" value="Enviar" />

  Maximizar      Seleccionar      XML

 Si al input le ponemos como tipo "submit", se transformará en un botón para enviar el formulario. En vez de "Enviar", se puede poner cualquier otro texto. 

Sólo falta cerrar el formulario: 

000  </form>

  Maximizar      Seleccionar      XML

 Veamos como nos quedó el formulario:  

000 001 

<form name="microsano" action="microsano.php" method="get"> 

Page 35: Cur Sode Php

002 003 004 005 006 007 008 009 

<input type="text" name="nombre" value="" /> <select name="edad">  <option value="18">18 años</option>  <option value="19" selected="selected">19 años</option>  <option value="20">20 años</option>  <option value="21">21 años</option> </select> <input name="submit" type="submit" value="Enviar" /> </form>

  Maximizar      Seleccionar      XML

 Un código muy simple que le permitirá al visitante enviarnos su información. Incluímos el código en un archivo .html, por ejemplo llamado "formulario.html" y lo guardamos. 

Obteniendo variables de la URL

Ahora viene la parte con PHP, en la cual obtendremos las variables de la URL y las utilizaremos para imprimirlas en la página. 

Creamos un archivo .php, con el nombre que le indicamos al parámetro "action" del formulario, como recordarán en este ejemplo es "microsano.php". Luego de ello, si accedemos a formulario.html y enviamos el formulario, nos lleva a un archivo llamado microsano.php?nombre=philippe&edad=18&submit=Enviar; analizándolo: tenemos la variable "nombre" (en este caso con el valor philippe), la variable "edad" (con el valor 18) y la varible submit, que no nos interesa. Ahora veamos como obtener dichos valores en la página mediante PHP. 

Con el siguiente código especificaremos que queremos obtener variables GET, lo colocaremos al principio del archivo microsano.php:  

000 001 002 

<? !$HTTP_GET_VARS ?>

  Maximizar      Seleccionar      PHP

 Luego, diremos cuáles valores obtener de la URL y los pasaremos a variables comunes para facilitar su manejo: 

 000 001 

<? $_GET['nombre']=$nombre; ?> <? $_GET['edad']=$edad; ?>

Page 36: Cur Sode Php

  Maximizar      Seleccionar      PHP

 Obtuvimos el valor "nombre" y "edad" y los pasamos a dos variables: $nombre y $edad. 

Lo que resta es muy sencillo, un simple "echo:", pero lo mezclaremos con texto:  

000  Hola <? echo"$nombre"; ?>, tu tienes <? echo"$edad"; ?> años.

  Maximizar      Seleccionar      PHP

 El resultado en este caso sería: Hola Philippe, tu tienes 18 años. 

Así queda el archivo microsano.php entonces: 

 000 001 002 003 004 005 

<? !$HTTP_GET_VARS ?> <? $_GET['nombre']=$nombre; ?> <? $_GET[‘edad’]=$edad; ?> Hola <? echo"$nombre"; ?>, tu tienes <? echo"$edad"; ?> años.

  Maximizar      Seleccionar      PHP

 Conclusiones

Como habrán notado, es muy fácil pasar variables por la url para imprimirlas en una página. Además del ejemplo, se puede jugar mucho con formularios y hacer herramientas útiles

Cookies en PHPPara usar cookies en PHP, tenemos que tener en cuenta que la cookie se envia antes de enviar la página, es decir, que enviaremos la cookie al navegador antes de enviar ningún caracter de la página o recibiremos un error.

La función que usaremos para enviar una cookie es setcookie, que funciona de la siguiente manera: 

000 001 002 

<?phpsetcookie (nombre,valor,fecha);?> 

  Maximizar      Seleccionar      PHP

Page 37: Cur Sode Php

 Donde 'nombre', será un identificador de la cookie que contendrá el texto indicado por 'valor' y que tendrá vigéncia hasta 'fecha'.

Vamos a hacer un ejemplo que incrementara el valor de una cookie cada vez que se visite cierta página:

 000 001 002 003 004 

<?php$visitas = $_COOKIE["visitas"]+1;setcookie ("visitas", $visitas, time () + 7*24*60*60);echo "Nos has visitado $visitas veces";?>

  Maximizar      Seleccionar      PHP

 Vemos que accedemos al valor de la cookie 'visitas' con un array superglobal que almacena todas las cookies de la página y le sumamos 1: 

000 001 002 

<?$visitas = $_COOKIE["visitas"]+1;?>

  Maximizar      Seleccionar      PHP

 Aunque dependiendo de la configuracion de PHP, podremos acceder a la cookie 'visitas' directamente con la variable $visitas:

 000 001 002 003 004 

<?php$visitas++;setcookie ("visitas", $visitas, time () + 7*24*60*60);echo "Nos has visitado $visitas veces";?>

  Maximizar      Seleccionar      PHP

 

 

Envio de EmailsEn este articulo aprenderemos a enviar emails (correo electrónico) de una forma compleja, gracias a mis experiencias. 

Page 38: Cur Sode Php

Antes de nada recordaremos la chuleta: 

000 001 002 

<? mail("destinatario","asunto","cuerpo","adicional"); ?> 

  Maximizar      Seleccionar      PHP

 Un ejemplo: 000 001 002 

<? mail("[email protected]","Ejemplo de envio","Este email ha sido enviado a:\n\n\[email protected]","Reply to: [email protected]"); ?> 

  Maximizar      Seleccionar      PHP

 Examinaremos esto ... el mensaje se enviara a: Destinatario: [email protected] Asunto: Ejemplo de envío Responder a: [email protected] Cuerpo: Este email ha sido enviado a: 

informació[email protected]

Ahora veremos con detalle las partes de los emails:Destinatario El destinatario de un email será el email donde se enviará el email. Este campo es obligatorio ya que sin email no podrá enviar el mensaje. Podremos poner mail("Pepe José <[email protected]>", [...] o mail("[email protected]", [...] de las dos formas se pueden enviar. 

Asunto El asunto de un mensaje es una introducción al contenido del mensaje. Este campo no es obligatorio ya que si no lleva asunto aparece (sin asunto), si el asunto es muy largo se te abreviará con ... (tres puntos) . 

Cuerpo del Mensaje o Contenido En el contenido del mensaje escribirás el motivo del email. No es obligatorio, pero por lógica deberías de escribir algo. El email puede ser de tres tipos (plano,html y mixto) pero mejor utilizar (plano y html)Si es Plano: 

El mensaje será una línea de texto .. es decir no se ejecutará nada solo será

Page 39: Cur Sode Php

texto, menos \x. Hay tres códigos \t, \n y \r (esto también se ejecuta en alertas html).\n = salto de línea \t = sangría \r = vuelta de líneaNota:En algunos programas o servidores se confunde \r con \n (salto de linea).

Si es html: Aquí se ejecuta todo tipo de html. Si el receptor del email usa hotmail deberás saber que este modifica los códigos como los <a href='[externo?id=tuweb]'> (pone cabecera) <p onclick=''> (si antes era onclick='a()' ahora se queda sin nada), es decir censura algunos códigos. 

Este tipo de mensaje puede traerte problemas, ya hackers utilizan este método de email para que rescribas tu contraseña haciéndose pasar por un error. Puede ocultarse bien así que te recomiendo que no hagas mucho caso.

Adicionales

Estos características se añaden después del contenido del mensaje y van precedidos de un \n. Estos se muestran en la cabecera. Como su nombre indica no son obligatorios.

Un ejemplo popular: 

000  mail($to, $subj, $body, "from: Pepe\nReply to: Manuel");   Maximizar      Seleccionar  

 Documéntate para saber los tipos de características de email adicionales.

Si utilizas tripod.lycos.es como alojamiento te será imposible cambiarle el from lo cual seria [email protected] y en lo adicional siempre pone from script: pagina.php.Puedes cambiar el from poniendo "\nFrom: &lt; $from &gt" el valor de $from no puede ser muy complejo es decir puedes poner [email protected] pero no webmaster <[email protected]>.Lo otro de la from script: pagina.php no podrás quitarlo pero tienes a favor que algunos servidores no ponen este adicional, solo ponen los conocidos. En hotmail solo te sale si en opciones > opciones de mensajes activas Completo para visualizar el mensaje, además te vendrán otros datos interesantes del mensaje.

Una anécdota fue de que a un colega le colaron un virus desde un email que

Page 40: Cur Sode Php

incitaba a descargarselo. Observe que después de ejecutarse el virus llegaron 2 mensajes mas con virus uno de ellos decía que había un nuevo virus que te descargaras sobreelvirus.pif (que también era virus) y en el siguiente decía que había un portal de seguridad www.seguridadvirus.com y se adjuntaba www.seguridadvirus.com (una cosa muy curiosa) puedes llamar a un archivo www.yo.txt y por tanto la extensión *.com es un archivo MS-DOS y por tanto puede ser virus.

Como no tenia accionada la opción completa del mensaje la accione y vi que en lo adicional venia dos cosas como recived from: recived: y salían 2 ips .. una seria del servidor y otra del hacker. En los 3 mensajes venia la misma ip (ident personal), y por tanto doy por echo que los dos últimos mensajes eran virus.

Si no os habéis dado cuenta no existen mensajes anónimos, "nadie" puede enviar "anónimamente". Gente avanzada en programación si puede o sabe, un email nunca es anonimo por completo queda la ip que pueden localizarte con ella, recordemos que es xxx.xxx.xxx.xxx

Termino con esto los adicionales .. aun que no sean obligatorios aportan mucha informacion.

Si se pueden enviar archivos con emails aquí pongo un ejemplo:

 000 001 002 003 004 005 006 007 0

<?php/*EMAIL FORM Por Jorge Luis Martinez Mhttp://misCodigos.jlmnetwork.com*/ $ip = $REMOTE_ADDR;$referido = getenv("HTTP_REFERER"); //Limite, Se Refiere Al Tamaño Maximo Que Puede Tener Un Archivo, Este Numero Se Da En Bytes.$limite = 80000; if(!isset($HTTP_POST_VARS["email"])){    ?>    <SCRIPT LANGUAGE="javascript">    alert("Debe Introducir El Email Al Que Desea Enviar La Informacion.\n\nServicio De Formularios\nhttp://misCodigos.jlmnetwork.com/");    history.go(-1);    </SCRIPT>    <?}else{ 

Page 41: Cur Sode Php

08 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 0

$mensaje = "Email Enviado Desde La Pagina, Con El Siguiente Contenido:\n\n"; while (list($variable, $contenido) = each($HTTP_POST_VARS)){    if($variable != "archivo")    {        $mensaje .= $variable." = ".stripslashes($contenido);        $mensaje .= "\n";    }}$mensaje .= "\n";$mensaje .= "Informacion Adicional:\n\n";$mensaje .= "Enviado Desde: ".$referido."\n";$mensaje .= "IP: ".$ip;$mensaje .= "\n\nEnvio De Formularios Con Archivos Adjuntos, Un Servicio Gratuito De http://misCodigos.jlmnetwork.com/"; $cabeceras = "From: misCodigos <[email protected]>\n";$cabeceras .= "Reply-To: $email\n"; if($archivo != "none"){if($archivo_size > $limite){    ?>    <SCRIPT LANGUAGE="javascript">    alert("Lo Siento, El Archivo Ocupa Mas De <? echo $limite; ?> bytes, El Maximo Permitido Es De <? echo $limite; ?> bytes.\n\nServicio De Formularios\nhttp://misCodigos.jlmnetwork.com/");    history.go(-1);    </SCRIPT>    <?}else{$file = fopen($archivo, "r");$contenido = fread($file, $archivo_size);$encoded_attach = chunk_split(base64_encode($contenido));fclose($file); $cabeceras .= "MIME-version: 1.0\n";$cabeceras .= "Content-type: multipart/mixed; ";$cabeceras .= "boundary=\"Message-Boundary\"\n";$cabeceras .= "Content-transfer-encoding: 7BIT\n";$cabeceras .= "X-attachments: $archivo_name"; $body_top = "--Message-Boundary\n";$body_top .= "Content-type: text/plain; charset=US-ASCII\n";$body_top .= "Content-transfer-encoding: 7BIT\n";$body_top .= "Content-description: Mail message body\n\n"; $cuerpo = $body_top.$mensaje; $cuerpo .= "\n\n--Message-Boundary\n";$cuerpo .= "Content-type: $archivo_type; name=\"$archivo_name\"\n";$cuerpo .= "Content-Transfer-Encoding: BASE64\n";$cuerpo .= "Content-disposition: attachment; filename=\"$archivo_name\"\n\n";$cuerpo .= "$encoded_attach\n";$cuerpo .= "--Message-Boundary--\n"; mail($email,$asunto,$cuerpo,$cabeceras);

Page 42: Cur Sode Php

28 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 0

}}else{mail($email,$asunto,$mensaje,$cabeceras);}?><SCRIPT LANGUAGE="javascript">location.href = '<? echo $redireccion; ?>';</SCRIPT><?}?>

  Maximizar      Seleccionar      SCRIPT,XML,PHP

Page 43: Cur Sode Php

48 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 0

Page 44: Cur Sode Php

68 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 0

Page 45: Cur Sode Php

88 089 090 091 092 

 En definitiva te aconsejo que utilices a partir de ahora mas esta función en tu web, puedes utilizar un sistema de listas de correo en tu web y utilizar lo aprendido aquí.

Sesiones PHPtilizaremos sesiones para almacenar una serie de variables en el servidor relacionándolas ( grácias a una variable pasada por cookie o por URL ) con un usuario concreto para que estén disponibles en diferentes páginas de nuestro sitio web. 

Una vez almacenada una variable de sessión, podremos leerla desde todas las páginas de nuestra web mientras la sesión no se destruya. 

Tabla de contenido

 Guardar una variable · Leer una variable guardada · Borrar una variable

Guardar una variable

El soporte para sesiones de PHP nos permite inicializar facilmente una sesión utilizandosession_start y gracias al vector superglobal $_SESSION, podremos trabajar con sesiones como si de cualquier otro vector se tratara: 

000 001 002 003 004 005 

<?php // Inicializamos sesion session_start(); // Guardamos una variable $_SESSION['nombre'] = 'Fernando Díaz'; ?>

Page 46: Cur Sode Php

  Maximizar      Seleccionar      PHP

 La única cosa que deberemos tener en cuenta, es que si usamos cookies no podremos haber enviado ni un solo caracter ( ni siquiera un espacio ) al navegador antes delsession_start, el siguiente ejemplo nos dará error por el espacio de la línea 0: 

000 001 002 003 

 <?php // Inicializamos sesion session_start(); ?>

  Maximizar      Seleccionar      PHP

 

Leer una variable guardada

Si hemos guardado una sesión, podremos acceder a sus variables desde todas las páginas PHP de nuestra web uando sean visitadas por el mismo usuario.

Esto lo haremos simplemente inicializando la sesión y con el mismo vector $_SESSION, para ver si existe una variable de sesión determinada, usaremos isset cómo con cualquier otra variable.: 

000 001 002 003 004 005 006 007 008 009 010 011 

<?php // Inicializamos sesion session_start(); // Comprovamos si existe la variableif ( isset ( $_SESSION['nombre'] ) ) { // Si existe echo $_SESSION['nombre'];} else { // Si no existe echo 'desconocido';}?>

  Maximizar      Seleccionar      PHP

 Borrar una variable

Podemos borrar una variable de sesión usando la función unset, pero además podemos eliminar la sesión con session_destroy: 

000 001 002 003 004 005 006 

<?php // Inicializamos sesion session_start(); // Borramos la variableunset ( $_SESSION['nombre'] ) {// Borramos toda la sesion

Page 47: Cur Sode Php

007  session_destroy();?>

  Maximizar      Seleccionar      PHP

 

PHP orientado a objetosCuando a principios de los años 80 se empezó a experimentar la Programación Orientada a Objetos (POO) esta ha ido suplantando la programación tradicional, por esta razón y aunque PHP no sea orientado a objetos, PHP incorpora sus principales características para que podamos trabajar con clases y objetos.

Tabla de contenido

· Clases y Objetos · Métodos y atributos · Herencia de clases · Constructores y destructores · Encapsulamiento

Clases y Objetos

Para entender la programación orientada a objetos debemos primero entender lo que es una clase, pero primero diremos que un objeto es un conjunto de atributos y métodos agrupados. 

Una clase es un grupo de objetos que comparten los mismos atributos y métodos, veamos como podemos crear una clase llamada Imagen: 

000 001 002 003 004 

<? class Imagen {  // Aquí el código de la clase } ?>

  Maximizar      Seleccionar      PHP

Métodos y atributos

Esta clase contendrá un seguido de atributos, que definiremos con la palabra reservadavar, y métodos, que programaremos como funciones usando function. 

Para crear un objeto de tipo imagen se ejecutará el constructor de la imagen que será el método con el mismo nombre que la clase o en PHP5 el método

Page 48: Cur Sode Php

llamado __construct(), veamos un ejemplo: 

000 001 002 003 004 005 006 007 008 009 010 011 012 

<? class Imagen {  var $src; // Estos són los atributos  var $border; // de los objetos asociados  // Esta funcion es el constructor  function Imagen($src,$border) {   $this->src=$src;   $this->border=$border;  } } // Creamos un objeto imagen $logo = new Imagen("logo.gif",3); ?>

  Maximizar      Seleccionar      PHP

 También podemos crear mas métodos ademas del constructor, vamos a completar el ejemplo con un método que imprima la imagen en el navegador del visitante:

 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 

<? class Imagen {  var $src;  var $border;  function Imagen($src,$border) {   $this->src=$src;   $this->border=$border;  }  // Esta funcion es un método de Imagen  function Imprimir() {  echo "<img src=\"";  echo $this->src;  echo "\" border=\"";  echo $this->border;  echo "\">";  } } $logo = new Imagen("logo.gif",3); // Llamamos el nuevo método $logo->Imprimir(); ?>

  Maximizar      Seleccionar      PHP

 Puedes ver cómo efectivamente este ejemplo funciona y es un magnifico ejemplo de cómo nos puede simplificar algo rutinario como la creación de múltiples imágenes

Page 49: Cur Sode Php

Herencia de clases

Si resulta que hemos creado una clase pero que ademas vemos que hay unos determinados objetos de esta clase que comparten otras cualidades por lo que queremos englobarlos en una clase distinta, lo que podemos hacer es ponerlos en una subclase, los objetos de la subclase, mantendrán todos los métodos y atributos de la clase padre y ademas compartirán los de la clase derivada.

Vamos a ver cómo podemos definir una subclase de la clase Imagen definida en la pagina anterior para imágenes de tamaño 468 x 60, esta subclase se llamará Banner y será de la siguiente manera: 

000 001 002 003 004 005 006 007 008 009 010 011 012 

<?// Definimos la subclase de Bannerclass Banner extends Imagen {  // Esta es la nueva funcion Imprimir para banners  function Imprimir() {    echo "<img src=\"";    echo $this->src;    echo "\" border=\"";    echo $this->border;    echo "\" width=\"468\" height=\"60\">";  }}?>

  Maximizar      Seleccionar      PHP

 Y finalmente crearemos el objeto $banner_1 y lo imprimiremos:  

000 001 002 003 

<?$banner_1 = new Banner("anunciante1.gif",0);$banner_1->Imprimir();?>

  Maximizar      Seleccionar      PHP

 Tener en cuenta que en el código de la subclase falta el código de la clase Imagen, sino no funcionará.

Vemos que no declaramos constructor para banner, podemos crearle un constructor especifico, pero si no lo hacemos cuando hagamos new Banner, llamaremos al constructor de la clase padre Imagen.

Cuando hacemos Imprimir() del objeto perteneciente a la base derivada Banner, se llama al método Imprimir de Banner y no al de Imagen aunque se llamen igual

Constructores y destructores

Page 50: Cur Sode Php

Si trabajamos con PHP5, para definir un constructor, usamos el método __construct, vamos a ver un ejemplo: 

000 001 002 003 004 005 006 007 008 009 010 011 012 

<?class Imagen {  var $src;     // Estos són los atributos  var $border;  // de los objetos asociados  // Esta funcion es el constructor  function __construct($src,$border) {    $this->src=$src;    $this->border=$border;  }}// Creamos un objeto imagen$logo = new Imagen("logo.gif",3);?>

  Maximizar      Seleccionar      PHP

 Ademas tenemos la opción de crear un destructor que se ejecutará cuando el objeto va a ser eliminado de´la memoria, el constructor se define con el método __destruct.

Encapsulamiento

Este es un concepto nuevo en PHP5, el encapsulamiento permite el uso de variables y métodos internos a un objeto que no pueden ser accedidos internamente, de esta manera existen tres tipos de objetos:public - Son accesibles desde todo el código.protected - Son accesibles desde la clase actual y las clases derivadas.private - Son accesibles desde la clase actualVamos a ver el ejemplo de antes pero con atributos protegidos: 

000 001 002 003 004 005 006 007 008 009 010 011 012 

<?class Imagen {  protected $src;     // Estos són los atributos  private $border;  // de los objetos asociados  // Esta funcion es el constructor  function __construct($src,$border) {    $this->src=$src;    $this->border=$border;  }}// Creamos un objeto imagen$logo = new Imagen("logo.gif",3);?>

  Maximizar      Seleccionar      PHP

Page 51: Cur Sode Php

 Y estos son los cambios principales de PHP5, ademas de incorporar un constructor de copia 

 000  __clone

  Maximizar      Seleccionar  

 y algunas otras opcione

Image GD, descripción y ejemplosA menudo, cuando estamos programando una aplicación, contamos con una gran cantidad de datos interesantes para el usuario pero que no podemos mostrar en forma de texto debido a su cantidad o complejidad, en estos casos, es cuando nos vemos obligados a generar gráficas al vuelo para mostrar los datos de forma clara. 

Las aplicaciones en PHP, no són una excepción, y a menudo nescesitamos mostrar los datos en forma de gráfica, y eso significa crear una imagen dinámicamente. 

Image GD, es una biblioteca de funciones para la creación y modificación al vuelo de imagenes muy potente, que nos permite hacer verdaderas maravillas como creación de gráficas de quesito en 3D, cambio de tamaño de imagenes y muchas mas aplicaciones todas ellas muy interesantes. 

Esta biblioteca, tiene una versión para PHP que podremos instalar facilmente en nuestro servidor si tenemos permisos de administrador, y que viene instalada en la mayoría de servidores linux del mercado. 

La versión para PHP biblioteca contiene una gran cantidad de funciones para el dibujo y el tratamiento de imagenes que iremos viendo en futuros artículos, y que nos permiten realizar excelentes reportes visuales de nuestros datos, como los de los siguientes ejemplos: 

Gráfica de lineas 

Page 52: Cur Sode Php

 

Graficas de quesitos en 3DSi disponemos de PHP con GD, podremos disfrutar de la creación al vuelo de imagenes, esta poderosa herramienta, nos permite entre muchas otras cosas la creación de todo tipo de gráficas, de todas ellas, las más vistosas són las gráficas de quesitos en 3D que vamos a ver cómo podemos generar. 

Para crear una gráfica de quesitos, usaremos la función imagefilledarc, que nos creará un quesito del color que nosotros le indiquemos, veamos un ejemplo: 

000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 

<?php // Creamos la imagen $im = imagecreate(200,200);  // Definimos un color para el quesito $fondo = imagecolorallocate ($im, 255,255,255); $rojo = imagecolorallocate ($im, 255,0,0);  // Dibujamos el quesito imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE);  // Enviamos la imagen header("Content-type: image/png"); imagepng($im); ?>

  Maximizar      Seleccionar      PHP

 Veamos al detalle lo que hace la función imagefilledarc, esta función crea un arco de color en la imagen, y sus parámetros són:

imagen - Variable con el recurso imagen cX - Coordenada X del centro del círculo cY - Coordenada Y del centro del círculo X - Tamaño horizontal del círculo 

Page 53: Cur Sode Php

Y - Tamaño vertical del cñírculo anguloI - Angulo inicial del arco dibujado en grados anguloF - Angulo final del angulo dibujado color - Color del arco dibujado estilo - Usaremos IMG_ARC_PIEAhora, vamos a darle un efecto de sombreado al mismo arco que acabamos de crear, creando unos arcos más oscuros debajo suyo:

 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 

<?php // Creamos la imagen $im = imagecreate(200,200);  // Definimos un color para el quesito $fondo = imagecolorallocate ($im, 255,255,255); $rojo = imagecolorallocate ($im, 255,0,0); $rojo_oscuro = imagecolorallocate ($im, 150,0,0);  // Dibujamos el efecto sombra 3D  for ($i = 0; $i < 10; $i ++)  imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 0, 45, $rojo_oscuro, IMG_ARC_PIE);  // Dibujamos el quesito imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE);  // Enviamos la imagen header("Content-type: image/png"); imagepng($im); ?>

  Maximizar      Seleccionar      PHP

 Y este será el resultado obtenido: 

un triangulo de queso en 3D rojo

Ahora vamos a hacer el mismo ejemplo pero con unos cuantos quesitos, de manera que habremos generado nuestra primera gráfica de quesitos

Page 54: Cur Sode Php

completa: 

000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 

<?php // Creamos la imagen $im = imagecreate(200,200);  // Definimos un color para el quesito $fondo = imagecolorallocate ($im, 255,255,255); $rojo = imagecolorallocate ($im, 255,0,0); $rojo_oscuro = imagecolorallocate ($im, 150,0,0); $verde = imagecolorallocate ($im, 0, 255,0); $verde_oscuro = imagecolorallocate ($im, 0, 150,0); $azul = imagecolorallocate ($im, 0, 0, 255); $azul_oscuro = imagecolorallocate ($im, 0, 0, 150);  // Dibujamos el efecto sombra 3D  for ($i = 0; $i < 10; $i ++){  imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 0, 45, $rojo_oscuro, IMG_ARC_PIE);  imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 45, 145, $verde_oscuro, IMG_ARC_PIE);  imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 145, 360, $azul_oscuro, IMG_ARC_PIE); }  // Dibujamos el quesito imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE); imagefilledarc ($im, 100, 100, 200, 175, 45, 145, $verde, IMG_ARC_PIE); 

imagefilledarc ($im, 100, 100, 200, 175, 145, 360, $azul, IMG_ARC_PIE);  // Enviamos la imagen header("Content-type: image/png"); imagepng($im); ?>

  Maximizar      Seleccionar      PHP

 Y este es nuestro resultado, una magnífica gráfica con quesitos: Ahora solo nos faltará un poco de imaginació para recojer los valores de la base de datos, o de donde nos sea más conveniente. 

Creación de una imagen con GD

Page 55: Cur Sode Php

El primer paso para empezar a trabajar con gráficos y image GD, es la creación de una imagen, que puede ser en blanco (para hacer una gráfica, un dibujo...) o bien a partir de una imagen existente (para editarla, redimensionarla...). 

Tabla de contenido

 Creación de una imagen en blanco · Cargar una imagen existente

Creación de una imagen en blanco

Para crear una imagen en blanco y poder dibujar sobre ella, usaremos la funciónimagecreate, a la que le indicaremos el tamaño de la imagen que queremos crear, la función devolverá un identificador de la imagen que, en el ejemplo, almacenamos en la variable $im. 

EL siguiente paso es crear un color, que al ser el primero creado, será usado como color de fondo. 

Para crear colores, usamos la función imagecolorallocate, a la que le pasamos el id de la imagen y los valores de rojo, verde y azul (en este órden) 

000 001 002 003 004 005 006 007 008 009 010 

<?php $im = @imagecreate(100, 100)  or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco  // Aqui podemos trabajar con la imagen  header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> 

  Maximizar      Seleccionar      PHP

 Finalmente, como vemos en el ejemplo, enviamos al navegador los encabezados de PNG (header), enviamos la imagen al navegador (imagepng) y liberamos la memória (imagedestroy). 

Cargar una imagen existente

Page 56: Cur Sode Php

La carga de una imagen existente es mas o menos cómo el caso anterior, pero en lugar de usar imagecreate, usaremos una función de las de la siguiente lista:imagecreatefromgif - Crea una imagen a partir de una imagen gif existente imagecreatefromjpeg - Crea una imagen a partir de una imagen jpeg existente imagecreatefromjpeg - Crea una imagen a partir de una imagen png existente imagecreatefromjpeg - Crea una imagen a partir de una imagen bmp para wap existente imagecreatefromgd2, imagecreatefromgd2part, imagecreatefromgd, imagecreatefromstring, imagecreatefromxbm, ImagecreatefromxpmQue dependiendo de la versión de GD, estarán o no disponibles, para saverlo, haremos: 

000 001 002 

<?php var_dump(gd_info()); ?> 

  Maximizar      Seleccionar      PHP

 Veamos una ejemplo de carga de una archivo png:

 000 001 002 003 004 005 

<?php $im = imagecreatefrompng("image.png"); header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> 

  Maximizar      Seleccionar      PHP

 

Uso del color con GDLa utilización de colores en GD es algo mas compleja que en HTML aunque ambos utilizan el modelo RGB. 

Tabla de contenido

 Crear un color · Obtencion de un color de la imagen · Utilización del color

Page 57: Cur Sode Php

Crear un color

Para usar un determinado color con GD en PHP, primero tenemos que reservar ese color en la imagen. Para reservarlo usaremos la funcion imagecolorallocate y almacenaremos su valor de retorno en una variable para pasarsela después como color a las funciones de dibujo, coloreado... 

Nota:El primer color creado con imagecolorallocate será utilizado como color de fondo de la imagen.

Los parametros que pasaremos a la funcion serán la variable del objeto image y los valores de la intensidad en 24 bits ( de 0 a 255 ) de los colores rojo, verde y azul en este orden, veamos un ejemplo:

 000 001 002 003 

<?php  $color = imagecolorallocate($im, 255, 0, 0);  // 100% rojo, 0% verde, 0% azul ?>

  Maximizar      Seleccionar      PHP

 Obtencion de un color de la imagen

Otra opción para crear un color consiste en obtener el color de un punto determinado de la imagen usando imagecolorat con el objeto imagen y las coordenadas del punto: 

000 001 002 003 

<?php $imagen = ImageCreateFromPng("manzana.png"); $color = ImageColorAt($imagen, 100, 200); // x: 100, y: 200 ?>

  Maximizar      Seleccionar      PHP

Utilización del color

Una vez creado el color con cualquier de los dos métodos anteriores, y almacenado su valor ( variable imagen en los ejemplos ), podemos utilizarlo en las funciones que permiten colores pasando la variable, vamos a seguir los ejemplos anteriores: 

000 001 002 003 

<?php imagefill ( $imagen, 1, 1, $color ); // Usamos el cubo de pintura con el color creado en x=1 y=1 ?>

  Maximizar      Seleccionar      PHP

Page 58: Cur Sode Php

 Dibujo de líneas con GDEn este tutorial de 3 páginas veremos cómo podemos dibujar todo tipo de líneas (normales, gruesas, discontinuas, punteadas... ) usando la librería GD de PHP. 

Tabla de contenido

· Dibujo de lineas básicas · Dibujo de lineas gruesas

Dibujo de lineas básicas

Para dibujar una linea contínua de grosor 1 en una imagen creada con GD, usaremos la función imageline, que funciona de la siguiente manera: 

000  imageline($im, $ax, $ay, $bx, $by, $col);   Maximizar      Seleccionar      CSS

 Donde los parámetros que pasamos a la función serán:$im - Es el identificado de la imagen que hemos creado cómo se explico en capitulos anteriores de este manual  $ax - Es la coordenada horizontal del primer punto de la línea $ay - Es la coordenada vertical del primer punto de la línea $bx - Es la coordenada horizontal del segundo punto de la linea $by - Es la coordenada vertical del segundo punto de la línea $col - Es el color de la linea como se explica también en capitulos anteriores de este manual Vamos a ver un ejemplo de línea:

 000 001 002 003 004 005 006 007 008 009 010 011 012 

<?php $im = @imagecreate(100, 100) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco $linea = imagecolorallocate($im, 0, 0, 0); // negro  // Dibujamos la línea imageline($im, 10, 10, 90, 90, $linea);  header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> 

  Maximizar      Seleccionar      PHP

Page 59: Cur Sode Php

Y aquí tenemos su resultado: 

Dibujo de líneas con GDTabla de contenido

· Dibujo de lineas básicas · Dibujo de lineas gruesas

Dibujo de lineas gruesas

Para hacer una línea de grosor distinto de 1, antes de dibujarla, usaremos la funciónimagesetthickness, que funciona de la siguiente manera:

 000  imagesetthickness($im, $grosor);

  Maximizar      Seleccionar  

 Donde los parámetros que pasamos a la función serán: 

000 001 

[b]$im[/b] - Es el identificado de la imagen [b]$grosor[/b] - Es el grosor en píxels de la línea

  Maximizar      Seleccionar  

 Vamos a ver un ejemplo de línea de 10 píxels:

 000 001 002 003 004 005 006 007 008 009 010 

<?php $im = @imagecreate(100, 100) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco $linea = imagecolorallocate($im, 0, 0, 0); // negro  // Cambiamos el grosor a 10 imagesetthickness($im, 10);  imageline($im, 10, 10, 90, 90, $linea); 

Page 60: Cur Sode Php

011 012 013 

header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> 

  Maximizar      Seleccionar      PHP

 Y aquí tenemos su resultado: 

Finalmente, para volver a dibujar líneas normales, haremos un imagesetthickness con grosor

Dibujo de rectángulos con GDCon GD, podemos dibujar rectángulos y rectángulos coloreados facilmente utilizando las funciones que explicaremos en este artículo

Tabla de contenido

· Dibujo de rectángulos · Rectángulos coloreados

Dibujo de rectángulos

Para dibujar un rectángulo utilizaremos la función imagerectangle, pasándole las coordenadas del rectándulo y el color de la siguiente manera: 

000  imagerectangle($im, $ax, $ay, $bx, $by, $col);  Maximizar      Seleccionar      CSS

 Donde los parámetros que pasamos a la función serán:$im - Es el identificado de la imagen que hemos creado cómo se explico antes$ax - Es la coordenada horizontal del primer punto del rectángulo $ay - Es la coordenada vertical del primer punto del rectángulo $bx - Es la coordenada horizontal del segundo punto del rectángulo $by - Es la coordenada vertical del segundo punto del rectángulo $col - Es el color de la linea como se explico antes

Page 61: Cur Sode Php

De esta manera dibujaremos las cuatro líneas del rectángulo, donde el primer punto es el borde superior izquierdo y el sgundo el borde inferior derecho. 

A estas líneas también les podremos aplicar grosores y estilos de línea

Rectángulos coloreadosOtro tipo de rectángulo que podemos dibujar són los rectángulos coloreados (areas de un color) que haremos con la función imagefilledrectangle, que funciona exactamente igual que la anterior pero genera un resultado distint 

Dibujo de arcos y elipses con GDUna elipse es una sección cónica, una especie de huevo, y un caso particular de elipse es el círculo, por otra parte, un arco es una curva entre dos puntos (elipse no completa) 

El dibujo de elipses y arcos con GD, es muy parecido al dibujo de rectángulos, salvo que en lugar de indicar las esquinas del rectángulo, debemos indicar el centro , la altura, el ancho y en el caso de los arcos, el ángulo inicial y final. 

Dibujo de elipses y círculos

Usando la función imageellipse o imagefilledellipse (para rellenarla de color), podemos generar una elipse de la siguiente manera: 

000  imageellipse ($im, $cx, $cy, $an, $al, $col);  Maximizar      Seleccionar      CSS

 Donde cada variable pasada a la función significa:$im - Es el identificado de la imagen que hemos creado cómo se explico$cx - Coordenada horizontal del centro de la elipse $cy - Coordenada vertical del centro de la elipse $an - Ancho de la elipse $al - Altura de la elipse $col - Es el color de la linea (o relleno) como se explico también

Veamos un ejemplo de cómo generar un caso particular de elipse, un círculo de 100 x 100 pixels (centrado en 50,50): 

000 001 002 003 004 

<?php $im = @imagecreate(101, 101) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco 

Page 62: Cur Sode Php

005 006 007 008 009 010 011 012 

$linea = imagecolorallocate($im, 0, 0, 0); // negro  // Dibujamos la elipse imageellipse($im, 50, 50, 100, 100, $linea);  header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?>

  Maximizar      Seleccionar      PHP

 Y este será el resultado (que sería relleno de color negro de haber usado imagefilledellipse):

Dibujo de arcos

Para dibujar un arco, usaremos la función imagearc o imagefilledarc, que tiene la misma sintaxis que la función anterior salvo que añade el ángulo inicial y el final: 

000  imageellipse ($im, $cx, $cy, $an, $al, $in, $fi, $col);  Maximizar      Seleccionar      CSS

 Donde cada variable pasada a la función significa:$im - Es el identificado de la imagen que hemos creado cómo se explico $cx - Coordenada horizontal del centro del arco $cy - Coordenada vertical del centro del arco $an - Ancho del arco $al - Altura del arco $in - Ángulo inicial del arco $fi - Ángulo final del arco $col - Es el color de la linea (o relleno) como se explico también  Veamos un ejemplo de cómo generar un arco:

 000 001 002 003 004 005 006 007 

<?php $im = @imagecreate(101, 101) or die("Error creando la imagen"); $fondo = imagecolorallocate($im, 255, 255, 255); // blanco $linea = imagecolorallocate($im, 0, 0, 0); // negro  // Dibujamos el arco 

Page 63: Cur Sode Php

008 009 010 011 012 

imagearc($im, 50, 50, 100, 100, 90, 180, $linea);  header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?>

  Maximizar      Seleccionar      PHP

 Y este será el resultado (que sería relleno de color negro de haber usado imagefilledarc):