Está en la página 1de 62

Curso de PHP

PHP es un lenguaje de programacin que se interpreta en el servidor HTTP y


enva el resultado de su ejecucin 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,
manipulacin de imagenes...
Captulos Curso de PHP:
1.
Introduccion al PHP
PHP es lo que llamamos un lenguaje de programacion del lado del
servidor, esto significa que el cdigo se interpreta en el...
2.
Instalar fcilmente Apache y PHP
Es muy duro para los novatos en PHP instalar un servidor al ordenador
para comprobar sus cdigos. Yo ya har unos tres meses que...
3.
Comentarios
Para que en futuras revisiones a tu cdigo por tu parte y sobretodo por
parte de otros programadores este cdigo sea inteligible...
4.
Variables
Una variable es un nombre que contiene unos determinados datos, ya
sean de texto o numricos, 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 dinmico, 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 Aritmtica
Los operadores de aritmtica sn los operadores bsicos para el trabajo
con nmeros, nos permiten sumar dos valores,...
8.2.
Operadores de Asinaci!n
Los operadores de asignacin, sn aquellos que nos permiten modificar
el valor de una variable, el operador de asignacin...
8.3.
Operadores de Comparaci!n
Los operadores de comparacin son operadores en su mayora binarios
que nos permiten comparar variables devolviendo un valor...
8.4.
Operadores de Control de "rrores
Para evitar que se muestre en pgina 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 numrica, los de decremento (--)...
8.6.
Operadores de #oica
Los operadores de Lgica nos permiten crear expresiones mas
complejas para evaluar nuestras estructuras de control,...
8.7.
Operadores de Cadena
En esta categora encontramos el operador binario de concatenacion (.),
que se encarga de unir dos cadenas dadas la una a...
9.
"structuras de control
Porque los scripts PHP no son lineales, debemos poder controlar la
ejecucion de una accin 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.
$ucle %hile
Esta instruccion nos permite efectuar un bloque de acciones mientras se
cumpla una determinada condicion, cuando deje de...
9.3.
$ucle do %hile
El bucle do while es en su esencia igual al bucle while con la diferncia
de que ejecuta las acciones antes de comprobar la...
9.4.
$ucle for
El bucle for nos permite ejecutar un determinado bloque de acciones un
nmero determinado de veces, a esta estructura le...
9.5.
$ucle foreach
El bucle foreach nos permite iterar para cada elemento de un vector, su
sintaxi es sencilla, solo hay que indicar el...
9.6.
"l ciclo s%itch
En muchas ocasiones, programando en PHP, nos encontramos que
queremos hacer una u otra accin dependiendo del valor de una...
10.
#as 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...
11.
Procesamiento de formularios
Al enviar un formulario HTML, los datos sn enviados al servidor Web y
este es capaz de procesarlos y realizar un seguido de...
12.
Coo&ies en PHP
Antes de leer este artculo recomiendo leer el artculo cookies en
JavaScript pues aqu no explicare que es una cookie, slo como...
13.
"n'io de "mails
En este articulo aprenderemos a enviar emails (correo electrnico) de
una forma compleja, gracias a mis experiencias. Antes...
14.
(esiones PHP
Utilizaremos sesiones para almacenar una serie de variables en el
servidor relacionndolas ( grcias a una variable pasada por...
15.
PHP orientado a ob)etos
Cuando a principios de los aos 80 se empez a experimentar la
Programacion Orientada a Objetos (POO) esta ha ido suplantando la...
16.
Imae *+, descripci!n y e)emplos
A menudo, cuando estamos programando una aplicacin, contamos con
una gran cantidad de datos interesantes para el usuario pero...
16.1.
Creaci!n de una imaen con *+
El primer paso para empezar a trabajar con grficos y image GD, es la
creacin de una imagen, que puede ser en blanco (para...
16.2.
-so del color con *+
La utilizacin de colores en GD es algo mas compleja que en HTML
aunque ambos utilizan el modelo RGB. Crear un color...
16.3.
+ibu)o de lneas con *+
En este tutorial de 3 pginas veremos cmo podemos dibujar todo tipo
de lneas (normales, gruesas, discontinuas, punteadas......
16.4.
+ibu)o de rectnulos con *+
Con GD, podemos dibujar rectngulos y rectngulos coloreados
facilmente utilizando las funciones que explicaremos en este...
16.5.
+ibu)o de arcos y elipses con *+
Una elipse es una seccin cnica, una especie de huevo, y un caso
particular de elipse es el crculo, por otra parte, un arco...
Introduccion al PHP
PHP es lo que llamamos un lenguaje de programacion del lado del servidor,
esto significa que el cdigo se interpreta en el servidor y no en el ordenador
del usuario.
El cdigo 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 cdigo 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 enva su resultado al
navegador.
Vamos a ver un ejemplo sencillo de cdigo escrito en php para que nos sea
mas fcil 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 cdigo producir el siguiente resultado que es lo que se enviar al
navegador del visitante:

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 cdigo php esta delimitado por las etiquetas <? y ?>, aunque
tambien puede usarse <?php en lugar de <?.
Otra caracterstica 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 fcilmente Apache y PHP
Para poder empezar a aprender a programar en PHP, debemos tener un
servidor web con PHP instalado, y lo ms cmodo 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 S de Windows
tambin 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 captulo
ensear a instalar el XAMPP, existen otros como el WAMP o el easyPHP.
Tabla de contenido
El XAMPP
Otros paquetes.
"l .A/PP
El XAMPP es el nico paquete de los que hemos comentado en este captulo
disponible para multiplataforma (Windows, Mac OS X, GNU/Linux y Solaris).
ncluye, entre otros, aplicaciones como el Apache, el MySQL, el intrprete
PHP, el OpenSSL, el phpMyAdmin, el Mercury Mail Transport System y el
FileZilla FTP Server.
El primer que hacemos es descargarnos el instalador. Os explicar la
instalacin para WNDOWS. Nos damos cuenta de que la versin para
WNDOWS supera los 30 MB, as que tened paciencia los que no dispongan
de conexin rpida a nternet o bajaos el WAMP Server o el EasyPHP (al final
del artculo).
Una vez bajado el ejecutable, lo abrimos y vemos que nos pregunta por el
idioma en que queremos realizar la instalacin (hay 11, uno de ellos el
espaol).
Despus de esto, nos dan la bienvenida al asistente de instalacin i, al
presionar sobre Siguiente, nos preguntan el directorio sobre el cual queremos
realizar la instalacin.
El asistente nos da la bienvenida.
Especificamos el directorio de instalacin.
Si la instalacin se produce sin problemas, presionamos sobre Acabar y el
XAMPP ya estar listo.
Proceso de instalacin.
La instalacin se ha finalizado.
Si lo ejecutas, podrs visualiar el !"#$$ %o&trol $a&el "pplicatio&,
do&de podrs po&er e& 'u&cio&a(ie&to el "pac)e, el #*S+,, el
-ile.illa * el #ercur*.
!"PP #ontrol Panel.
Tan solo por tener activado el Apache, puedes acceder al http://localhost,
donde podrs ver si se ha instalado correctamente el servidor local.
Localhost por defecto de !"PP.
"u&/ue lo puedes eli(i&ar, el local)ost por de'ecto de !"#$$ puede
ser (u* 0til1 des de all2 puedes acceder a todas las )erra(ie&tas, *
ade(s puedes ver cul es el estado de este * sus a3ujeros de
se3uridad.
Otros pa0uetes1
Adems del XAMPP, hay otros paquetes de instalacin del servidor local. No
os quedis tan solo con esto, probar ne tantos como podis. Aqu os dejo dos:
EasyPHP
EasyPHP contiene el mnimo para poder trabajar bien: un servidor web
(Apache), el intrprete PHP y el MySQL. La ltima versin est disponible en
espaol (y en 27 lenguas ms) y tan solo ocupa 7 MB la aplicacin y 144 KB
todo el conjunto de idiomas. An as, la ltima versin es muy antiguas y les
versiones del Apache y el PHP estn muy desfasadas (Apache 1.x y PHP4),
para el que si te quieres introducir en programacin orientada a objectos te
recomiendo seguir leyendo.
$!"P %erver
WAMP es el acrnimo de Windows Apache MySQL PHP. Es bastante ms
completo, ya que incorpora el PHP5, el Apache 2 y el MySQL 5. No dispone
de ms idiomas que no sean el ingls o el francs y ocupa unos 17 MB.
Comentarios
Para que en futuras revisiones a tu cdigo por tu parte y sobretodo por parte
de otros programadores este cdigo 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 cdigo ser mucho mas sencillo de comprender y a su vez
de modificar, corregir, ampliar...
Los comentarios que soporta PHP sn los de C, C++ y los del shell de Unix,
asi podemos usar // y /* */ para comentarios y comentarios multilinea
respectivamente como haramos en C:

000
001
002
003
004
005
006
<?
echo 'Esto se ve';
// esto no se ve
echo '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 ve
echo 'pero esto si';
?>
Maximizar Seleccionar PHP

Tendremos cuidado con no poner un comentario multilnea 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.
Variables
Una variable es un nombre que contiene unos determinados datos, ya sean
de texto o numricos, 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 nmeros indiferentemente ( ya hablaremos de esto ms
adelante ). Vamos a ver un ejemplo de uso de variables:

000
001
002
003
004
005
<?
$miVariable = 'Hola ';
$miVariable2 = 33;
// mprimimos Hola 33
echo $miVariable.$miVariable2;
?>
Maximizar Seleccionar PHP

Como vemos, asignamos valor a una variable con el operador de igualdad (4),
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";
// mprimimos Hola
echo $miVariable;
?>
Maximizar Seleccionar PHP

Para que una variable sea accesible desde cualquier parte de nuestro script
php, la definiremos cmo 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
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 funcin de info de
PHP:

000
001
002
<?
phpinfo();
?>
Maximizar Seleccionar PHP

Estas sn las variables que usaremos ms comunmente y que probablemente
nuestro servidor tendra correctamente habilitadas:
1 $S5675689"#5
Cuando imprimimos a nuestros servido la variable $S5675689"#5 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
saldra :::.pro3ra(acio&:e;.&et
2 $S567568S<-=>"65
En este caso nos saldria el servidor que andamos usando si usamos el S o
el apache tal version.
3 $?<%@#59=86<<=
En 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 $A==$865-5656
Haciendo referers queremos decir que nos dira de donde procede la persona
que visita nuestra web, es decir , de donde viene.
5 $A==$8@S568"B59=
Como 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,nternet Explorer,etc...
6 $65#<=58"??6
Esta variable nos puede ser muy util por un motivo muy concreto, Cuantas
veces hemos pensado quiero saber la P del visitante que nos esta visitando?
Pues esta misma variable es la que nos ayuda a esto
7 $S567568"?#C9
Simplemente nos devolver el email de configuracion del servidor donde esta
alojado el script PHP.
8 $65+@5S=8#5=A<?
Si imprimimos esta variable nos devolvera el tipo de peticin que usamos para
acceder a la pagina si fue con POST o con GET
9 $A==$8"%%5$=
Los tipos de archivos que el visitante puede recibir de este servidor con el
navegador actual
10 $65#<=58$<6=
Como 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
Constantes
Una 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 de'i&e:

000
001
002
003
<?
define ('miConstante','valor de mi constante');
echo miConstante;
?>
Maximizar Seleccionar PHP

Existe otra funcion, llamada de'i&ed 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 existe
echo $definida;
?>
Maximizar Seleccionar 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 sera el esperado, en ese caso usaremos
la funcion co&sta&t 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 polmico, 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 mgicas, estas son:
Constantes micas
Existen unas constantes llamadas magicas que son accesibles para cualquier
script PHP, estas nos proporcionan informacin sobre el script que depende
del lugar en el que las usemos:
88-C,588 - Contiene el nombre y la ruta del archivo que se est ejecutando
88,C9588 - Contiene la lnea que se est ejecutando en ese momento exacto
del fichero actual
88-@9%=C<988 - Aadida en la versin 4.3 de PHP, contiene el nombre de la
funcin que se est ejecutando actualmente
88%,"SS88 - Aadida tambien en la versin 4.3, contiene el nombre de la
clase que se ejecuta actualmente
88#5=A<?88 - Aadida el la versin 5, contiene el nombre del mtodo actual
Veamos un ejemplo de uso de estas constantes:[cdigo]<?
echo "Ejecutando la lnea ".__LNE__;
?>[/cdigo]Ntese que estas constantes tienen dos barras de subrayado
delante y dos detras del nombre cada una.
Tipos de datos en PHP
PHP es un lenguaje de los denominados de tipo dinmico, lo que significa que
una misma variable puede tener tipos ( numero, texto, vector... ) diferentes en
distintos momentos. Por esta razn, no soporta la definicin de tipos en la
declaracin 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 aos";
// Si juntamos las variables $var1 y $var2, obtenemos un texto
$var3 = $var1 . $var2; // "39 aos"
// Si en cambio las sumamos obtendremos un nmero
$var3 = $var1 + $var2; // 12 ( 3 + 9)
?>
Maximizar Seleccionar PHP

Podemos forzar un tipo determinado, con la funcin settype o ente parntesis
delante de la variable uno de los siguientes tipos de datos:
ArribaTabla de contenido
boolean - Lgico
integer - Entero
float - Decimal
string - Cadena de caracteres
null - vaco
array - vector
object Objeto
boolean 2 #!ico
Puede contener 2 valores True o False. Al usarlo cmo entero su valor puede
ser 1 ( True ) o 0 ( False ).
Un ejemplo tpico de lgico es el resultado de una comparacin:

000
001
002
<?php
$var1= 1 != 2 ; // $var1 es true
?>
Maximizar Seleccionar PHP

inteer 2 "ntero
Puede contener enteros ( sin decimales ) positivos y negativos, se pueden
escribir en notacin octal, decimal y hexadcimal:

000
001
002
003
004
<?php
$var1 = 027; // Notacin octal ( 23 en decimal )
$var1 = 23; // Notacin decimal
$var1 = 0x17; // Notacin hexadecimal ( 23 en decimal )
?>
Maximizar Seleccionar PHP

Si lo utilizamos cmo lgico su valor es False si es 0 o True en cualquier otro
caso.
float 2 +ecimal
En versiones anteriores a la 4.2.0 de PHP se les llamaba double, contienen
nmeros decimales positivos o negativos. Si lo usamos cmo entero, su valor
se redondea a la baja ( truncamiento ).
strin 2 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 lnea (en el cdigo, no en la presentacin de la pg.)
\r - Retorno de carro (Enter)
\t - Tabulador
\$ - Dlar
La existencia de un carcter especial \$ para el dlar, es porque en el interior
de comillas dobles podemos usar variables. Si vamos a acceder a elementos
de un vector, lo agruparemos con { y } detrs 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 nmeros ( enteros o decimales ) se utilizar
cmo nmero hasta el primer carcter incorrecto ( ver primer ejemplo del
captulo ). Si lo mezclamos con lgicos ser False cuando la cadena est
vaca.
null 2 'aco
No tiene valor, se comporta como cadena vaca, cero o false;
array 2 'ector
Los veremos en profundidad en el prximo captulo vectores en PHP.
ob)ect 2 Ob)eto
Los veremos ms adelante en el captulo PHP orientado a objetos
Vectores en PHP
Los vectores o array ( a veces mal llamados arreglos ) son listas ordenadas
de elementos. Para definir un vector en PHP utilizamos la funcin 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
estarn identificados por un nmero ( 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" )
;
?>
Maximizar Seleccionar PHP

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

000
001
002
003
<?php
echo $vector[0];// elemento 1
echo $vector['clave 1'];// elemento 1
?>
Maximizar Seleccionar PHP

Podemos borrar un elemento de una variable con la funcin 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" );
// Aadimos "elemento 3" al final
$vector[] = "elemento 3";
// Aadimos 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 continuacin:
Array ( [0] => elemento 1 [1] => elemento 2 [2] => elemento 3 [3] => elemento N )
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 operador se llama
operando, y segn el nmero de operandos de que disponga un operador
estaremos hablando de un operador unario (un operando), binario (dos
operandos), ternario...
Los operadores no los utilizamos aisladamente, sino que solemos utilizar mas
de uno en una misma expresin 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
3ormas de preferencia
Las operaciones no se realizarn de izquierda a derecha sino que se
realizarn 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) @
* / %
+ - .
<< >>
< <= > >=
== != === !==
&
^
|
&&
||
? :
= += -= *= /= .= %= &= |= ^= <<= >>=
print
and
xor
or
,
Para cambiar el orden en que se realizan las operaciones utilizaremos los
parntesis (), consiguiendo que se realicen primero las operaciones del
interior del parntesis 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 multiplicacin es l signo asterisco ( * )
$a = 2 + 4 * 2; // El resultado es 10
$a = (2+4) * 2; // el resultado es 12
?>
Maximizar Seleccionar PHP
Tipos de operadores
PHP dispone de una gran cantidad de operadores que podramos organizar
en las siguientes categoras:
Operadores de Aritmtica
Operadores de Asignacin
Operadores Bit a Bit
Operadores de Comparacin
Operadores de Control de Errores
Operadores de ejecucin
Operadores de ncremento
Operadores de Lgica
Operadores de Cadena
Operadores de Matrices
Operadores de Tipo
Estos operadores en su mayor parte sn para trabajar con valores numricos,
a excepcin de los 4 ltimos de la lista anterior, y se explicaran uno a uno en
el curso de operadores PH
Operadores de Aritmtica
Los operadores de aritmtica sn los operadores bsicos para el trabajo con
nmeros, 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 aritmticos existentes son los siguientes:
"diciD& EFG - Devuelve la suma de los dos operandos que recibe el operador.
000
001
002
<?
$a = 1 + 2; // $a toma valor 3
?>
Maximizar Seleccionar PHP
Su;stracciD& EHG - Devuelve la diferencia entre el primer y el segundo
operando.
#ultiplicaciD& EIG - Devuelve el producto de los operandos.
?ivisiD& EJG - Devuelve el cociente en valor flotante de los operandos.
#Ddulo EKG - Devuelve el resto de dividir el primer operando entre el
segundo.Este operador es muy til para saber si un nmero es mltiple de
otro
000
001
002
<?
$a = 3 % 2; // $a toma valor 1
?>
Maximizar Seleccionar PHP
.
Al tratar de operar matemticamente con cadenas u otros tipos de datos, PHP
intentar transformar a enteros y luego realizar las operaciones deseadas.
Operadores de Asinaci!n
Los operadores de asignacin, sn aquellos que nos permiten modificar el
valor de una variable, el operador de asignacin bsico 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 aritmtica, 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!n
Los operadores de comparacin son operadores en su mayora binarios que
nos permiten comparar variables devolviendo un valor booleano a 1 (TRUE) si
se cumple la condicin que expresan y a 0 (FALSE) en el caso contrario.
Los operadores binarios de comparacin son:
C3ual (==) - Devuelve 1 si los operandos son iguales aunque sean de tipo
distinto.
CdL&tico (===) - Devuelve 1 si los operandos son iguales y del mismo tipo.
?i'ere&te (!= o <>) - Devuelve 1 si los operandos sn distintos.
9o idL&ticos (!==) - Devuelve 1 si son distintos o de tipo diferente.
#e&or /ue (<) - Devuelve 1 si el primer operando es mas pequeo que el
segundo.
#a*or /ue (>) - Devuelve 1 si el primer operando es mas grande que el
segundo.
#e&or o i3ual /ue (<=) - Devuelve 1 si el primer operando es mas pequeo o
igual que el segundo.
#a*or o i3ual /ue (>=) - Devuelve 1 si el primer operando es mas grande o
igual que el segundo.
Estos operadores se usan mayormente como condicin para las estructuras
de control.
El operador de comparacin ternario es el '?:', este operador, evala una
condicin, que puede ser una operacin de comparacin 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 "rrores
Para evitar que se muestre en pgina 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 pgina de resultado un error prodcido por la ejecucin del
cdigo PHP en una lnea determinada:

000
001
002
003
<?php
echo 'Hola mundo';
@ funcionquenoexiste (); // Esto debera producir un error
?>
Maximizar Seleccionar PHP

Encontrars mas informacion sobre este operador y otros mtodos para evitar
errores eneste artculo del usuario include.
Operadores de Incremento
Los operadores de incremento (++) permiten aumentar en una unidad el valor
de una variable numrica, 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 segn el operador.
Estos operadores puede& po&erse dela&te del opera&do, e& ese caso la
operaciD& devolver el valor u&a ve operado, o despuLs, caso e& el /ue
la operaciD& devolver el valor a&tes de operar:

000
001
002
003
004
<?
$variable = 2;
echo $variable++; // mprime 2 y luego incrementa
echo ++$variable; // incrementa y luego imprime 4
?>
Maximizar Seleccionar PHP

Este tipo de operador se utiliza mucho para el tercer parmetro de un bucle
for.
Operadores de #oica
Los operadores de Lgica nos permiten crear expresiones mas complejas
para evaluar nuestras estructuras de control, permitiendonos enlazar
varias operaciones de comparacin con los diferentes operadores booleanos.
Estos operadores sn 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 lgicos binarios sn:
M ENN o a&dG - Devuelve 1 si ambos operandos sn 1
< EOO o orG - Devuelve 1 si algn operando es 1
< ePclusivo EPorG - Devuelve 1 si solo 1 operando es 1
Veamos un ejemplo para ver como funcionan estos operadores:

000
001
002
<?
echo ((1 == 1)&&(2 != 2)); // Devuelve 0
?>
Maximizar Seleccionar PHP

Existe otro operador lgico, en este caso unario, que es el operador 9o (!),
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 Cadena
En esta categora 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 asignacin sobre concatenacin (.=), 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
004
<?
$html = "<html>\n";
$html .= "<head>\n";
$html .= "<title>Mi pgina</title>\n";
005
006
007
008
009
010
011
$html .= "</head>\n";
$html .= "<body>\n";
$html .= "Este es el contenido de mi\n";
$html .= "preciosa pgina\n";
$html .= "</body>\n";
$html .= "</html>\n";
echo $html;
?>
Maximizar Seleccionar PHP

Como veis, hemos almacenado una pgina HTML en la variable $)t(l de
forma limpia y bien presentada para finalmente imprimir el resultado.
"structuras de control
Porque los scripts PHP no son lineales, debemos poder controlar la ejecucion
de una accin 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 sn:
if
while
do..while
for
foreach
switch
Y se explicarn una a una en el curso de estructuras de control
Condicional if
La estructura i' nos permite ejecutar un bloque de acciones si se cumple una
determinada condicin, de lo contrario nos permite ejecutar otro bloque de
acciones identificado por la sentencia else, si el resultado de la condicin es
distinto de 0, se ejecutarn 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';
}
?>
Maximizar Seleccionar PHP

La condicin, se escribe entre parntesis a continuacin de la palabra if, y
esta formada por operaciones PHP, sobre todo por operaciones lgicas y de
comparacin.
Hay otra sentencia que usamos a menudo para unir ms de un condicional if,
es la sentencia elsei', sta nos permite dar otra condicin por si no se ha
cumplido la primera, despus 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.
$ucle %hile
Esta instruccion nos permite efectuar un bloque de acciones mientras se
cumpla una determinada condicion, cuando deje de cumplirse, se continuar
ejecutando el resto del cdigo PHP, la condicion se cumple mientras no de
resultado 0 y esta formada poroperaciones PHP, sobretodo por operaciones
lgicas y de comparacion.

000
001
002
003
004
005
006
<?
$var1 = 0;
while($var1 < 10){
echo "\$var1 = $var1<br>";
$var1++; // ncrementamos la variable
}
?>
Maximizar Seleccionar PHP

Hay que tener cuidado con este tipo de bucle, en el interior del bloque de
acciones siempre se debe modificar algun parametro de la condicion para que
esta acabe cumpliendose, de lo contrario crearemos un bucle infinito.
$ucle do %hile
El bucle do :)ile es en su esencia igual al bucle while con la diferncia 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 :)ile 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, veris cmo 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 pequeo que 10.
$ucle for
El bucle 'or nos permite ejecutar un determinado bloque de acciones un
nmero determinado de veces, a esta estructura le pasaremos tres
parmetros que separaremos por punto y coma (;) y que sern:
accio& i&icial - nicializa la variable de control del bucle
co&dicio& - Se evalua en cada iteracion, cuando devuelve 0 o FALSE se
continua ejecutando el cdigo de despus del for
accio& - Se ejecuta en cada bucle y debe modificar la variable de la condicion
Vamos 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 4 0, entonces se ejecutar el
interior del bucle y $var1FF hasta que se cumpla $var1 Q 10.
$ucle 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 expresin 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 =>
"l ciclo s%itch
En muchas ocasiones, programando en PHP, nos encontramos que queremos
hacer una u otra accin dependiendo del valor de una variable, en este caso,
podramos usar una sucesin de condicionales if, pero el cdigo resultante
ser confuso y difcil de modificar en el futuro.
Pero PHP y en general todos los lenguajes de programacin de un nivel mas
o menos alto, dispone de un ciclo que nos ir como anillo al dedo en este
caso, el ciclo s:itc)que 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 binria";
}
?>
Maximizar Seleccionar PHP

Este cdigo 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 nmero decimal.
Vemos que cada valor se relaciona con un caso, en el interior del cual
realizamos las acciones requeridas y una instruccin llamada ;reaR, de lo
contrario, se seguiran ejecutando las instrucciones de los dems casos.
Finalmente encontramos un caso especial llamado de'ault, este caso se
activar si no se ha activado ninguno de los casos anteriores.
A continuacin podemos ver y ejecutar un ejemplo de ciclo switch
Paso de 'ariables por -4#
Vamos a ver un tema muy sencillo del trabajo con PHP pero bsico para
cualquier aplicacin web, para los que ya conocis el trabajo con variables
pasadas por url es posible que os ponga un poco al da sobre este tipo de
tarea.
El tema consiste en acceder a una direccin del tipo pa3i&a.p)pS
varia;le14valor1Nvaria;le24valor2 y que el intrprete PHP acceda a los
valores pasados en la direccin de la pgina para configurar la pgina 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 pgina dependiendo de un
parmetro 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 cdigo, lee el parmetro llamado mensaje, la manera de hacerlo es a
partir de$8B5=TU(e&sajeUV, asi como si hubiera otro parmetro
(varia;les.p)pS(e&saje41Nusuario4343) accederamos a el
desde $8B5=TUusuarioUV.
A partir de ah, miramos si esta definida la variable para ver si esta pasada
con la funcinisset, luego hacemos un ciclo switch para mostrar un u otro
mensaje segn el valor de la variable pasada.
El ejemplo, nos mostrar un mensaje distinto dependiendo de si mensaje vale
0, vale 1,vale 2, tiene otro valor o no esta definido.
9ota1
Debemos observar que segn que parmetros pasemos por URL algunos
buscadores cmo google, no agregaran nuestra url, por ejemplo, google no
indexa pginas con la variable id.
#as funciones
En toda aplicacin mas o menos compleja hay bloques de acciones que
realizamos mas de una vez y PHP no es una excepcin, 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 funcin utilizamos la expresin 'u&ctio& seguida del
nombre que queremos dar a la funcin, a continuacin y entre parntesis, los
argumentos que recibe la funcin y finalmente y entre corchetes el cdigo 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
#lamando a una funcion
Una vez creada la funcin, la debemos llamar como una funcin prefabricada
de PHP, por su nombre pasando los argumentos que necesita. Veamos un
ejemplo:

000
001
002
<?
miFuncion("hola", "pepe");
?>
Maximizar Seleccionar PHP
"l 'alor de retorno
Es interesante saber que las funciones pueden devolver un valor al lugar
donde las llamamos, esto se hace gracias a la instruccin retur& 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 formularios
Al enviar un formulario HTML, los datos sn enviados al servidor Web y este
es capaz de procesarlos y realizar un seguido de acciones en funcin de los
datos introducidos, los datos del formulario se envan utilizando uno de los
siguientes mtodos, dependiendo del(et)od del formulario:
B5= - Los datos del formulario sn enviados al servidor a travs de los
encabezados HTTP, estos datos sn visibles en la URL y en los logs del
servidor, es poco recomendado para datos de usuario.
$<S= - Los datos del formulario sn enviados al servidor como datos de la
peticin, no se recomienda para pasar parametros de modularizacin,
paginacin...
Estos datos, podemos recojerlos desde nuestra aplicacin PHP utilizando
los arrays superglobales, &'(E) y &'P*%) de manera respectiva.
De esta manera, cuando el usuario rellena un campo cmo 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 &'P*%)+,telefono,-,
que podemos mostrar por ejemplo con un ec)o:

000
001
002
<?php
echo $_POST['telefono'];
?>
Maximizar Seleccionar PHP

Exactamente igual pasar cuando el mtodo especificado sea GET (siempre,
tambien con POST los escribiremos en maysculas).
Puedes ver algunos ejemplos usando el mtodo GET a continuacin.
-tili5aci!n bsica de formularios
Utilizar formularios es una forma de dinamizar nuestro sitio. Sus bases son
muy sencillas, pero puede llegar a ser muy potente tambin. Requiere tanto
conocimientos de HTML como de PHP, ambos en niveles bsicos. Este
artculo 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 'ariables a la -4#
En este paso utilizaremos exclusivamente HTML para crear el formulario.
Podemos colocar el cdigo en cualquier archivo, un .html est bien.
Empezamos con el cdigo del formulario:

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

5l par(etro U&a(eU i&dica el &o(;re del 'or(ulario; Uactio&U el
arc)ivo al cual se e&viar los datos del 'or(ulario para ser
procesados, e& este caso U(icrosa&o.p)pU, pero puede ser cual/uier
otro co& ePte&siD& .p)p; * U(et)odU es la 'or(a de e&viar estos
datos, e& este caso utiliare(os U3etU para e&viarlos por la @6,.
@&a ve a;ierto el 'or(ulario, pode(os colocar al30& i&put para /ue
i&3rese& u& tePto, por eje(plo el &o(;re de la perso&a1



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

Ese cdigo 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
vaco.
Luego, para darle ms dinamismo an, colocaremos un select, donde podrn
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 aos</option>
<option value="19" selected="selected">19 aos</option>
<option value="20">20 aos</option>
<option value="21">21 aos</option>
</select>
Maximizar Seleccionar XML

El nombre de la variable que incluye este dato, ser "edad", como lo
indicamos en el parmetro "name". ncluimos cuatro opciones para elegir su
edad, se puede aadir tantas como sea necesario, simplemente agregando
otro "<option value="22">22 aos</option". Al option que le agreguemos el
parmetro "selected="selected" ser el que aparecer inicialmente
seleccionado.
El visitante ya ingres su nombre y edad, pero an no tenemos esos datos,
permanecen en su navegador. As que le daremos la posibilidad de que nos
enve 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 botn para
enviar el formulario. En vez de "Enviar", se puede poner cualquier otro texto.
Slo falta cerrar el formulario:

000
</form>
Maximizar Seleccionar XML

Veamos como nos qued el formulario:

000
001
002
003
004
005
006
<form name="microsano" action="microsano.php" method="get">
<input type="text" name="nombre" value="" />
<select name="edad">
<option value="18">18 aos</option>
<option value="19" selected="selected">19 aos</option>
007
008
009
<option value="20">20 aos</option>
<option value="21">21 aos</option>
</select>
<input name="submit" type="submit" value="Enviar" />
</form>
Maximizar Seleccionar XML

@& cDdi3o (u* si(ple /ue le per(itir al visita&te e&viar&os su
i&'or(aciD&. C&clu2(os el cDdi3o e& u& arc)ivo .)t(l, por eje(plo
lla(ado U'or(ulario.)t(lU * lo 3uarda(os.
Obteniendo 'ariables de la -4#
Ahora viene la parte con PHP, en la cual obtendremos las variables de la URL
y las utilizaremos para imprimirlas en la pgina.
Creamos un archivo .php, con el nombre que le indicamos al parmetro
"action" del formulario, como recordarn 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; analizndolo: 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 pgina mediante PHP.
Con el siguiente cdigo 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 cules valores obtener de la URL y los pasaremos a variables
comunes para facilitar su manejo:


000
001
<? $_GET['nombre']=$nombre; ?>
<? $_GET['edad']=$edad; ?>
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"; ?> aos.
Maximizar Seleccionar PHP

El resultado en este caso sera: Hola Philippe, tu tienes 18 aos.
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"; ?> aos.
Maximizar Seleccionar PHP
Conclusiones
Como habrn notado, es muy fcil pasar variables por la url para imprimirlas
en una pgina. Adems del ejemplo, se puede jugar mucho con formularios y
hacer herramientas tiles
Coo&ies en PHP
Para usar cookies en PHP, tenemos que tener en cuenta que la cookie se
envia antes de enviar la pgina, es decir, que enviaremos la cookie al
navegador antes de enviar ningn caracter de la pgina o recibiremos un
error.
La funcin que usaremos para enviar una cookie es setcooRie, que funciona
de la siguiente manera:

000
001
002
<?php
setcookie (nombre,valor,fecha);
?>
Maximizar Seleccionar PHP

Donde 'nombre', ser un identificador de la cookie que contendr el texto
indicado por 'valor' y que tendr vigncia hasta 'fecha'.
Vamos a hacer un ejemplo que incrementara el valor de una cookie cada vez
que se visite cierta pgina:

000
001
002
003
004
<?php
$visitas = $_COOKE["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 pgina y le sumamos 1:

000
001
002
<?
$visitas = $_COOKE["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


"n'io de "mails
En este articulo aprenderemos a enviar emails (correo electrnico) de una
forma compleja, gracias a mis experiencias.
Antes de nada recordaremos la chuleta:

000
001
002
<?
mail("destinatario","asunto","cuerpo","adicional");
?>
Maximizar Seleccionar PHP

Un ejemplo:

0
0
0
0
0
1
0
0
2
<?
mail("webmaster@programacionweb.net","Ejemplo de envio","Este email ha sido enviado a:\n\n\tw
ebmaster@programacionweb.net","Reply to: zarator@programacionweb.net");
?>
Maximizar Seleccionar PHP

Examinaremos esto ... el mensaje se enviara a:
Destinatario: informacion@gtvfilm.net23.net
Asunto: Ejemplo de envo
Responder a: leonardoonline1@gmail.com
Cuerpo:
Este email ha sido enviado a:
informacin@gtvfilm.net23.net
Ahora veremos con detalle las partes de los emails:
?esti&atario
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 <elpepe@hotmail.com>", [...] o
mail("elpepe@hotmail.com", [...] de las dos formas se pueden enviar.
"su&to
El asunto de un mensaje es una introduccin 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) .
%uerpo del #e&saje o %o&te&ido
En el contenido del mensaje escribirs el motivo del email. No es obligatorio,
pero por lgica deberas 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 lnea de texto .. es decir no se ejecutar nada solo ser
texto, menos \x. Hay tres cdigos \t, \n y \r (esto tambin se ejecuta en alertas
html).
\n = salto de lnea
\t = sangra
\r = vuelta de lnea
9ota1
En algunos programas o servidores se confunde \r con \n (salto de linea).
Si es )t(l1
Aqu se ejecuta todo tipo de html. Si el receptor del email usa hotmail debers
saber que este modifica los cdigos 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 cdigos.
Este tipo de mensaje puede traerte problemas, ya hackers utilizan este
mtodo de email para que rescribas tu contrasea hacindose pasar por un
error. Puede ocultarse bien as que te recomiendo que no hagas mucho caso.
Adicionales
Estos caractersticas se aaden despus 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

Documntate para saber los tipos de caractersticas de email adicionales.
Si utilizas tripod.lycos.es como alojamiento te ser imposible cambiarle el from
lo cual seria tucuenta@lycos.es 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 webmaster@hotmail.com
pero no webmaster <webmaster@hotmail.com>.
Lo otro de la from script: pagina.php no podrs 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, adems te vendrn otros datos interesantes del
mensaje.
Una ancdota fue de que a un colega le colaron un virus desde un email que
incitaba a descargarselo. Observe que despus de ejecutarse el virus llegaron
2 mensajes mas con virus uno de ellos deca que haba un nuevo virus que te
descargaras sobreelvirus.pif (que tambin era virus) y en el siguiente deca
que haba 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 extensin *.com es un archivo MS-DOS y por tanto
puede ser virus.
Como no tenia accionada la opcin completa del mensaje la accione y vi que
en lo adicional venia dos cosas como recived from: recived: y salan 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 habis dado cuenta no existen mensajes annimos, "nadie" puede
enviar "annimamente". Gente avanzada en programacin 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:

0
0
0
0
0
1
0
0
2
0
0
3
0
0
4
0
0
5
0
0
6
0
0
7
0
0
8
0
0
9
0
1
0
0
<?php
/*EMAL FORM Por Jorge Luis Martinez M
http://misCodigos.jlmnetwork.com*/

$ip = $REMOTE_ADDR;
$referido = getenv("HTTP_REFERER");

//Limite, Se Refiere Al Tamao Maximo Que Puede Tener Un Archivo, Este Numer
o Se Da En Bytes.
$limite = 80000;

if(!isset($HTTP_POST_VARS["email"]))
{
?>
<SCRPT LANGUAGE="javascript">
alertE"Debe ntroducir El Email Al Que Desea Enviar La nformacion.\n\nServicio De Formularios\
nhttp://misCodigos.jlmnetwork.com/"G;
history.goEH1G;
</SCRPT>
<?
}
else
{

$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";
}
1
1
0
1
2
0
1
3
0
1
4
0
1
5
0
1
6
0
1
7
0
1
8
0
1
9
0
2
0
0
2
1
0
2
2
0
2
3
0
2
4
0
2
5
0
2
6
0
2
7
0
2
8
0
2
9
0
3
0
0
}
$mensaje .= "\n";
$mensaje .= "nformacion Adicional:\n\n";
$mensaje .= "Enviado Desde: ".$referido."\n";
$mensaje .= "P: ".$ip;
$mensaje .= "\n\nEnvio De Formularios Con Archivos Adjuntos, Un Servicio Gratuito De http://misC
odigos.jlmnetwork.com/";

$cabeceras = "From: misCodigos <miscodigos@jlmnetwork.com>\n";
$cabeceras .= "Reply-To: $email\n";

if($archivo != "none")
{
if($archivo_size > $limite)
{
?>
<SCRPT 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);
</SCRPT>
<?
}
else
{
$file = fopen($archivo, "r");
$contenido = fread($file, $archivo_size);
$encoded_attach = chunk_split(base64_encode($contenido));
fclose($file);

$cabeceras .= "MME-version: 1.0\n";
$cabeceras .= "Content-type: multipart/mixed; ";
$cabeceras .= "boundary=\"Message-Boundary\"\n";
$cabeceras .= "Content-transfer-encoding: 7BT\n";
$cabeceras .= "X-attachments: $archivo_name";

$body_top = "--Message-Boundary\n";
$body_top .= "Content-type: text/plain; charset=US-ASC\n";
$body_top .= "Content-transfer-encoding: 7BT\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);
}
}
else
{
mail($email,$asunto,$mensaje,$cabeceras);
}
?>
<SCRPT LANGUAGE="javascript">
location.href = '<? echo $redireccion; ?>';
3
1
0
3
2
0
3
3
0
3
4
0
3
5
0
3
6
0
3
7
0
3
8
0
3
9
0
4
0
0
4
1
0
4
2
0
4
3
0
4
4
0
4
5
0
4
6
0
4
7
0
4
8
0
4
9
0
5
0
0
</SCRPT>
<?
}
?>
Maximizar Seleccionar SCRPT,XML,PHP
5
1
0
5
2
0
5
3
0
5
4
0
5
5
0
5
6
0
5
7
0
5
8
0
5
9
0
6
0
0
6
1
0
6
2
0
6
3
0
6
4
0
6
5
0
6
6
0
6
7
0
6
8
0
6
9
0
7
0
0
7
1
0
7
2
0
7
3
0
7
4
0
7
5
0
7
6
0
7
7
0
7
8
0
7
9
0
8
0
0
8
1
0
8
2
0
8
3
0
8
4
0
8
5
0
8
6
0
8
7
0
8
8
0
8
9
0
9
0
0
9
1
0
9
2

En definitiva te aconsejo que utilices a partir de ahora mas esta funcin en tu
web, puedes utilizar un sistema de listas de correo en tu web y utilizar lo
aprendido aqu.
(esiones PHP
tilizaremos sesiones para almacenar una serie de variables en el servidor
relacionndolas ( grcias a una variable pasada por cookie o por URL ) con un
usuario concreto para que estn disponibles en diferentes pginas de nuestro
sitio web.
Una vez almacenada una variable de sessin, podremos leerla desde todas
las pginas de nuestra web mientras la sesin no se destruya.
Tabla de contenido
Guardar una variable
Leer una variable guardada
Borrar una variable
*uardar una 'ariable
El soporte para sesiones de PHP nos permite inicializar facilmente una sesin
utilizandosessio&8start y gracias al vector superglobal $_SESSON,
podremos trabajar con sesiones como si de cualquier otro vector se tratara:

000
001
002
003
004
005
<?php
// nicializamos sesion
session_start();
// Guardamos una variable
$_SESSON['nombre'] = 'Fernando Daz';
?>
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 delsessio&8start, el siguiente ejemplo nos dar error por el
espacio de la lnea 0:

000
001
002
003
<?php
// nicializamos sesion
session_start();
?>
Maximizar Seleccionar PHP

#eer una 'ariable uardada
Si hemos guardado una sesin, podremos acceder a sus variables desde
todas las pginas PHP de nuestra web uando sean visitadas por el mismo
usuario.
Esto lo haremos simplemente inicializando la sesin y con el mismo vector
$_SESSON, para ver si existe una variable de sesin determinada,
usaremos isset cmo con cualquier otra variable.:

000
001
002
003
004
005
006
007
008
009
010
011
<?php
// nicializamos sesion
session_start();
// Comprovamos si existe la variable
if ( isset ( $_SESSON['nombre'] ) ) {
// Si existe
echo $_SESSON['nombre'];
} else {
// Si no existe
echo 'desconocido';
}
?>
Maximizar Seleccionar PHP
$orrar una 'ariable
Podemos borrar una variable de sesin usando la funcin u&set, pero
adems podemos eliminar la sesin con sessio&8destro*:

000
001
002
003
004
005
006
007
<?php
// nicializamos sesion
session_start();
// Borramos la variable
unset ( $_SESSON['nombre'] ) {
// Borramos toda la sesion
session_destroy();
?>
Maximizar Seleccionar PHP

PHP orientado a ob)etos
Cuando a principios de los aos 80 se empez a experimentar la
Programacin Orientada a Objetos (POO) esta ha ido suplantando la
programacin tradicional, por esta razn y aunque PHP no sea orientado a
objetos, PHP incorpora sus principales caractersticas para que podamos
trabajar con clases y objetos.
Tabla de contenido
Clases y Objetos
Mtodos y atributos
Herencia de clases
Constructores y destructores
Encapsulamiento
Clases y Ob)etos
Para entender la programacin orientada a objetos debemos primero entender
lo que es una clase, pero primero diremos que un objeto es un conjunto de
atributos y mtodos agrupados.
Una clase es un grupo de objetos que comparten los mismos atributos y
mtodos, veamos como podemos crear una clase llamada .magen:

000
001
002
003
004
<?
class magen {
// Aqu el cdigo de la clase
}
?>
Maximizar Seleccionar PHP
/todos y atributos
Esta clase contendr un seguido de atributos, que definiremos con la palabra
reservadavar, y mtodos, que programaremos como funciones
usando 'u&ctio&.
Para crear un objeto de tipo imagen se ejecutar el constructor de la imagen
que ser el mtodo con el mismo nombre que la clase o en PHP5 el mtodo
llamado __construct(), veamos un ejemplo:

000
001
002
003
004
005
006
007
008
<?
class magen {
var $src; // Estos sn los atributos
var $border; // de los objetos asociados
// Esta funcion es el constructor
function magen($src,$border) {
$this->src=$src;
$this->border=$border;
}
009
010
011
012
}
// Creamos un objeto imagen
$logo = new magen("logo.gif",3);
?>
Maximizar Seleccionar PHP

Tambin podemos crear mas mtodos ademas del constructor, vamos a
completar el ejemplo con un mtodo 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 magen {
var $src;
var $border;
function magen($src,$border) {
$this->src=$src;
$this->border=$border;
}
// Esta funcion es un mtodo de magen
function mprimir() {
echo "<img src=\"";
echo $this->src;
echo "\" border=\"";
echo $this->border;
echo "\">";
}
}
$logo = new magen("logo.gif",3);
// Llamamos el nuevo mtodo
$logo->mprimir();
?>
Maximizar Seleccionar PHP

Puedes ver cmo efectivamente este ejemplo funciona y es un magnifico
ejemplo de cmo nos puede simplificar algo rutinario como la creacin de
mltiples imgenes
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, mantendrn todos los
mtodos y atributos de la clase padre y ademas compartirn los de la clase
derivada.
Vamos a ver cmo podemos definir una subclase de la clase magen definida
en la pagina anterior para imgenes de tamao 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 Banner
class Banner extends magen {
// Esta es la nueva funcion mprimir para banners
function mprimir() {
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'/ y lo imprimiremos:

000
001
002
003
<?
$banner_1 = new Banner("anunciante1.gif",0);
$banner_1->mprimir();
?>
Maximizar Seleccionar PHP

Tener en cuenta que en el cdigo de la subclase falta el cdigo de la clase
magen, 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 magen.
Cuando hacemos .mprimir01 del objeto perteneciente a la base derivada
Banner, se llama al mtodo mprimir de Banner y no al de magen aunque se
llamen igual
Constructores y destructores
Si trabajamos con PHP5, para definir un constructor, usamos el
mtodo 88co&struct, vamos a ver un ejemplo:

000
001
002
003
004
005
006
007
008
<?
class magen {
var $src; // Estos sn los atributos
var $border; // de los objetos asociados
// Esta funcion es el constructor
function __construct($src,$border) {
$this->src=$src;
009
010
011
012
$this->border=$border;
}
}
// Creamos un objeto imagen
$logo = new magen("logo.gif",3);
?>
Maximizar Seleccionar PHP

Ademas tenemos la opcin de crear un destructor que se ejecutar cuando el
objeto va a ser eliminado dela memoria, el constructor se define con el
mtodo 88destruct.
"ncapsulamiento
Este es un concepto nuevo en PHP5, el encapsulamiento permite el uso de
variables y mtodos internos a un objeto que no pueden ser accedidos
internamente, de esta manera existen tres tipos de objetos:
pu;lic - Son accesibles desde todo el cdigo.
protected - Son accesibles desde la clase actual y las clases derivadas.
private - Son accesibles desde la clase actual
Vamos a ver el ejemplo de antes pero con atributos protegidos:

000
001
002
003
004
005
006
007
008
009
010
011
012
<?
class magen {
protected $src; // Estos sn 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 magen("logo.gif",3);
?>
Maximizar Seleccionar PHP

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

000 __clone
Maximizar Seleccionar

y algunas otras opcione
Imae *+, descripci!n y e)emplos
A menudo, cuando estamos programando una aplicacin, 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 grficas al vuelo para
mostrar los datos de forma clara.
Las aplicaciones en PHP, no sn una excepcin, y a menudo nescesitamos
mostrar los datos en forma de grfica, y eso significa crear una imagen
dinmicamente.
mage GD, es una biblioteca de funciones para la creacin y modificacin al
vuelo de imagenes muy potente, que nos permite hacer verdaderas maravillas
como creacin de grficas de quesito en 3D, cambio de tamao de
imagenes y muchas mas aplicaciones todas ellas muy interesantes.
Esta biblioteca, tiene una versin para PHP que podremos instalar facilmente
en nuestro servidor si tenemos permisos de administrador, y que viene
instalada en la mayora de servidores linux del mercado.
La versin para PHP biblioteca contiene una gran cantidad de funciones para
el dibujo y el tratamiento de imagenes que iremos viendo en futuros artculos,
y que nos permiten realizar excelentes reportes visuales de nuestros datos,
como los de los siguientes ejemplos:
Grfica de lineas

*raficas de 0uesitos en 6+
Si disponemos de PHP con GD, podremos disfrutar de la creacin al vuelo de
imagenes, esta poderosa herramienta, nos permite entre muchas otras cosas
la creacin de todo tipo de grficas, de todas ellas, las ms vistosas sn las
grficas de quesitos en 3D que vamos a ver cmo podemos generar.
Para crear una grfica de quesitos, usaremos la funcin i(a3e'illedarc, 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, MG_ARC_PE);

// Enviamos la imagen
header("Content-type: image/png");
imagepng($im);
?>
Maximizar Seleccionar PHP

Veamos al detalle lo que hace la funcin imagefilledarc, esta funcin crea un
arco de color en la imagen, y sus parmetros sn:
i(a3e& - Variable con el recurso imagen
c! - Coordenada X del centro del crculo
cM - Coordenada Y del centro del crculo
! - Tamao horizontal del crculo
M - Tamao vertical del crculo
a&3uloC - Angulo inicial del arco dibujado en grados
a&3ulo- - Angulo final del angulo dibujado
color - Color del arco dibujado
estilo - Usaremos MG_ARC_PE
Ahora, vamos a darle un efecto de sombreado al mismo arco que acabamos
de crear, creando unos arcos ms oscuros debajo suyo:

000
001
002
003
004
005
006
007
008
009
010
011
012
013
<?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, M
014
015
016
017
018
019
020
G_ARC_PE);

// Dibujamos el quesito
imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, MG_ARC_PE);

// 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 grfica de quesitos
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
<?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, MG
_ARC_PE);
imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 45, 145, $verde_oscuro,
MG_ARC_PE);
imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 145, 360, $azul_oscuro,
MG_ARC_PE);
}

025
026
027
028
029
// Dibujamos el quesito
imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, MG_ARC_PE);
imagefilledarc ($im, 100, 100, 200, 175, 45, 145, $verde, MG_ARC_PE);
imagefilledarc ($im, 100, 100, 200, 175, 145, 360, $azul, MG_ARC_PE);

// Enviamos la imagen
header("Content-type: image/png");
imagepng($im);
?>
Maximizar Seleccionar PHP

Y este es nuestro resultado, una magnfica grfica con quesitos:
Ahora solo nos faltar un poco de imaginaci para recojer los valores de la
base de datos, o de donde nos sea ms conveniente.
Creaci!n de una imaen con *+
El primer paso para empezar a trabajar con grficos y image GD, es la
creacin de una imagen, que puede ser en blanco (para hacer una grfica, un
dibujo...) o bien a partir de una imagen existente (para editarla,
redimensionarla...).
Tabla de contenido
Creacin de una imagen en blanco
Cargar una imagen existente
Creaci!n de una imaen en blanco
Para crear una imagen en blanco y poder dibujar sobre ella, usaremos la
funcini(a3ecreate, a la que le indicaremos el tamao de la imagen que
queremos crear, la funcin 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 funcin 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 ()eader), enviamos la imagen al navegador
(i(a3ep&3) y liberamos la memria (i(a3edestro*).
Carar una imaen e7istente
La carga de una imagen existente es mas o menos cmo el caso anterior,
pero en lugar de usar i(a3ecreate, usaremos una funcin de las de la
siguiente lista:
i(a3ecreate'ro(3i' - Crea una imagen a partir de una imagen gif existente
i(a3ecreate'ro(jpe3 - Crea una imagen a partir de una imagen jpeg
existente
i(a3ecreate'ro(jpe3 - Crea una imagen a partir de una imagen png
existente
i(a3ecreate'ro(jpe3 - Crea una imagen a partir de una imagen bmp para
wap existente
i(a3ecreate'ro(3d2, i(a3ecreate'ro(3d2part, i(a3ecreate'ro(3d,
i(a3ecreate'ro(stri&3, i(a3ecreate'ro(P;(, C(a3ecreate'ro(Pp(
Que dependiendo de la versin de GD, estarn 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

-so del color con *+
La utilizacin 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
Utilizacin del color
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 i(a3ecolorallocate y almacenaremos su valor de retorno en una
variable para pasarsela despus como color a las funciones de dibujo,
coloreado...
9ota1
El primer color creado con i(a3ecolorallocate ser utilizado como color de
fondo de la imagen.
Los parametros que pasaremos a la funcion sern 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 imaen
Otra opcin para crear un color consiste en obtener el color de un punto
determinado de la imagen usando i(a3ecolorat con el objeto imagen y las
coordenadas del punto:

000
001
002
003
<?php
$imagen = mageCreateFromPng("manzana.png");
$color = mageColorAt($imagen, 100, 200); // x: 100, y: 200
?>
Maximizar Seleccionar PHP
-tili5aci!n del color
Una vez creado el color con cualquier de los dos mtodos 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
+ibu)o de lneas con *+
En este tutorial de 3 pginas veremos cmo podemos dibujar todo tipo de
lneas (normales, gruesas, discontinuas, punteadas... ) usando la librera GD
de PHP.
Tabla de contenido
Dibujo de lineas bsicas
Dibujo de lineas gruesas
+ibu)o de lineas bsicas
Para dibujar una linea contnua de grosor 1 en una imagen creada con GD,
usaremos la funcin i(a3eli&e, que funciona de la siguiente manera:

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

Donde los parmetros que pasamos a la funcin sern:
$i( - Es el identificado de la imagen que hemos creado cmo se explico en
capitulos anteriores de este manual $aP - Es la coordenada horizontal del
primer punto de la lnea
$a* - Es la coordenada vertical del primer punto de la lnea
$;P - Es la coordenada horizontal del segundo punto de la linea
$;* - Es la coordenada vertical del segundo punto de la lnea
$col - Es el color de la linea como se explica tambin en capitulos anteriores
de este manual
Vamos a ver un ejemplo de lnea:

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 lnea
imageline($im, 10, 10, 90, 90, $linea);

header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>
Maximizar Seleccionar PHP
Y aqu tenemos su resultado:
+ibu)o de lneas con *+
Tabla de contenido
Dibujo de lineas bsicas
Dibujo de lineas gruesas
+ibu)o de lineas ruesas
Para hacer una lnea de grosor distinto de 1, antes de dibujarla, usaremos la
funcini(a3esett)icR&ess, que funciona de la siguiente manera:

000 imagesetthickness($im, $grosor);
Maximizar Seleccionar

Donde los parmetros que pasamos a la funcin sern:

000
001
[b]$im[/b] - Es el identificado de la imagen
[b]$grosor[/b] - Es el grosor en pxels de la lnea
Maximizar Seleccionar

Vamos a ver un ejemplo de lnea de 10 pxels:

000
001
002
003
004
005
006
007
008
009
010
011
012
013
<?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);
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>
Maximizar Seleccionar PHP

Y aqu tenemos su resultado:
Finalmente, para volver a dibujar lneas normales, haremos
un i(a3esett)icR&ess con grosor
+ibu)o de rectnulos con *+
Con GD, podemos dibujar rectngulos y rectngulos coloreados facilmente
utilizando las funciones que explicaremos en este artculo
Tabla de contenido
Dibujo de rectngulos
Rectngulos coloreados
+ibu)o de rectnulos
Para dibujar un rectngulo utilizaremos la funcin i(a3erecta&3le, pasndole
las coordenadas del rectndulo y el color de la siguiente manera:

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

Donde los parmetros que pasamos a la funcin sern:
$i( - Es el identificado de la imagen que hemos creado cmo se explico
antes
$aP - Es la coordenada horizontal del primer punto del rectngulo
$a* - Es la coordenada vertical del primer punto del rectngulo
$;P - Es la coordenada horizontal del segundo punto del rectngulo
$;* - Es la coordenada vertical del segundo punto del rectngulo
$col - Es el color de la linea como se explico antes
De esta manera dibujaremos las cuatro lneas del rectngulo, donde el primer
punto es el borde superior izquierdo y el sgundo el borde inferior derecho.
A estas lneas tambin les podremos aplicar grosores y estilos de lnea
4ectnulos coloreados
Otro tipo de rectngulo que podemos dibujar sn los rectngulos coloreados (areas de un
color) que haremos con la funcin i(a3e'illedrecta&3le, que funciona exactamente igual
que la anterior pero genera un resultado distint

+ibu)o de arcos y elipses con *+
Una elipse es una seccin cnica, una especie de huevo, y un caso particular
de elipse es el crculo, 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 rectngulos,
salvo que en lugar de indicar las esquinas del rectngulo, debemos indicar el
centro , la altura, el ancho y en el caso de los arcos, el ngulo inicial y final.
+ibu)o de elipses y crculos
Usando la funcin i(a3eellipse o i(a3e'illedellipse (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 funcin significa:
$i( - Es el identificado de la imagen que hemos creado cmo se explico
$cP - Coordenada horizontal del centro de la elipse
$c* - Coordenada vertical del centro de la elipse
$a& - Ancho de la elipse
$al - Altura de la elipse
$col - Es el color de la linea (o relleno) como se explico tambin
Veamos un ejemplo de cmo generar un caso particular de elipse, un crculo
de 100 x 100 pixels (centrado en 50,50):

000
001
002
003
004
005
006
007
008
009
010
011
012
<?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 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 sera relleno de color negro de haber usado
imagefilledellipse):
+ibu)o de arcos
Para dibujar un arco, usaremos la funcin i(a3earc o i(a3e'illedarc, que
tiene la misma sintaxis que la funcin anterior salvo que aade 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 funcin significa:
$i( - Es el identificado de la imagen que hemos creado cmo se explico
$cP - Coordenada horizontal del centro del arco
$c* - Coordenada vertical del centro del arco
$a& - Ancho del arco
$al - Altura del arco
$i& - ngulo inicial del arco
$'i - ngulo final del arco
$col - Es el color de la linea (o relleno) como se explico tambin
Veamos un ejemplo de cmo generar un arco:

000
001
002
003
004
005
006
007
008
009
010
011
012
<?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
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 sera relleno de color negro de haber usado
imagefilledarc):

También podría gustarte