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

Programando Aplicaciones

Web con PHP


Creative Commons
ReconocimientoNo comercialCompartir bajo la misma
licencia3.0
Ustedeslibrede:

copiar,distribuiryreproducirpblicamentelaobra

hacerobrasderivadas
Bajolassiguientescondiciones:

Reconocimiento.Debereconocerloscrditosdelaobradelamanera
especificadaporelautoroellicenciante(peronodeunamaneraquesugiera
quetienesuapoyooapoyanelusoquehacedesuobra).

Nocomercial.Nopuedeutilizarestaobraparafinescomerciales.

Compartirbajolamismalicencia.Sialteraotransformaestaobra,o
genera unaobraderivada,slopuede distribuir laobrageneradabajouna
licenciaidnticaasta.
Alreutilizarodistribuirlaobra,tienequedejarbienclarolostrminosdela
licenciadeestaobra.
Algunadeestascondicionespuedenoaplicarsesiseobtieneelpermisodel
titulardelosderechosdeautor
Nadaenestalicenciamenoscabaorestringelosderechosmoralesdelautor.

Losderechosderivadosdeusoslegtimosuotraslimitacionesreconocidaspor
leynosevenafectadosporloanterior.
Esto es un resumen fcilmente legible del texto legal de versin
original en Idioma Ingls (la licencia completa)
http://creativecommons.org/licenses/by-nc-sa/3.0/ec/legalcode
ndice de contenido
UNIDAD 1: FUNDAMENTOS DE PHP Y INSTALACION DE APACHE, PHP
Y MYSQL............................................................................................6
1.1. Qu es PHP?..........................................................................6
1.2. Historia y Actualidad...............................................................6
PHP 3 .........................................................................................6
PHP 4..........................................................................................7
PHP 5..........................................................................................7
PHP 6..........................................................................................8
1.3. Caractersticas de PHP............................................................9
1.4. Tipos de aplicaciones de PHP................................................10
1.5. Componentes de PHP............................................................11
1.6. Por qu usar PHP?...............................................................12
1.7. Instalar Apache + PHP + MySQL en Canaima.......................12
1.8. Instalar MySQL Query Browser y Bluefish en Canaima.........17
UNIDAD 2: APRENDIENDO EL LENGUAJE PHP...................................19
2.1. Bloques de cdigo PHP.........................................................19
2.2. Finalizacin de las sentencias...............................................21
2.3. Uso de las Maysculas y Minsculas.....................................21
2.4. Comentarios.........................................................................22
2.5. Variables...............................................................................23
2.6. Constantes............................................................................33
2.7. Tipo de Datos........................................................................35
2.8. Secuencias de Escape...........................................................42
2.9. Conversin de Tipos..............................................................43
2.10. Operadores.........................................................................47
2.10.1. Operadores de asignacin............................................48
2.10.2. Operador de concatenacin.........................................48
2.10.3. Operadores Aritmticos...............................................49
2.10.4. Operadores de Comparacin........................................49
2.10.5. Operadores Lgicos......................................................51
2.10.6. Operadores de Incremento y Decremento...................53
2.10.7. Operadores Combinados..............................................54
2.11. Estructuras Condicionales y Repetitivas.............................55
2.11.1. Condicional if...............................................................55
2.11.2. Condicional if else.....................................................56
2.11.3. Estructura Switch.........................................................59
2.11.4. Ciclo while....................................................................61
2.11.5. Ciclo do... while............................................................62
2.11.6. Ciclo for........................................................................64
2.11.7. Ciclo foreach................................................................66
2.11.8. Sentencias break y continue........................................67
UNIDAD 3: FUNCIONES DEFINIDAS POR EL USUARIO Y
PREDEFINIDAS DE PHP.....................................................................69
3.1. Funciones Definidas por el Usuario.......................................69
3.2. Funciones Predefinidas de PHP.............................................77
3.3. Funciones de Cadena............................................................80
3.4. Funciones de Arreglo............................................................87
3.5. Funciones de Fecha...............................................................92
3.6. Funciones Matemticas........................................................95
3.7. Funciones de Manejo de Archivo...........................................98
UNIDAD 4: TRABAJANDO CON FORMULARIOS................................103
4.1. Formularios.........................................................................103
4.2. Variables Predefinidas en PHP.............................................106
GLOSARIO DE TRMINOS...............................................................119
UNIDAD 1: FUNDAMENTOS DE PHP Y INSTALACION DE
APACHE, PHP Y MYSQL

1.1. Qu es PHP?

PHP es un lenguaje interpretado de alto nivel que se ejecuta del


lado del servidor, y es ampliamente utilizado para el desarrollo de
sitios Web dinmicos, el nombre de PHP es un acrnimo recursivo
que significa Hypertext Pre-processor, su sintaxis es similar a la de
C y Perl, PHP es un lenguaje Open Source (Cdigo Abierto).

1.2. Historia y Actualidad

PHP en principio fue diseado en el Lenguaje Perl, luego por el ao


de 1994 el dans-canadiense Rasmus Lerdorf escribi un grupo de
CGI binarios escritos en el lenguaje C con la finalidad de mostrar su
currculum vitae y guardar ciertos datos, como la cantidad de trfico
que su pgina Web reciba. El 8 de junio de 1995 fue publicado
"Personal Home Page Tools" despus de que Lerdorf lo combinara
con su propio Form Interpreter para crear PHP/FI.

PHP 3

En el ao 1997 dos programadores israeles Zeev Suraski y Andi


Gutmans, reescribieron el analizador sintctico y crearon la base del
PHP 3, cambiando el nombre del lenguaje a la forma actual. PHP 3
fue publicado oficialmente en junio del 1998. Estos dos
programadores israeles reescribieron el cdigo de PHP en 1999
elaborando lo que se conoce como Zend Engine o motor Zend.

PHP 4

Debido a que PHP 3 no estaba diseado para el mantenimiento


eficiente de aplicaciones complejas, en mayo del 2000 PHP 4 fue
lanzado bajo el poder del motor Zend Engine 1.0, proveyendo
mejoras en el desempeo del motor, as como otras caractersticas
adicionales como soporte con la mayora de los servidores Web,
sesiones HTTP, formas mas seguras de controlar las entradas de
usuario, entre otras.

Zend es el motor del lenguaje, mientras que PHP se refiere al


lenguaje. Juntos conforman el Sistema PHP completo. Zend provee
los servicios a los mdulos de PHP e implementa la sintaxis del
lenguaje.

PHP 5

Para el 13 de julio de 2004, fue liberado PHP 5, utilizando como


motor Zend Engine II (o Zend Engine 2). Las ventajas que provee el
nuevo Zend Engine 2 se listan a continuacin:
Mejoras en el soporte para la Programacin Orientada a
Objetos (Nuevo modelo de objetos similar a Java), que en
versiones anteriores era extremadamente rudimentario, con
PHP Data Objects.
Mejoras de rendimiento.
Nueva administracin de memoria que permite trabajar
eficientemente en entornos multihilos.
Mejor soporte para MySQL con extensin completamente
reescrita.
Mejor soporte a XML ( XPath, DOM, etc. ).
Soporte nativo para SQLite.
Soporte integrado para SOAP.
Iteradores de datos.
Manejo de excepciones.

PHP 6

Est previsto el lanzamiento de la rama 6 de PHP. Cuando se lance


esta nueva versin quedarn solo dos ramas activas en desarrollo
(PHP 5 y 6), pues se abandon el desarrollo y soporte de PHP 4 el 13
de julio de 2007.

Las diferencias que hallaremos frente a PHP 5. se listan a


continuacin:

Soportar Unicode.
Limpieza de funcionalidades obsoletas como register_globals,
safe_mode.
PECL.
Mejoras en orientacin a objetos.

1.3. Caractersticas de PHP

Es un lenguaje script que se ejecuta del lado del servidor, al ser un


lenguaje que se ejecuta del lado del servidor, quiere decir que el
cdigo PHP es procesado en el servidor Web por el motor Zend, y la
respuesta que se le enva a el cliente es en formato HTML
entendible por cualquier navegador. Lo contrario a un lenguaje del
lado del servidor seria JavaScript que es interpretado por cualquier
navegador de un cliente (siempre y cuando este soportado por el
navegador el ejecutar JavaScript y activada dicha opcin).

Es un lenguaje embebido en HTML, por esto se entiende que se


puede incrustar cdigo PHP dentro de cdigo HTML.

Es un lenguaje multiplataforma o de plataformas cruzadas, esto se


refiere a que se puede emplear en plataformas con distintos
sistemas operativos como UNIX, LINUX, Windows (98, NT, 2000, y
XP), Mac OS, entre otros, as como se puede emplear gran variedad
de servidores Web como Apache, Internet Information Server (IIS),
Netscape, Xitami, entre otros. El cdigo PHP es totalmente portable
a cualquier ambiente que se traslade sin ningn o poco cambio en
su cdigo.

La caracterstica ms atractiva a la hora de elegir un lenguaje para


el desarrollo de una aplicacin Web dinmica es sin lugar a dudas el
costo, PHP es un lenguaje de cdigo abierto, y por esto se entiende
que es de libre distribucin, es decir se puede conseguir sin pagar
una licencia de software y adems su cdigo fuente esta disponible
para todos los usuarios.

PHP es un proyecto Open Source, al ser accesible el cdigo fuente


los desarrolladores a nivel mundial pueden participar activamente
en la incorporacin de nuevas funcionalidades en el lenguaje,
reportar Bugs, corregir errores, y expandir en general las
capacidades de este lenguaje.

1.4. Tipos de aplicaciones de PHP

Scripts del lado del servidor: es el primordial uso de este


lenguaje, el de aplicaciones Web, y es por el cual se ha
popularizado actualmente este lenguaje, se necesita el
interprete PHP, un servidor Web y un navegador.
Scripts en lnea de comando: se pueden crear scripts PHP
que se ejecuten sin necesidad de un servidor Web y
navegador, tan solo el interprete PHP, para poder ser
ejecutados desde consola.
Aplicaciones de Escritorio: aunque no fue ideado en
principio para aplicaciones de escritorio, existe en PHP una
extensin para crear interfaces grficas de usuario y es
conocida como PHP GTK, esta extensin no esta incorporada
en la distribucin principal.

1.5. Componentes de PHP

El motor Zend: es el analizador sintctico del lenguaje, este


interprete analiza el cdigo de entrada lo traduce y luego
ejecuta.
El ncleo PHP: implemente gran parte de las
funcionalidades del lenguaje.
Capa SAPI: traducido como Interfaz de programacin de
Aplicaciones del Servidor, son mdulos que proveen una
interfaz para interactuar de manera transparente con
distintos servidores. Esta capa simplifica la tarea de agregar
soporte nativo para los servidores, as como lograr que el
funcionamiento de PHP sea independiente del servidor,
actualmente PHP solo tiene implementaciones SAPI para
Apache, Microsoft IIS, entre otros.
Las extensiones PHP: son un conjunto de libreras que se
invocan cuando se ejecuta un script, entre estos mdulos se
encuentra el que permite conexiones a base de datos con
MySQL, las extensiones pueden ser cargadas dinmicamente
o en tiempo de compilacin, muchas de estas extensiones
vienen desactivadas por defecto.

1.6. Por qu usar PHP?

Hoy en da en el mercado existen lenguajes que proporcionan


dinamismo a nuestras aplicaciones Web, tales como ASP, JSP,
scripts CGI (como Perl o Python), entre otros, pero la curva de
aprendizaje en comparacin con PHP es mayor. PHP es un lenguaje
que fue diseado para trabajar en un entorno Web, permitiendo que
funcione de forma mas rpida y eficiente con HTML, por otra parte
PHP no esta atado a ningn sistema operativo ni servidor Web por
lo que es multiplataforma, aunque fue diseado en principio para
trabajar bajo UNIX y el servidor Apache.

1.7. Instalar Apache + PHP + MySQL en Canaima

Instalar Apache versin 2

Para instalar el servidor Web Apache en Canaima GNU/Linux tan


solo basta tipear este comando en consola:
$ sudo aptitude install apache2

Hasta ahora tan solo hemos instalado el servidor Web, asi que aun
no podremos crear paginas PHP, para verificar que el servidor ha
sido instalado exitosamente en un navegador coloquemos esta
direccin:

http://localhost/

Si logras ver este mensaje es que has instalado sin problemas el


servidor Web. Ahora procedemos ha tipear este comando en
consola:

$ sudo aptitude install libapache2-mod-php5

Este comando instalara el mdulo de PHP 5 para que Apache


trabaje con PHP, tenga en cuenta de que este paquete libapache2-
mod-php5 no instala PHP 5.

Instalar PHP 5

La instalacin en Canaima de PHP 5 es muy sencilla tan solo hay


que tipear este comando en la consola:

$ sudo aptitude install php5

Si hemos seguido los pasos de la guia al pie de la letra ya hemos


instalado PHP 5 junto con Apache 2, para verificar esto en primer
lugar vamos a reiniciar el servidor Apache para que tome los
nuevos cambios, con la siguiente instruccin lograremos eso:

$ sudo /etc/init.d/apache2 restart

Luego desde la consola crearemos el siguiente fichero prueba.php


en la siguiente ruta /var/www para ello tipearemos lo siguiente en
consola:

$ sudo gedit /var/www/prueba.php

Una vez abierto el editor de texto gedit colocaremos el siguiente


texto:
<?php
phpinfo();
?>

Guardamos la informacion y cerramos el editor. Ahora no dirigimos


al navegador de preferencia y colocamos la siguiente url:

http://localhost/prueba.php

Si vemos esta pantalla es por que ya tienes instalado PHP 5 e


integrado con el servidor Web Apache 2.

Por ltimo vamos a instalar la extensin de PHP 5 para trabajar con


MySQL, para ello escribiremos en consola el siguiente comando:

$ sudo aptitude install php5-mysql

Nota: Este paquete no instala MySQL, solo instala la extensin de


MySQL para PHP.

Reiniciamos nuevamente el servidor Apache 2 para que tome los


nuevos cambios, con la instruccin:

$ sudo /etc/init.d/apache2 restart

Adicionalmete para comprobar la integracin de la extensin de


MySQL para PHP 5 consultamos nuevamente la pgina y buscamos
que exista la extensin de MySQL en el PHP 5 instalado:

http://localhost/prueba.php

Instalar MySQL 5

Para instalar MySQL tipearemos en consola lo siguiente:

$ sudo aptitude install mysql-server

Durante el proceso de instalacin se le solicitara una contrasea, es


aconsejable colocar una. Si durante la instalacin no se le solicita
una contrasea, se abra instalado MySQL con el usuario root y sin
ninguna contrasea. Para verificar la instalacin de el manejador de
base de datos MySQL colocamos en consola lo siguiente:

$ mysql -u root -p

1.8. Instalar MySQL Query Browser y Bluefish en Canaima

Aunque pudiramos desarrollar sin ningn problema aplicaciones en


PHP con el editor Gedit y base de datos con el cliente de consola de
MySQL, podemos instalar adicionalmente estas dos herramientas de
desarrollo Open Source (cdigo abierto), de gran utilidad en un
ambiente de desarrollo, facilitando el desarrollo de aplicaciones.

Instalar MySQL Query Browser

MySQL Query Browser, es una herramienta grfica que permite


ejecutar sentencias SQL en un entorno grfico. Todas las consultas
que se realicen en MySQL Query Browser pueden tambin
ejecutarse a travs de la lnea de comandos, aunque ste
proporciona un entorno ms amigable e intuitivo para realizar
consultas, tambin permite crear nuevas tablas o cambiar las
existentes y la posibilidad de cambiar los registros, es decir, los
datos almacenados en las tablas, sin necesidad de conocer cdigo
SQL, el siguiente comando nos instala el Query Browser:
$ sudo aptitude install mysql-query-browser

Para interactuar con esta herramienta vallamos a Aplicaciones |


Programacin | MySQL Query Browser.

Instalar Bluefish

Bluefish es un editor de texto, dirigido a diseadores web y


programadores, se centra en la edicin de pginas dinmicas. Es
capaz de reconocer diversos lenguajes de programacin, a
continuacin se muestra el paquete para instalar esta herramienta:

$ sudo aptitude install bluefish


UNIDAD 2: APRENDIENDO EL LENGUAJE PHP

2.1. Bloques de cdigo PHP

El cdigo PHP es incrustado en cdigo HTML, es importante saber


que las sentencias o etiquetas HTML no son interpretadas por el
interprete de PHP, mientras que las sentencias que se encuentran
en los bloques de cdigo:

<?php
//Cdigo PHP
?>

entre los bloques de cdigo:

<script language=php>
//Cdigo PHP
</script>

en este bloque de cdigo:

<?
//Cdigo PHP
?>
Sern interpretadas por el motor de PHP y generaran el respectivo
cdigo HTML, lenguaje que es interpretado sin ningn problema por
cualquier navegador o browser. Notese que podemos embeber
cdigo PHP en una pgina Web gracias a estos bloques, aunque se
recomienda el uso del primer bloque por ser el mas ampliamente
usado por la variedad de servidores Web que hay en el mercado y si
queremos hacer cdigo que corra en distintas plataformas esta es la
mejor opcin. Existe tambin la opcin de usar cdigo PHP
colocandolo en este bloque <% %> pero para lograr esto hay que
configurar el archivo php.ini.

A continuacin se muestra un ejemplo de una pgina PHP que


contiene etiquetas HTML y en ellas un cdigo PHP embebido
resaltado en negrita:

<html>
<head>
<title>Index</title>
</head>
<body>
<?php
echo "Hola Mundo!";
?>

</body>
</html>
Guarde este cdigo en un fichero de nombre index.php en la
carpeta /var/www/ y tipee en el navegador esta direccin:
http://localhost/index.php

2.2. Finalizacin de las sentencias

Las instrucciones en PHP finalizan en punto y coma (;), a menos de


que esta instruccin sea la ltima y despus de ella le siga el cierre
de bloque de cdigo PHP, por ejemplo:

<?php
echo "Hola mundo";
?>

el bloque de cdigo anterior es equivalente a este otro:

<?php
echo "Hola mundo"
?>

2.3. Uso de las Maysculas y Minsculas

La mayora de los lenguajes de programacin tienen palabras


reservadas que son sensibles a maysculas y minsculas a esto se
le conoce como case sensitive, PHP tiene un conjunto de reglas
particular en ese sentido que veremos a continuacin:

Las variables y constantes definidas por el usuario y las


predefinidas por el lenguaje PHP son sencibles a maysculas y
minsculas.

Las funciones definidas por el usuario as como las funciones


predefinidas por el lenguaje PHP no son case sensitive.

2.4. Comentarios

En PHP existen 3 formas de comentar nuestro cdigo:

Se puede utilizar el doble backslash //, til para comentar una


sola lnea:

<?php
//Esto es un comentario en PHP
?>

Cuando se desea comentar ms de una lnea nos resulta til


emplear esta combinacin de caracteres /* */, por ejemplo:
<?php
/*
Esto es un comentario en PHP
empleando varias lneas
*/
?>

Por ltimo tambin podemos comentar una simple lnea


utilizando el siguiente carcter #.

<?php
#Esto es un comentario en PHP
?>

2.5. Variables

Una variable, no es ms que un espacio en memoria reservado para


guardar cualquier valor. En PHP durante la ejecucin de un script el
valor de una variable puede cambiar tanto de tipo dato como de
valor. En PHP no hace falta declarar la variable ya que simplemente
anteponiendo el carcter $ al nombre de la variable estamos
indicando que es una variable, as como tampoco hay que declarar
de que tipo de dato es una variable debido a esto PHP se considera
un lenguaje dbilmente tipado.
Las variables en PHP tienen un alcance global, si una variable es
declarada y luego se incluyera un archivo este archivo tendra
acceso a esta variable.
Convencin de nombre de variables

Las variables en PHP deben comenzar con el carcter $ y luego de


este no pueden empezar con un nmero, ni tener espacios en
blanco, ni un carcter especial excepto por el underscore (_),
tambin es aconsejable declarar las variables en minsculas y si la
variable es una combinacin de nombres la segunda palabra debe
comenzar en mayscula, a continuacin se muestran algunos
ejemplos de variables bien y mal definidas en PHP:

$mensaje = "Hola Mundo"; //OK


$mensajeNuevo = "Esta variable es otra";
//OK
$_var1 = 55; //OK
$nu1 = 15; //OK
$var?1 = 15; //ERROR
var2 = "Hola"; //ERROR
$5var = 55; //ERROR
$var2* = "This" //ERROR

Tipos de Variables

En PHP las variables se clasifican en dos tipos:


Escalares: se usan para almacenar un solo valor o un valor
simple.
Arreglos: Vectores, Matrices y Arreglos de n dimensiones:
son colecciones de datos simples, arreglos o una combinacin
de ambos, guardados en una sola variable. En otros lenguajes
de programacin los arreglos deben contener valores de un
mismo tipo, mientras que en PHP no. En PHP los arreglos
pueden trabajar como tablas hash (arreglos asociativos) o
como arreglos indexados (vectores) y estos tipos de arreglos
empiezan en la posicin 0.

Asignacin de Valores y Acceso a una Variable Escalar y de


Arreglo

Para asignar valores tanto a variables escalares como de arreglo se


usa el operador de asignacin igual (=).

Ejemplo de como asignar un valor a una variable escalar:

<?php
$miVariable = "Hola mundo";
echo $miVariable
//echo es una funcin que imprime o muestra una cadena en
el navegador
?>
A continuacin se muestra como asignar valores a un arreglo
y accederlos, en el siguiente ejemplo se usa un arreglo
indexado:

<?php
$nombre[0] = "Pedro";
$nombre[1] = "Carlos";
echo $nombre[1];
//Este fragmento de cdigo imprime Carlos en el navegador.
?>

Ahora se muestra un ejemplo usando un arreglo asociativo:

<?php
$nombre["Pedro"] = "Escobar";
$nombre["Carlos"] = "Garca";
echo $nombre["Pedro"];
//Este fragmento de cdigo imprime Escobar en el navegador.
?>

Notese que para crear las variables escalares as como los arreglos
no hay que declarar el tipo de dato de los mismos.

Asignacin de Valores por Referencia


Hay otra forma de asignar valores a las variables, y es la asignacin
por referencia, esto hace que la variable a la que se le pasa la
referencia de otra variable se convierta en un alias de esta ltima,
dicho de otra forma la variable a la que se le paso la referencia a
punta a la direccin de memoria de la otra variable, logrando as
que no se cree una copia de la variable pasada por referencia, de
esta forma la asignacin ocurre ms rpido. Para asignar una
variable por referencia se antepone el carcter ampersand (&) a la
variable, a continuacin se muestra un ejemplo detallado de lo
expuesto anteriormente.

<?php
$nombre = "Pedro";
$referencia = &$nombre;

$referencia = "Carlos";

echo $nombre;
echo $referencia;

//Este fragmento de cdigo imprime CarlosCarlos en el


navegador.
?>

Notese que en la segunda lnea del cdigo PHP se asigna la


referencia (direccin de memoria) de la variable $nombre a la
variable $referencia, ahora los cambios que se hagan en la variable
$referencia tambin afectan a variable $nombre. En la tercera lnea
a la variable $referencia se le asigna el valor de "Carlos" por lo
tanto la variable $nombre ahora contiene "Carlos".

Variables Globales y Locales

Las variables que se declaran dentro de una funcin tienen un


mbito o alcance local, en ese sentido no se puede acceder a una
variable declarada en una funcin desde fuera de la funcin,
Mientras que las variables declaradas fuera de una funcin tienen
un mbito global ya que pueden ser accedidas dentro y fuera de la
funcin.

<?php
$nombre = " Pedro"; //Variable Global
function mostrarNombre(){
$nombre = "Alberto"; //Variable Local
echo $nombre;
}
mostrarNombre();
echo $nombre;
//Este fragmento de cdigo imprime Alberto Pedro en el
navegador.
?>
Hay que resaltar que las variables globales no estn disponibles
dentro de las funciones como en lenguaje C, esto se debe a
cuestiones de seguridad ya que se puede cambiar el valor de una
variable que esta definida en un archivo incluido en otro y se
desconoce la existencia de dicha variable. Aunque se puede hacer
uso de una variable global dentro de una funcin declarndolas
dentro de estas mismas explcitamente como globales haciendo uso
de la palabra reservada global, a continuacin se muestra un
ejemplo:

<?php
$total = 0;
$valor1 = 15;
$valor2 = 2;
function sumar(){
global $total, $valor1, $valor2;
$total = $valor1 + $valor2;
}
sumar();
echo $total;
//Este fragmento de cdigo imprime 17 en el navegador.
?>

Al declarar $valor1, $valor2 y $total como globales dentro de la


funcin, hacemos referencia al uso de las variables declaradas fuera
de la funcin.
Existe una segunda forma de acceder a las variables globales desde
una funcin y es usando la variable predefinida de PHP $GLOBALS,
esta variable es un arreglo asociativo que usa el nombre de la
variable global como valor del elemento, a continuacin se muestra
un ejemplo del uso de la misma:

<?php
$total = 0;
$valor1 = 15;
$valor2 = 2;
function sumar(){
$GLOBALS["total"] = $GLOBALS["valor1"] +
$GLOBALS["valor2"];
}
sumar();
echo $total;
//Este fragmento de cdigo imprime 17 en el navegador.
?>

Variables Estticas

Normalmente las variables declaradas dentro en una funcin se


inicializan cuando la funcin es llamada, y se borran cuando se sale
de la funcin. Una variable esttica existe slo en el mbito local de
la funcin, pero no pierde su valor cuando la ejecucin del
programa abandona este mbito. Vea el siguiente ejemplo:

<?php
function contador(){
$cont = 0;
echo $cont;
$cont = $cont + 1;
}
contador();
contador();
contador();
//Este fragmento de cdigo imprime 000 en el navegador.
?>

Cada vez que llamamos a esta funcin contador() se asigna a $cont


el valor de 1 y se imprime en pantalla 1. La sentencia $cont = $cont
+ 1; incrementa la variable $cont en 1, pero esto no servir de
nada, ya que en cuanto la funcin termina la variable $cont
desaparece, y si volvemos a llamar la funcin, $cont se inicializa de
nuevo con el valor 1.

Para hacer una funcin til para contar, la variable $cont debe
declararse como esttica, a continuacin el ejemplo anterior pero
$cont ahora es una variable esttica:

<?php
function contador(){
static $cont = 1;
echo $cont;
$cont = $cont + 1;
}
contador();
contador();
contador();
//Este fragmento de cdigo imprime 123 en el navegador.
?>

Observe que no se pierde el valor de la variable $cont la primera


vez que se llama a la funcin y as sucesivamente.

Variables Predefinidas del Lenguaje

PHP proporciona una gran cantidad de variables predefinidas a


cualquier script PHP que se ejecute. Muchas de esas variables no
pueden estar completamente documentadas ya que dependen del
servidor que se est ejecutando, la versin y configuracin de dicho
servidor, y otros factores.

$GLOBALS: Contiene una referencia a cada variable global


disponible en el script. Las llaves de esta matriz son los
nombres de las variables globales.
$_GET: Variables proporcionadas al script por medio de HTTP
GET.
$_POST: Variables proporcionadas al script por medio de HTTP
POST.
$_ENV: Variables proporcionadas al script por medio del
entorno.
$_COOKIE: Variables proporcionadas al script por medio de
HTTP cookies.
Estas son algunas de las variables predefinidas por el lenguaje PHP.

2.6. Constantes

Una constante es un dato cuyo valor no puede variar durante la


ejecucin del programa. El nombre de las constantes es sensible a
minsculas y maysculas al igual que las variables.

Convencin de nombre de constantes

Por convencin, los identificadores (nombres) de las constantes


suelen declararse en maysculas. Un nombre de constante vlido
empieza con una letra o el carcter de subrayado, seguido por una
serie letras, nmeros, o subrayados. Los nombres de constantes en
PHP no admiten espacios en blanco, signos de puntuacin (si
caracteres acentuados), ni caracteres especiales. El alcance de una
constante es global, es decir, es posible acceder a ellas sin
preocuparse por el mbito de alcance.
Se puede definir una constante usando la funcin define().
Una vez definida, no puede ser modificada ni eliminada.

Solo se puede definir como constantes valores escalares.

Para obtener el valor de una constante solo es necesario


especificar su nombre. A diferencia de las variables, no se
tiene que especificar el prefijo $. Tambin se puede utilizar la
funcin constant() para obtener el valor de una constante.

Ejemplo de el uso de constantes:

<?php
define("MI_NOMBRE", "Ana Velazquez ");

echo MI_NOMBRE;

echo constant("MI_NOMBRE");

//Este fragmento de cdigo imprime Ana Velazquez Ana


Velazquez en el
//navegador.

?>
En la primera lnea definimos una constante de nombre MI_NOMBRE
y en la segunda mostramos en el navegador el contenido de esa
constante notese que no se utiliza el smbolo $ como hacamos con
las variables, la tercera lnea hace la misma cosa que la anterior
solo que esta vez con el uso de la funcin constant().

Constantes predefinidas por el lenguaje

PHP ofrece un largo nmero de constantes predefinidas. Muchas de


estas constantes, sin embargo, son creadas por diferentes
extensiones, y solo estarn presentes si dichas extensiones estn
disponibles. Algunas de estas constantes son por ejemplo
PHP_VERSION que indica la versin de PHP y PHP_OS indica el
sistema operativo en el cual se instal PHP, a continuacin un
ejemplo:

<?php
echo PHP_OS;
//Este fragmento de cdigo imprime Linux en el navegador
//(Si fue instalado Apache en Linux)
?>

2.7. Tipo de Datos

Un tipo de datos define un conjunto de valores y las operaciones


sobre estos valores. Casi todos los lenguajes de programacin
explcitamente incluyen la notacin del tipo de datos. PHP soporta
distintos tipos de datos, que el programador no necesita declarar
explcitamente, sino que son asumidos directamente por el motor,
siempre que el programador no cambie el tipo de dato.

Los datos pueden ser:

Integer
Float (para versiones anteriores use la variante obsoleta
"double)
String
Boolean
Array
Object

Observe el siguiente ejemplo:

<?php

$foo = "5bar"; // string


$bar = true; // boolean

settype($foo, "integer"); // $foo es ahora 5 (integer)


settype($bar, "string"); // $bar es ahora "1" (string)
echo $foo;
echo $bar; //Se imprime en el navegador 51
?>

Funciones de Tipo de Datos

La funcin gettype(), permite saber el tipo de dato que almacena


una variable en un determinado momento.

La funcin settype(), cambia el tipo de dato de una variable y


devuelve TRUE si todo se llev a cabo correctamente, FALSE en
caso de fallo.

La funcin var_dump(), muestra el tipo de dato y adicionalmente


su contenido.

A continuacin se muestra un ejemplo:

<?php
$var1 = "Hola Mundo";
$var2 = 15;
$var3 = "15";

settype($var3, "double"); //Cambiamos el tipo de dato de


string a double
echo gettype($var1); #Imprime string
echo var_dump($var2);#Imprime int(15)
echo gettype($var3); #Imprime double
?>

PHP tiene un conjunto de funciones que permiten verificar si una


variable es de un tipo de dato especfico:

Tipo Descripcin
is_array($variable) Retorna true si la $variable es un
arreglo
is_bool($variable) Retorna true si la $variable es un
booleano
is_double($variable) Retorna true si la $variable es un
punto flotante
is_object($variable) Retorna true si la $variable es un
objeto
is_string($variable) Retorna true si la $variable es
una cadena
is_null($variable) Retorna true si la $variable es
nula

Tipo de Dato Entero

Las variables son de tipo de dato entero, si los valores con los que
son inicializados son enteros, por ejemplo:
<?php
$var1 = 9821; //Entero Positivo base 10
$var2 = -1234; //Entero Negativo base 10
$var3 = 052; //Nmero Octal
$var4 = 0x65 //Nmero Hexadecimal
?>

Note que para indicar que un nmero esta en base 8 se debe


anteponer el nmero 0, y para expresar que un nmero esta en
base hexadecimal se le antepone al nmero la combinacin de
caracteres 0x.

Tipo de Dato de Punto Flotante

Las variables se convierten en este tipo de dato cuando se


inicializan con nmeros reales, como por ejemplo:

<?php
$var1 = 9821.54;//El carcter (.) separa la parte entera de la
decimal
$var2 = 2.54e9 //Aqu se emplea notacin cientfica
?>

Tipo de Dato de Lgico o Booleanos


Las variables se consideran de este tipo de dato cuando se
inicializan con un true o false, como por ejemplo:

<?php
$existe = true;
$vacio = false;
?>

Tipo de Dato Cadena

Las variables son de tipo cadena cuando se inicializan con un valor


encerrado entre los caracteres de comilla doble (" ") y las comillas
simple (' '), por ejemplo:

<?php
$mensaje1 = "Esto es una cadena";
$mensaje2 = 'Esto es otra cadena';
?>

Hay que hacer notar que si la cadena esta entre comillas dobles ("
"), las variables que estn dentro de la cadena sern expandidas o
interpoladas, no as en las comillas simples (' ').

Interpolacin de Cadenas

La interpolacin de Cadenas significa que una variable escalar


colocada en una cadena rodeada por comillas dobles, sera
interpolada, es decir mostrara su contenido y no el nombre de la
variable, observe el siguiente cdigo:

<?php
$mensaje1 = "Hola Mundo";
echo "$mensaje1";
//Se imprime en el navegador Hola Mundo
?>

En principio uno dira que se iba a mostrar en el navegador


$mensaje1 ya que es una cadena por estar en vuelta en comillas
dobles, pero no es as en lugar de eso se muestra Hola Mundo el
contenido de la variable $mensaje1, por lo tanto se concluye que el
carcter $ tiene significado aun dentro de las comillas dobles. Para
deshabilitar el significado especial que tiene el carcter $ se utiliza
el smbolo backslash \ de esta forma la palabra $mensaje1 no
sera interpretado en las comillas dobles como una variable sino
como una simple cadena. Observe el ejemplo anterior pero ahora
usando el carcter \ para imprimir la cadena $mensaje1:

<?php
$mensaje1 = "Hola Mundo";
echo "\$mensaje1";
//Se imprime en el navegador $mensaje1
?>
Ahora observe que sucede si se envuelve la variable $mensaje1 por
comillas simples:

<?php
$mensaje1 = "Hola Mundo";
echo '$mensaje1';
//Se imprime en el navegador $mensaje1
?>

2.8. Secuencias de Escape

Las secuencias de escape son pequeas constantes que nos


brindan una gran utilidad, en muchas ocasiones deshabilitan el
significado de un carcter especial. A continuacin se muestra una
lista de algunas de las secuencias de escape:

Secuencia de Escape Descripcin


\t Tabulador horizontal. Mueve el
cursor al siguiente tabulador
\r Retorno de carro. Coloca el
cursor hacia el principio de la
lnea actual
\\ Imprime el carcter backslash
"\". Una sola diagonal sera
interpretada como un carcter
de escape
\' Imprime la comilla simple. Sin la
diagonal invertida, se
interpretara como un inicio o un
fin de una cadena
\" Imprime la doble comilla. Sin la
diagonal invertida, se
interpretara como un inicio o un
fin de una cadena
\$ Imprime el carcter $
\n Nueva Linea

2.9. Conversin de Tipos

Cambiar una variable de tipo puede hacerse de dos formas, manual


o automtica. La conversin automtica significa que PHP buscar
el tipo apropiado para el resultado de una operacin dependiendo
del tipo de los operandos y del operador. Si los dos operandos son
del mismo tipo (ej.: dos enteros), el resultado ser de ese tipo
(entero), el resto se comporta de acuerdo a la siguiente tabla:

Operadores Resultados
Int (operador matemtico) float float
Int (operador matemtico) string int
Int (operador catenacin) string string
float (operador matemtico) float
string

$entero = 123;
$flotante = 9.231;
$texto = "10";
$a = $entero + $flotante; # (float)132.231
$a = $texto + $texto; # (int)20
$a = $texto + $entero; # (int)133
$a = $entero . $texto; # (string)"12310"
$a = $texto . $entero; # (string)"10123"

Ahora vea este ejemplo:

<?php
$texto1 = "15";
$texto2 = "5.5";

echo $texto1 + $texto2;


#Imprime 20.5 a pesar de ser cadenas de texto se realiza la
operacin aritmtica

$texto3 = "cadena";

echo $texto1 + $cadena; #Imprime 15


echo $texto1 * $cadena; #Imprime 0
?>

Conversin de Cadenas a Valores Numricos

La regla para convertir un string en nmero es utilizar los primeros


caracteres que formen un nmero. Si este nmero es entero, se
convierte a entero, y los siguientes caracteres alfabticos no se
toman en cuenta, en caso de empezar con una cadena o string el
valor ser 0. Si contiene notacin cientfica se convierte a flotante.

<?php
$texto1 = "15";
$texto2 = "Hola Mundo";
$texto3 = "36 guardado aqui";
$numero = 55;

echo $texto1 + $texto2; #Imprime 15


echo $texto1 + $texto3; #Imprime 51
echo $numero + $texto2; #Imprime 55
echo $numero + $texto3; #Imprime 91
?>

Casting de Variables

Hacer un casting es cambiar el tipo de dato de una variable, hay


castings implcitos y explcitos, un ejemplo de casting implcito es el
realizar una operacin aritmtica entre una cadena y un entero el
resultado es un entero, entre un entero y un flotante es un flotante,
lo que quiere decir que el tipo de dato resultante en una operacin
aritmtica es el del operador con un mayor tipo de dato, a
continuacin un ejemplo:

<?php
$texto1 = "15";
$entero = 55;
$flotante = 1.5;

$resultado1 = $texto1 + $entero; # $resultado1 es un entero


$resultado2 = $flotante + $entero; # $resultado2 es un
flotante
?>
El casting explto de una variable puede hacerse usando una
sintaxis similar al de lenguaje C, es decir colocando entre parntesis
el tipo de dato al cual queremos que la variable se convierta
seguida de la variable en cuestin.

Los castings permitidos son:

(int) (integer) Entero


(real) (double) (float) Flotante
(string) String
(array) Arreglo
(object) Objeto
(boolean) Booleano

A continuacin se muestra un ejemplo de casting explcito:

<?php

$texto1 = "15";
$entero = 55;
$flotante = 1.5;

$resultado1 = (object) $entero;


$resultado2 = (double) $texto1;
$resultado3 = (string) $flotante;
echo gettype($resultado3); # Imprime string

?>

2.10. Operadores

Los operadores son smbolos que representan operaciones sobre un


valor, son un componente esencial de cualquier lenguaje de
programacin. Con ellos podemos asignar, realizar operaciones
aritmticas, concatenar o comparar los valores de una variable.
2.10.1. Operadores de asignacin

Ya con anterioridad hemos visto este operador y nos permite


modificar el valor de una variable, el operador de asignacin bsico
es el igual (=), que da el valor que lo sigue a la variable que lo
precede:

<?php
$miVariable = "valor";
?>

2.10.2. Operador de concatenacin

El operador de concatenacin '.', es til para unir o concatenar dos


variables sin aplicarle ninguna operacin aritmtica:

<?php
$edad = 36;
echo "Mi edad es " . $edad;
?>
2.10.3. Operadores Aritmticos

Estos operadores son tiles para realizar operaciones matemticas,


a continuacin se muestran en la siguiente tabla:

Operador Nombre Descripcin Ejemplo


+ Suma Suma dos 5 + $var
nmeros
- Resta Resta dos $var 5
nmeros
* Multiplicacin Multiplica dos 5 * 9
nmeros
/ Divisin Divide dos $var1 / $var2
nmeros
% Mdulo Devuelve el 5 % 2
resto de la
divisin de dos
nmeros, en el
ejemplo el
resultado es 1

2.10.4. Operadores de Comparacin

Los operadores de comparacin, como su nombre indica, permiten


comparar dos valores, un uso comn de estos operadores es el de
establecer condiciones en las estructuras repetitivas y
condicionales:

Operador Nombre Descripcin Ejemplo


== Igualdad Cierto si $a es $a == $b
igual a $b
=== Identidad Cierto si $a es $a === $b
igual a $b y si
son del mismo
tipo
!= Desigualdad Cierto si $a no $a != $b
es igual a $b
< Menor que Cierto si $a es $a < $b
estrictamente
menor que $b
> Mayor que Cierto si $a es $a > $b
estrictamente
mayor que $b
<= Menor o igual Cierto si $a es $a <= $b
que menor o igual
que $b
>= Mayor o igual Cierto si $a es $a >= $b
que mayor o igual
que $b
<> Desigualdad Cierto si $a no $a <> $b
es igual a $b
!=== No idntico Cierto si $a no $a !=== $b
es igual a $b o
no son del
mismo tipo

2.10.5. Operadores Lgicos

Los operadores lgicos al igual que los operadores de comparacin


son usados en estructuras repetitivas y condicionales, en este caso
los operadores lgicos se usan para evaluar varias comparaciones,
combinando los posibles valores de estas.

Operador Nombre Descripcin Ejemplo


&& Y Devuelve verdadero 5 > 2 && 1 < 2
cuando ambas
condiciones son
verdaderas
and Y Devuelve verdadero 5 > 2 && 1 < 2
cuando ambas
condiciones son
verdaderas
|| O Devuelve verdadero 5 > 2 || 1 < 2
cuando al menos una
de las dos es
verdadera
or O Devuelve verdadero 5 > 2 or 1 < 2
cuando al menos una
de las dos es
verdadera
! No o Niega el valor de la !(5 > 4)
negacin expresin, en el
ejemplo 5 es mayor
que 4 devuelve
verdadero al ser
negada termina
devolviendo falso
xor O Se evalu a verdadero $var1 xor !var2
exclusivo si alguna de las dos
variables es
verdadera, pero no
ambas.

A continuacin un ejemplo empleado operadores lgicos:

<?php
$a = 45;
$b = 9;
$c = 9;
echo ($a == $b) && ($c > $b); # Devuelve 0, pero no se
imprime
echo ($a == $b) || ($b == $c); # Devuelve 1, se imprime
echo !($b <= $c); # Devuelve 0, pero no se
imprime
?>

Observe que los parntesis ayudan a organizar las expresiones as


como para establecer las precedencias de los operadores y
agruparlos.

2.10.6. Operadores de Incremento y Decremento

Se emplean para incrementar o decrementar en 1 el valor de una


variable. Los operadores de incremento y decremento no afectan a
los valores booleanos.

Operador Nombre Descripcin


++ Pre-incremento Incrementa $variable en uno, y luego
$variable devuelve $variable
$variable+ Post-incremento Devuelve $variable, y luego
+ incrementa $variable en uno
--$variable Pre-decremento Decrementa $variable en uno, luego
devuelve $variable
$variable-- Post- Devuelve $variable, luego
decremento decrementa $variable en uno
A continuacin un ejemplo:

<?php
$variable1 = 5;
$variable2 = 1;
echo ++$variable1 . " " . $variable2++; #Imprime 61
?>

2.10.7. Operadores Combinados

Una forma habitual de modificar el valor de las variables es


mediante los operadores combinados, Este tipo de expresiones no
son ms que abreviaciones de otras formas ms clsicas, por
ejemplo:

$variable1 = $variable1 + 15; #Esta operacin es equivalente


a la de abajo
$variable1 += 15; #Esta operacin es equivalente
a la de arriba
//A $variable1 de las dos formas se le incrementa un valor de
15

A continuacin se presenta una tabla con los operadores


combinados.
Operador Descripcin
+= Aumenta y asigna ese valor
-= Disminuye y asigna ese valor
*= Multiplica y asigna ese valor
/= Divide y asigna ese valor
%= Obtiene el mdulo y asigna ese
valor
.= Concatena o une dos cadenas y
asigna ese valor

2.11. Estructuras Condicionales y Repetitivas

Todo lenguaje de programacin proporciona rdenes de control de


flujo, que permite al programa tomar decisiones lgicas segn
reciba unos parmetros o otros, a esto se le conoce tambin como
cambiar el flujo de un programa, con las estructuras indicaremos
que accin debe realizar en cada caso, adems tambin nos dar la
posibilidad de realizar una misma accin n cantidad de veces con
tan solo una lnea de cdigo.

2.11.1. Condicional if

Esta estructura condicional permite la ejecucin de un determinado


bloque de cdigo si se cumple dicha condicin, en caso de no ser
as no se ejecuta el bloque y continua la ejecucin del programa sin
ser ejecutadas las lneas dentro del bloque if, la sintaxis se presenta
a continuacin:

if(condicion)
//Si es una lnea de cdigo no es necesario envolverla con
llaves

tambin es valido y aconsejable la siguiente forma:

if(condicion){
lnea de cdigo
lnea de cdigo
}

2.11.2. Condicional if else

Es una estructura similar a la anterior pero brindando la posibilidad


de ejecutar otro bloque de cdigo sino no se cumple la condicin,
la sintaxis se presenta a continuacin:

if(condicion)
//Si es una lnea de cdigo no es necesario envolverla con
llaves
else
//Si es una lnea de cdigo no es necesario envolverla con
llaves

tambin es valido y aconsejable la siguiente forma:

if(condicion){
lnea de cdigo
lnea de cdigo
}else{
lnea de cdigo
lnea de cdigo
}

Condicional if elseif

Esta estructura a diferencia de la anterior pregunta por diferentes


condiciones a esto se le entiende como bifurcaciones, cambiando el
flujo de ejecucin del programa a un determinado bloque de cdigo
siempre y cuando dicho bloque cumpla con la condicin.

Recuerde que el bloque el else se ejecuta sino se cumple ninguna


de la o las condiciones, la sintaxis se presenta a continuacin:

if(condicion){
lnea de cdigo
}elseif(condicion){
lnea de cdigo
}else{
lnea de cdigo
}

tambin se puede utilizar el bloque elseif de esta forma else if,


note la diferencia en este ejemplo:

if(condicion){
lnea de cdigo
}else if(condicion){
lnea de cdigo
}else{
lnea de cdigo
}
A continuacin se muestra un ejemplo PHP completo haciendo uso
del if else:

<html>
<head>
<title>Index</title>
</head>
<body>
<?php
$variable = 2;
if($variable == 1){
echo "Uno";
}elseif($variable == 2){
echo "Dos";
}else
echo "Tres";
?>
</body>
</html>

2.11.3. Estructura Switch

Similar a la estructura if, toma distintas decisiones en funcin de


distintos valores que pueda tener una variable. Su sintaxis es la
siguiente:

switch(variable){
case valor1:
//Instruciones
break;
case valor2:
//Instruciones
break;
default:
//Instruciones
}
Analicemos el bloque de cdigo anterior: El bloque switch se
construye colocando la variable en los argumentos del switch
(switch(variable)) esta variable puede tomar diversos valores y
preguntamos por los valores que son de relevancia para nosotros
usando la palabra case, notese que preguntamos para ver si la
variable tiene el valor 1 con la sentencia (case valor1:) y si esa
variable tiene ese valor se ejecutan las instrucciones que deseemos
de igual forma preguntamos para ver si la variable tiene un valor de
2 en lugar de 1. La sentencia break; la empleamos para que se
salga del bloque la ejecucin normal del programa, sino la variable
no llegase a tener el valor de 1 o 2 se ejecutara las instrucciones
de la seccin por defecto del bloque switch (default:). Si no se
coloca una sentencia break al final de las instrucciones del case,
se seguir ejecutando las sentencias del siguiente case o hasta
que se encuentre una sentencia break.

A continuacin se muestra un ejemplo PHP completo haciendo uso


del switch:

<html>
<head>
<title>Index</title>
</head>
<body>
<?php
$variable = 2;
switch($variable){
case 1:
echo "Uno";
break;
case 2:
echo "Dos";
break;
default:
echo "Tres o mas";
}
?>
</body>
</html>

2.11.4. Ciclo while

El ciclo while es una estructura repetitiva que permite ejecutar


tanta veces una serie de instrucciones siempre y cuando se cumpla
una determinada condicin, la sintaxis se presenta a continuacin:

while(condicin){
//Intrucciones
}
A continuacin se muestra un ejemplo PHP completo haciendo uso
del while:

<html>
<head>
<title>Index</title>
</head>
<body>
<?php
$variable = 0;
while($variable < 5){
echo "$variable";
$variable++;
}
//Esto imprime 01234
?>
</body>
</html>

2.11.5. Ciclo do... while

Esta es una estructura repetitiva similar a la anterior, se usa cuando


tenemos claro que por lo menos una vez debe ejecutarse el
conjunto de acciones dentro del bloque do - while, y al final
preguntamos por la condicin. Su sintaxis es la siguiente:
do{
//Intrucciones
}while(condicin);

A continuacin se muestra un ejemplo PHP completo haciendo uso


del do... while:

<html>
<head>
<title>Index</title>
</head>
<body>
<?php
$variable = 0;
do{
echo "$variable";
$variable++;
}while($variable < 5)
?>
</body>
</html>
2.11.6. Ciclo for

Es una estructura repetitiva, se usa para repetir una misma


operacin un nmero determinado de veces al igual que las dos
estructuras anteriores. Su sintaxis es la siguiente:

for(inicializacin; condicin; actualizacin){


//Instrucciones
}
Note que el for esta compuesto de 3 partes:
Inicializacin: esta parte se ejecuta una solo vez y es al
entrar en el bucle for. En esta parte se coloca la inicializacin
de la o las variables que contara el nmero de veces que se
repetira el bloque for de acuerdo a la o las condiciones
planteadas.
Condicin: en esta parte se coloca la condicin que se
evaluara cada vez que se inicie el bucle, de no cumplirse esta
condicin se terminara la ejecucin del cliclo for.
Actualizacin: tambin conocido como la parte de
incremento de las variables inicializadas en la parte de
inicializacin. Sirve para indicar los cambios que queremos
aplicar a la o las variables ya inicializadas cada vez que se
ejecuta el bucle for.

Aunque se puede dejar vacos los argumentos del ciclo for queda
por parte del programador manejar la ejecucin del bucle con otras
sentencias, de lo contrario se quedara ejecutndose el ciclo
indefinidamente, la sintaxis para lo expuesto anteriormente es la
siguiente:

for(;;){
//Instrucciones
}

A continuacin se muestra un ejemplo PHP completo haciendo uso


del for:

<html>
<head>
<title>Index</title>
</head>
<body>
<?php
for($variable = 0; $variable < 5; $variable++){
echo "$variable";
}
//esto imprime 01234
?>
</body>
</html>
2.11.7. Ciclo foreach

Este ciclo esta implementado a partir de la versin 4 de PHP, la


utilidad de este bucle radica en la facilidad que nos brinda a la hora
de recorrer arreglos. Hay dos sintaxis:

foreach($arreglo as $valor) {
//Instrucciones
}

O de la siguiente forma:

foreach($arreglo as $clave => $valor) {


//Instrucciones
}

De la primera forma se recorre el arreglo de uno en uno y en cada


iteracin o recorrido del arreglo el valor es depositado en la variable
$valor. De la segunda forma tanto la clave (o el indice) y el valor es
dejado en las respectivas variables $clave $valor. Fjese que no se
requiere de una condicin de parada para finalizar el bloque foreach
ya que el recorrido del arreglo es automtico.

A continuacin se muestra un ejemplo PHP completo haciendo uso


del foreach:
<html>
<head>
<title>Index</title>
</head>
<body>
<?php
$capital["Aragua"] = "Maracay";
$capital["Zulia"] = "Maracaibo";
$capital["Tachira"] = "San Cristobal";
$capital["Lara"] = "Barquisimeto";
foreach($capital as $clave => $valor){
echo "La capital del estado" . " " . $clave . " es " .
$valor . "<br>";
}
?>
</body>
</html>

2.11.8. Sentencias break y continue

Break: Se usa para salirse del bucle, de esta forma se deja de


interpretar el cdigo que sigue despus de el break.
Continue: Sirve para volver al principio del bucle desde
cualquier parte del bucle, de esta forma se deja de interpretar
el cdigo que sigue despus de el continue pero no se sale del
bucle.

A continuacin se muestra un ejemplo PHP completo haciendo uso


del break y continue:

<html>
<head>
<title>Index</title>
</head>
<body>
<?php
$variable = 0;
while($variable < 10){
$variable++;
if($variable == 2){
continue;
}else if($variable == 5){
break;
}
echo $variable;
}
//Esto imprime 134
?>
</body>
</html>
UNIDAD 3: FUNCIONES DEFINIDAS POR EL USUARIO Y
PREDEFINIDAS DE PHP

Introduccin

Una funcin es un tipo de subalgoritmo, una secuencia de rdenes


que hacen una tarea especfica de una aplicacin ms grande. En
PHP as como para otros lenguajes una funcin consiste en un
conjunto de rutinas y acciones que a lo largo del script van a ser
ejecutadas de una a muchas veces siendo agrupados en una
funcin y desde cualquier punto del script puede ser llamada y
ejecutada. El uso de funciones nos da la capacidad de agrupar
varias instrucciones bajo un solo nombre y poder llamar a estas
varias veces desde diferentes sitios, ahorrndonos la necesidad de
escribir de nuevo el mismo cdigo. En la unidad pasadas ya
habamos mencionado que las funciones definidas por el usuario
como las predefinidas por el lenguaje PHP no son sensibles a
maysculas y minsculas.

3.1. Funciones Definidas por el Usuario

Estas funciones son aquellas que el programador a desarrollado


para uso de su aplicacin. La sintaxis de una funcin es la siguiente:

function miFuncion(){
instrucciones;
}

Las funciones se definen dentro del bloque de cdigo PHP, y se


declaran colocando antes del nombre de la funcin la palabra
reservada function, para el caso anterior la funcin no recibe
parmetros ya que entre parntesis no hay nada, ni retorna un
valor, a continuacin la sintaxis de una funcin que recibe
argumentos o parmetros y retorna un valor:

function miFuncion($var1, $var2, ..., $varN){


instrucciones;
return $valor;
}

La forma de invocar una funcin es usando el nombre de la misma


miFuncion().

Hay que tener en cuenta que en PHP 3 hay que definir en lneas
previas la funcin para ser invocada, en PHP 4 se pueden definir en
donde sea las funciones y ser invocadas sin ningn problema desde
lneas previas a la definicin de una funcin.

A continuacin un ejemplo:

<html>
<head>
<title>Index</title>
</head>
<body>

<?php
SALUDAR(); //Note que se invoca en mayscula y antes de
definir a la funcin

function saludar(){
echo "Hola a todos, ";
}
function calcular($valor1, $valor2){
return $valor1 + $valor2;
}

echo "La suma de dos cifras es " . calcular(45, 15);


//Imprime Hola a todos, La suma de dos cifras es 60

?>
</body>
</html>

Funciones Anidadas

En PHP existe la posibilidad de declarar una funcin dentro de otra,


teniendo en cuenta que para invocar a una funcin que esta
definida dentro de otra se debe invocar en primer lugar a la funcin
que la contiene, de lo contrario se generara un error dicindonos
que invocamos a una funcin no definida y esto es porque no
hemos invocado a la funcin que la contiene ya que al invocar a
esta ultima se define a la interna y empieza a existir.

A continuacin un ejemplo:

<?php
function saludar(){
echo "Hola";
function aQuien(){
echo " a todos!";
}
}
saludar(); //Si comentamos esta lnea nos dar un error la
siguiente
aQuien();
//Imprime Hola a todos!
?>

Tambin podemos anidar funciones en bloques condicionales, de


forma un tanto similar al ejemplo anterior para invocar a una
funcin que se encuentra dentro de un bloque condicional, la
condicin se tiene que cumplir de lo contrario se generara un error
similar al de las funciones colocadas dentro de otras funciones La
funcin invocada no ha sido declarada, A continuacin un ejemplo:

<?php
$condicion = true; //Si coloca false en lugar de true, se
generara un error
if($condicion){
function saludar(){
echo "Hola a todos!";
}
}
saludar();
//Imprime Hola a todos!
?>

Retorno de un Valor de una Funcin

Para retornar un valor en una funcin se usa la palabra reservada


return, solo se puede devolver o retornar un valor, si quisiramos
devolver ms de un valor en una funcin existe la posibilidad de
devolver un arreglo. Observe este ejemplo:

<?php
function paises(){
$pais[0] = "Austria";
$pais[1] = "Bolivia";
$pais[2] = "Venezuela";
return $pais;
}

$miVariable = paises(); //Lo que retorna esta funcin lo asignamos


a la variable

echo $miVariable[0] . " " . $miVariable[1] . " " . $miVariable[2];

//Imprime Austria Bolivia Venezuela


?>

Paso de Parmetros por Valor y por Referencia

Parmetros por Referencia: En la unidad pasada ya


habamos visto el operador de referencia &, vimos que era
como crear un alias a una variable, en el mbito de una
funcin cuando se pasa un valor a una funcin y en la funcin
se declaro en los argumentos de esta un valor con el smbolo
(&) antecediendo a la variable es una referencia y si esta
variable cambia su valor en el cuerpo de la funcin la variable
global tambin vera ese cambio. Observe el siguiente cdigo
de ejemplo:

<?php
$valor = 1;
contador($valor);

echo $valor; //Imprime 5

function contador(&$variable){
$variable = 5;
}
?>

Parmetros por Valor: Este tipo de pase de parmetros es


el mas usual, funciona un tanto similar a la forma anterior con
la diferencia que cuando se pasa a la funcin un valor se le
pasa una copia de la variable, de esta manera si se cambia el
valor de la variable pasada a la funcin estos cambios no
alteraran a la variable global. Observe el siguiente cdigo de
ejemplo:

<?php
$valor = 1;

contador($valor);

echo $valor; //Imprime 1

function contador($variable){
$variable = 5;
}
?>

Parmetros por Defecto

Existe la posibilidad de pasar un valor a una variable por defecto,


cuando no se pasa la cantidad de variables esperada en los
argumentos de una funcin, estos parmetros con valores por
defecto deben colocarse al final en los argumentos de una funcin.
Observe el siguiente cdigo de ejemplo:

<?php

function calcular($variable1, $variable2 = 10){


return $variable1 + $variable2;
}

echo "La suma de dos cifras es " . calcular(35, 7) . "<br>";


//calcular() devuelve 42
echo "La suma de dos cifras es " . calcular(35); //calcular() devuelve
45

?>
3.2. Funciones Predefinidas de PHP

PHP es un lenguaje rico en funciones, hay una gran variedad de


funciones predefinidas que se encuentran en el ncleo de PHP y
otras que se encuentran en extensiones especificas como la de
mysql que para poder ser usadas hay que cargar dicha extensin. A
continuacin veremos algunas de las funciones ms utilizadas en
PHP.

Funcin func_num_args()

Esta funcin devuelve el nmero de parmetros pasados a una


funcin definida por el usuario. Observe el siguiente cdigo:

<?php
function miFuncion($variable1, $variable2, $variable3)
{
echo "Cantidad de argumentos " .
func_num_args();
}
miFuncion("", 0, ""); //Imprime Cantidad de argumentos
3
?>

Funciones func_get_arg() y func_get_args()


func_get_arg($posicion): retorna el valor de la variable que
esta en la posicin indicada por la variable $posicion, las
posiciones empiezan desde 0.

<?php
function miFuncion($variable1, $variable2, $variable3)
{
echo func_get_arg(0) . " " .
func_get_arg(2);//Imprime Juan Andrea
}
miFuncion("Juan", 0, "Andrea");
?>

func_get_args(): Devuelve una matriz que comprende la


lista de argumentos de una funcin.

<?php
function miFuncion($variable1, $variable2, $variable3)
{
$arreglo = func_get_args();
echo $arreglo[0] . " " . $arreglo[2];//Imprime Juan
Andrea
}
miFuncion("Juan", 0, "Andrea");
?>
Funcin function_exists()

Esta funcin devuelve true si el nombre de la funcin que se le pasa


por argumentos es una funcin que esta definida en algn lado del
cdigo y false sino esta definida. Observe el siguiente cdigo:

<?php
if(function_exists(saludar)){
echo "Existe<br><br>";
}else{
echo "No Existe<br><br>";
}
function saludar(){
echo "Hola Mundo";
}
?>

Funcin get_extension_funcs()

Esta funcin devuelve los nombres de todas las funciones definidas


en el mdulo indicado en los argumentos de la funcin. A
continuacin cdigo de ejemplo:

<?php
foreach(get_extension_funcs("mysql") as $clave =>
$valor){
echo "$clave = $valor<br>";
}
?>

3.3. Funciones de Cadena

Las funciones de cadena se emplean en la manipulacin de texto,


una de estas funciones se ha estado empleando con frecuencia y es
el de impresin de un texto en el navegador, la funcin echo.

Funcin print()

Muestra el valor de una cadena pasada por argumentos. Siempre


devuelve el valor 1. print() no es realmente una funcin (es una
sentencia del lenguaje) de modo que no se requiere el uso de los
parntesis. A continuacin un cdigo de ejemplo:

<?php
$texto = " Mundo";
print("<br>Hola $texto");
print "<br>Hola $texto";
print '<br>Hola' . $texto;
?>

Funcin printf()
Esta funcin trabaja de forma muy similar a la anterior con la
particularidad que da un formato especifico a la salida.

Smbolo Descripcin
% Este carcter es el que permite
la definicin del formato a
utilizar.
b El argumento que recibe es
tratado como un entero y es
mostrado en forma binaria.
c El argumento que recibe es
tratado como un entero y es
mostrado el valor ASCII de dicho
entero.
d El argumento que recibe es
tratado como un entero y es
mostrado como un nmero
decimal con signo.
u El argumento que recibe es
tratado como un entero y es
mostrado como un nmero
decimal sin signo.
f El argumento que recibe es
tratado como un nmero real y
es mostrado como un nmero
punto flotante.
o El argumento que recibe es
tratado como un entero y es
mostrado como un nmero en
base octal.
s El argumento que recibe es
tratado como una cadena y es
mostrado como tal, una cadena.
x El argumento que recibe es
tratado como un entero y es
mostrado como un nmero
hexacimal con letras minsculas.
X El argumento que recibe es
tratado como un entero y es
mostrado como un nmero
hexacimal con letras
maysculas.

A continuacin se presenta un ejemplo de la funcin printf():

<?php

$valor = 10;
printf("%b", $valor);
printf("<br>%b", 10);
printf("<br>%c", 64);
printf("<br>%.2f", 1600);
printf("<br>%o", 10);
printf("<br>%x", 10);
printf("<br>%X", 10);

?>

Funcin sprintf()

La diferencia de esta funcin con la anterior es que esta


simplemente da el formato a una variable, al mismo tiempo que se
asigna ese formato a otra variable para ser usada. Observe el
siguiente ejemplo:

<?php
$valor = 10;
$valorF = sprintf("%.2f", $valor);
echo $valorF;
?>

Funcin trim()

Esta funcin elimina los caracteres de espacio en blanco que


puedan haber al principio o al final de una cadena, es til en
formularios ya que garantiza que los datos como las contraseas y
nombre de usuarios no posean dichos caracteres que por error o
descuido del usuario puedan ser tipeados. Observe el siguiente
cdigo de ejemplo:

<?php
$valor = " Hola a todo el ";
$valorF = trim($valor);
echo $valor . "Mundo<br>";
echo $valorF . "Mundo<br>";
?>

Funcin ltrim()

Esta funcin trabaja muy similar a la anterior con la diferencia de


que solo elimina los caracteres de espacio en blanco que se
encuentran a el inicio de una cadena.

Funcin rtrim() y chop()

Estas funciones trabajan muy similar a la anterior con la diferencia


de que solo eliminan los caracteres de espacio en blanco que se
encuentran en el final de una cadena.

Funcin substr()

Esta funcin devuelve una porcin de una cadena, la porcin es


especificada en los argumentos de la funcin. Los argumentos que
recibe esta funcin son: la cadena, el comienzo y la longitud,
aunque se puede omitir este ltimo.

Hay que considerar que si el nmero perteneciente al segundo


argumento de la funcin substr(cadena, comienzo, longitud) es un
nmero positivo, la funcin comenzar a contar desde la parte
izquierda de la cadena. Por el contrario si es un nmero negativo, la
funcin empezar a contar desde la parte derecha de la cadena.

A continuacin cdigo de ejemplo:

<?php
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f
?>

Funcin substr_count()

Esta funcin devuelve el nmero de veces que una subcadena


aparece en una cadena. Observe el cdigo de ejemplo:

<?php
echo substr_count("Hola al mundo de PHP, un mundo sencillo",
"mundo");
//Imprime 2
?>

Funcin strlen()

Esta funcin devuelve el nmero de caracteres que posee una


cadena. Observe el cdigo de ejemplo:

<?php
$var = strlen("Hola Mundo");
echo $var;//Imprime 10
?>

Funcin strtolower() y strtoupper()

La funcin strtolower() devuelve una cadena en minscula mientras


que la funcin strtoupper() devuelve la cadena en mayscula.
Observe el cdigo de ejemplo:

<?php
echo strtoupper("Bienvenido") . "<br>"; //Imprime
BIENVENIDO
echo strtolower("Bienvenido") . "<br>"; //Imprime bienvenido
?>
Funcin htmlentities()

Convierte los caracteres especiales a su entidad HTML aplicable, los


caracteres que tengan una entidad equivalente en HTML sern
cambiados a esas entidades. Por ejemplo para mostrar el smbolo >
mayor que en una pgina Web se necesita la entidad HTML &gt;
pero usando esta funcin no se necesita dicha entidad ya que la
funcin se encarga del cambio, para visualizarlo basta con ir al
cdigo fuente de la pgina mostrada en el navegador. Observe el
cdigo de ejemplo:

<?php
echo htmlentities("50 > 10"); //Imprime 50 > 10
?>

Ahora valla a Ver | cdigo fuente y observe lo que muestra el el


cdigo de la pgina, 50 &gt; 10.

3.4. Funciones de Arreglo

Funcin array()

Esta funcin crea un arreglo con tan solo pasar una lista de datos,
de cualquier tipo incluso combinaciones de tipo de datos, as como
tambin permite crear arreglos indexados y asociativos. Observe el
cdigo de ejemplo:

<?php
$nombres = array("Diana", "Sandra", "Carlos", "Javier");
echo $nombres[0]; //Imprime Diana
?>

El anterior era un arreglo indexado, A continuacin la creacin de


un arreglo asociativo:

<?php
$nombres = array("Montilla" => "Diana", "Melendez" =>
"Sandra");
echo $nombres["Melendez"]; //Imprime Sandra
?>

Funcin print_r()

Esta funcin imprime los valores de un arreglo. Observe el siguiente


ejemplo:

<?php
$nombres = array("Montilla"=> "Diana", "Sandra", "Carlos",
"Javier");

print_r($nombres);
//Imprime lo de abajo
//Array ( [Montilla] => Diana [0] => Sandra [1] => Carlos [2]
=> Javier )
?>

Funcin implode() y explode()

La funcin implode transforma un arreglo en una cadena


empleando un carcter separador o delimitador para diferenciar un
elemento del arreglo de otro. Mientras que la funcin explode
transforma una cadena en un arreglo separando los elementos a
partir de un carcter separador. Observe el sigueinte ejemplo:

<?php
$nombres = array("Diana", "Sandra", "Carlos",
"Javier");

$cadena = implode("-", $nombres);

echo $cadena . "<br>";

$names = explode("-", $cadena);


echo $names[2];
?>
Funcin asort() y arsort()

asort(): Esta funcin ordena los elementos en el arreglo


ascendentemente, si se trata de palabras las ordena
alfabeticamente de la A a la Z y se trata de nmeros los
ordena de menor a mayor. Si es una combinacin de palabras
y nmeros ordena las palabras y luego los nmeros.

arsort(): Esta funcin ordena los elementos en el arreglo


descendentemente, si se trata de palabras las ordena
alfabticamente de la Z a la A y se trata de nmeros los
ordena de mayor a menor. Si es una combinacin de palabras
y nmeros ordena los nmeros y luego las palabras.

A continuacin cdigo de ejemplo:

<?php
$names = array(15, 21, 7, 54, 1);
asort($names);
print_r($names);
print("<br>");
arsort($names);
print_r($names);
?>

Funcin list() y each()


each(): devuelve el par clave/valor actual para la matriz y
avanza el puntero de la misma. Esta pareja se devuelve en
una matriz de 4 elementos, con las claves 0, 1, key, y value.
Los elementos 0 y key contienen el nombre de clave del
elemento de la matriz, y 1 y value contienen los datos. A
continuacin cdigo de ejemplo:

<?php
$paises = array("Venezuela", "Brazil", "Argentina",
"Colombia");
$pais = each($paises);
print_r($pais);
?>

list(): al igual que array(), esta no es realmente una funcin,


sino una construccin del lenguaje. list() se usa para asignar
una lista de variables en una sola operacin. A continuacin
cdigo de ejemplo:

<?php
$paises = array("Venezuela", "Brazil", "Argentina",
"Colombia");
while(list($clave, $valor) = each($paises)){
echo $clave . " " . $valor . "<br>";
}

//Esto hace exactamente lo mismo que lo anterior


/*foreach($paises as $clave => $valor){
echo $clave . " " . $valor . "<br>";
} */
?>

Otro cdigo de ejemplo:

<?php
$names = array('diana', 'sandra', 'ana');

list($name1, $name2, $name3) = $names;

echo $name1 . " " . $name2 . " " . $name3; //Imprime diana
sandra ana

?>

3.5. Funciones de Fecha

Funcin date()

Esta funcin devuelve una cadena de caracteres que corresponde


con una fecha a la que se ha aplicado un determinado formato. Para
definir el formato de la fecha se dispone de las siguientes opciones:

Opcin Descripcin
a Hace que en la hora aparezca la
cadena am o pm
A Hace que en la hora aparezca la
cadena AM o PM
d Da del mes con dos dgitos
desde 01 a 31
D Da de la semana como cadena
de tres letras(en ingles).Ejemplo:
"Mon"
F Nombre del mes completo como
una cadena de caracteres.
Ejemplo: "March"
h Hace que la hora aparezca en
formato 01 a 12
H Hace que la hora aparezca en
formato 00 a 23
g Hace que la hora aparezca en
formato 1 a 12
G Hace que la hora aparezca en
formato 0 a 23
i Hace que los minutos aparezcan
en formato 00 a 59
j Hace que el da aparezca en
formato 1 a 31
l Da de la semana completo.
Ejemplo: Monday
L Escribe 0 si no es ao bisiesto y
1 si lo es
m Hace que el mes aparezca en
formato 01 a 12
M Hace que el mes aparezca en
formato 1 a 12
s Hace que los segundos
aparezcan en formato 00 a 59
S Cadena de caracteres con el
sufijo ordinal. Ejemplo: "th","nd"
t Nmero de das del mes
especificado de 28 a 31
U Nmero de segundos desde el
comienzo de la "era UNIX"
w Nmero del da de la semana de
0a6
Y Ao con cuatro cifras
y Ao con dos cifras
z Da del ao de 0 a 365
Z Obtiene la diferencia horaria en
segundos con respecto al GMT

A continuacin cdigo de ejemplo:


<?php
echo date("h : i A"); //Imprime algo similar 04 : 28 PM
?>

3.6. Funciones Matemticas

Al igual que otros lenguajes de programacin PHP provee funciones


matemticas similares al de el lenguaje C. Estas permiten facilitar
en la mayora de los casos operaciones aritmticas estndares
como elevar un nmero a una potencia determinada por ejemplo.

Funciones de Redondeo

round(): Esta funcin redondea un nmero pasado por


argumentos, teniendo en cuenta que si la parte decimal es
inferior a ,50 se redondea al entero inmediato inferior, por el
contrario si la parte decimal es superior a 0,50 se redondea al
entero inmediato superior.

Si se desea tomar en cuenta los decimales, despus del punto se


debe especificar como segundo argumento de la funcin la cantidad
de decimales que se quieren.
A continuacin cdigo de ejemplo:

<?php
echo round(5.4) . "<br>"; //Imprime 5
echo round(5.5) . "<br>"; //Imprime 6

echo round(5.55213, 2) . "<br>"; //Imprime 5.55


?>

ceil(): esta es una subdivisin de la funcin round() y


redondea un nmero hacia arriba. A continuacin cdigo de
ejemplo:

<?php
echo ceil(5.7) . "<br>"; //Imprime 6
?>

floor(): esta es una subdivisin de la funcin round() y


redondea un nmero hacia abajo. A continuacin cdigo de
ejemplo:

<?php
echo floor(5.7) . "<br>"; //Imprime 5
?>

Funcin abs()
Esta funcin devuelve el valor absoluto de un nmero. A
continuacin cdigo de ejemplo:

<?php
$valor1 = 36;
$valor2 = -36;

echo abs($valor1) . "<br>"; //Imprime 36

echo abs($valor2) . "<br>"; //Imprime 36


?>

Funciones Aleatorias

rand(): devuelve un valor pseudo-aleatorio que se halla entre


dos valores uno mnimo y uno mximo.

mt_rand(): esta funcin es similar a la anterior se usa cuando


se requiere un rango de aleatoriedad mayor a de 32768.

Anteriormente se empleaba la funcin srand() mt_srand() antes


de invocar cualquiera de las dos funciones descritas anteriormente
para garantizar una buena aleatoriedad, ahora a partir de PHP
4.2.0, no es necesario inicializar el generador de nmeros aleatorios
con srand() mt_srand(), ya que esto se hace automticamente. A
continuacin cdigo de ejemplo:

<?php
echo rand(0, 10) . "<br>"; //Imprime un valor que va desde
0 a 10
echo mt_rand(0, 10) . "<br>"; //Imprime un valor que va
desde 0 a 10
?>

3.7. Funciones de Manejo de Archivo

Funcin fopen()

Esta funcin permite abrir un archivo, especificando como primer


argumento la ruta y nombre del archivo, como segundo argumento
debe especificarse el modo en que se desea abrir el archivo. A
continuacin se muestra una tabla con los distintos modos en que
se puede abrir un archivo:

Modo Descripcin
r Apertura para slo lectura; ubica
el apuntador de archivo al
comienzo del mismo.
r+ Apertura para lectura y
escritura; ubica el apuntador de
archivo al comienzo del mismo.
w Apertura para slo escritura;
ubica el apuntador de archivo al
comienzo de ste y lo trunca a
una longitud de cero. Si el
archivo no existe, intenta
crearlo.
w+ Apertura para lectura y
escritura; ubica el apuntador de
archivo al comienzo de ste y lo
trunca a una longitud cero. Si el
archivo no existe, intenta
crearlo.
a Apertura para slo escritura;
ubica el apuntador de archivo al
final del mismo. Si el archivo no
existe, intenta crearlo.
a+ Apertura para lectura y
escritura; ubica el apuntador de
archivo al final del mismo. Si el
archivo no existe, intenta
crearlo.

Funcin fclose()
Esta funcin se emplea para cerrar un archivo que ha sido abierto
con la funcin fopen(). A continuacin cdigo de ejemplo:

<?php
$file = fopen("miArchivo.txt", "w"); //Se abre un archivo
fclose($file); //Se cierra un archivo
?>

Funciones fputs() y fwrite()

Estas funciones son utiles para escribir en un archivo. A


continuacin cdigo de ejemplo:

<?php
$file = fopen("miArchivo.txt", "w");
fputs($file, "Hola"); //Escribe en el archivo
fwrite($file, " Mundo\n"); //Escribe en el archivo
fclose($file);
?>

Funcin fpassthru()

Esta funcin es til para leer todo el contenido de un archivo e


imprimirlo en el navegador as como tambin la cantidad de
caracteres que tiene el archivo, es importante resaltar que este
archivo cierra el archivo automticamente por lo que no es
necesario cerrar el archivo con fclose(). A continuacin cdigo de
ejemplo:

<?php

$file = fopen("miArchivo.txt", "r");


fputs($file, "Hola");
fwrite($file, " Mundo\n");
echo fpassthru($file);

?>

Funciones fgets() y fgetss()

fgets(): lee una cadena de caracteres.

fgetss(): lee una cadena de caracteres, pero trata de


eliminar cualquier etiqueta HTML o PHP que consiga en el
archivo.

<?php
$file = fopen("miArchivo.txt", "r");
fputs($file, "Hola");
fwrite($file, " Mundo\n");
echo fgets($file);
?>
Tenga en cuenta que solo muestra la primera lnea de un archivo el
cdigo anterior, para obtener todo el contenido necesitamos de un
ciclo repetitivo como un while, mas adelante veremos un ejemplo.

Funcin fread()

Lee un archivo, y la lectura acaba cuando se ha ledo o alcanzado el


final del archivo EOF.

Funcin feof()

Esta funcin se emplea para recorrer un archivo y retorna true si se


ha alcanzado el final del archivo. A continuacin cdigo de ejemplo:

<?php
$file = fopen("miArchivo.txt", "r");
while(!feof($file)){
echo fgets($file) . "<br>";
}
fclose($file);
?>
UNIDAD 4: TRABAJANDO CON FORMULARIOS

4.1. Formularios

Una de las caractersticas que ofrecen las pginas Web es la


interactividad con el usuario, para lograr esto HTML dispone de
formularios que nos permiten enviar informacin al Servidor de esta
forma logramos hacer consultas a base de datos, guardar
informacin, entre otras cosas.

Hasta este momento solo hemos visto como es el esqueleto de una


pgina Web e incrustado cdigo PHP en ella, a continuacin
aprenderemos a desarrollar una tpica pgina Web con formularios y
como pasar datos entre pginas, para realizar esto necesitamos
conocer un poco ms acerca de las variables predefinidas de PHP y
etiquetas HTML tiles en la elaboracin de un formulario.

En primera instancia veremos a continuacin un bloque de cdigo


tpico de un formulario HTML, trataremos de usar la mayora de los
elementos utilizados en un formulario, ms adelante veremos con
algunas variables predefinidas de PHP como enviar y capturar los
valores de dichos elementos. A continuacin cdigo del formulario,
el nombre del fichero que tendr este cdigo sera index.php:

<HTML>
<HEAD>
<TITLE>Mi Formulario</TITLE>
</HEAD>
<BODY>
<FORM name="miFormulario" method="post"
action="solicitud.php"><!--method="get"-->
Nombre:&nbsp;<INPUT type="text"
maxlength="15" size="15" name="nombre"><br>
Apellido:&nbsp;<INPUT type="text"
maxlength="15" size="15" name="apellido"><br>
Sexo:&nbsp;Masculino<INPUT type="radio"
name="sexo" value="Masculino">&nbsp;Femenino<INPUT
type="radio" name="sexo" value="Femenino"><br>
Pa&iacute;s:&nbsp;
<SELECT name="pais"><!--MULTIPLE podremos
elegir ms de una opcin.-->
<OPTION
value="Colombia">Colombia</OPTION>
<OPTION value="Venezuela"
selected>Venezuela</OPTION>
<OPTION value="Brazil">Brazil</OPTION>

<OPTION
value="Argentina">Argentina</OPTION>
<OPTION value="China">China</OPTION>
</SELECT>
<BR>
Comentario:<BR>
<TEXTAREA cols="10" rows="5"
NAME="comentario">
</TEXTAREA>
<BR><BR>
<INPUT type="submit" value="Enviar"></INPUT>
&nbsp;&nbsp;&nbsp;
<INPUT type="reset" value="Borrar"></INPUT>
</FORM>
<BODY>
</HEAD>
</HTML>

La siguiente imagen muestra lo que hace el cdigo anterior:


Este manual no pretende ensear HTML sin embargo con ayuda del
instructor se definirn cada una de estas etiquetas y atributos
expuestos anteriormente de ser necesario, adicionalmente el CNTI
dispone de un manual de HMTL.

4.2. Variables Predefinidas en PHP

La mayora de estas variables son superglobales a estas se les


conocen de esta forma porque estn disponibles en cualquier parte
de un script. A continuacin algunas de estas variables y quizs las
ms utilizadas, se listan a continuacin:

$_SERVER
$_POST
$_GET
$_COOKIE
$_REQUEST
$_SESSION

$_SERVER

Esta variable es un arreglo asociativo y el valor de sus claves esta


estrechamente ligado al entorno en donde se ejecuta el script, los
valores que tienen los elementos de este arreglo son creados por el
servidor Web. A continuacin se muestra un ejemplo para visualizar
las claves de este arreglo asociativo junto con sus valores:

<?php
print_r($_SERVER);
?>

O de esta otra forma un poco ms elegante:

<?php
foreach($_SERVER as $clave => $valor){
echo "\$_SERVER[$clave] = \"$valor\" <br>";
}
?>

$_POST

Esta variable superglobal es una matriz asociativa de variables


pasadas al script actual a travs del mtodo HTTP POST, es decir los
elementos o claves de dicho arreglo dependen del nmero de
variables que se le pasen a un script por el mtodo HTTP POST. A
continuacin veamos un ejemplo de una pgina web que captura
los elementos del formulario index.php creado al principio de esta
unidad haciendo uso de la variable $_POST, coloque como nombre
al siguiente fichero solicitud.php.
<html>
<head>
<title>Solicitud</title>
</head>
<body>
Nombre:&nbsp;<?=$_POST["nombre"]?><br>
Apellido:&nbsp;<?=$_POST["apellido"]?><br>
Sexo:&nbsp;<?=$_POST["sexo"]?><br>
Pa&iacute;s:&nbsp;<?=$_POST["pais"]?><br>
Comentario:<br>
<TEXTAREA cols="10" rows="5"
NAME="comentario" readonly>
<?=$_POST["comentario"]?>
</TEXTAREA>
</FORM>
</body>
</html>

$_GET

Esta variable superglobal es una matriz asociativa de variables


pasadas al script actual a travs del mtodo HTTP GET, funciona
similar a la variable anterior, hay que acotar que el mtodo HTTP
GET enva los datos usando la URL por tanto los datos sern visibles
en la barra de direcciones del navegador. La longitud de una
peticin GET est limitada por el espacio libre en los buffers de
entrada, por lo que para mandar una gran cantidad de informacin
al servidor ha de utilizarse el mtodo POST.
A continuacin veamos un ejemplo de una pgina web que captura
los elementos del formulario index.php creado al principio de esta
unidad recuerde cambiar el atributo method de la etiqueta FORM
por get!, haciendo uso en esta oportunidad de la variable $_GET,
coloque como nombre al siguiente fichero solicitud.php.

<html>
<head>
<title>Solicitud</title>
</head>
<body>
Nombre:&nbsp;<?=$_GET["nombre"]?><br>
Apellido:&nbsp;<?=$_GET["apellido"]?><br>
Sexo:&nbsp;<?=$_GET["sexo"]?><br>
Pa&iacute;s:&nbsp;<?=$_GET["pais"]?><br>
Comentario:<br>
<TEXTAREA cols="10" rows="5"
NAME="comentario" readonly>
<?=$_GET["comentario"]?>
</TEXTAREA>
</body>
</html>
$_COOKIE

Una cookie es una porcin de informacin que se almacena como


texto simple en el disco duro del visitante de una pgina web a
travs de su navegador, a peticin del servidor de la pgina. Una
vez guardada la informacin en el disco duro del cliente puede ser
recuperada por el servidor en posteriores visitas del cliente. De esta
manera logramos brindar opciones de diseo predefinidas por el
usuario como el fondo preferido del del mismo as como del texto
para visualizar la pgina e informacin mas solicitada. Hay que
tener en cuenta que en las cookies no es buena tcnica guardar
nombres de usuarios y contraseas por cuestiones de seguridad
aun siendo encriptadas estas ultimas.

La variable predefinida $_COOKIE es un arreglo superglobal


accesible desde cualquier parte del script que permite recuperar el
valor de una cookie, los valores que toma esta variable esta
determinado por las cookies que se hallan creado.

Para crear una cookie se emplea la siguiente funcin:

setcookie($nombre, $valor, $tiempoDeVida, $path,


$dominio, $seguro);

Note que el primer argumento de la funcin es el nombre de la


cookie y por ende el nico argumento necesario, el resto son
argumentos opcionales. Como restricciones para el nombre debes
tener en cuenta que no puedes emplear como nombre de la cookie
el punto y coma (;), la coma (,) o espacios en blanco ( ) y ningn
otro carcter fuera del ascii simple para evitar inconvenientes.

El segundo argumento de la funcin setcookie() es el valor de la


cookie.

El tercer argumento de la funcin es el tiempo de vida de la cookie


y esta viene dada en segundos, de no especificar el tiempo de vida
de la cookie esta durara lo que dura la sesin es decir hasta que
cerremos nuestro navegador, ya que la informacin de el tiempo de
vida no se guardara en un archivo.

El cuarto argumento de la funcin setcookie() permite establecer la


ruta desde el cual la cookie puede ser recuperada. Por ejemplo si
colocamos como valor del path "/", cualquier script PHP en el
servidor podr recuperar su valor, mientras que si colocamos un
directorio, por ejemplo /var/www/, la cookie solo podr ser
recuperada por scripts PHP de dicho directorio o subdirectorios,
mientras que si usamos /var/www/mi_sitio/, solo podremos
recuperar las cookies de ese subdirectorio. Si se omite el path por
defecto slo los archivos que estn en el mismo directorio que el
script PHP que cre la cookie tendrn acceso a ella.
El quinto argumento, permite limitar el acceso a los subdominios
que podamos tener. Por ejemplo, si colocamos "mi_sitio.org", la
cookie podr ser recuperada tanto desde http://mi_sitio.org como de
www.mi_sitio.org.

El sexto argumento, establece que la cookie solo puede ser enviada


si existe una conexin segura (https), los valores se indican
mediante un 1 (seguro = true) o un 0 (seguro = false).

Nota: En general toda la cookie no debe exceder de 4 K, hay que


recalcar tambin que la funcin para crear una cookie debe ir junto
a las cabeceras http de la pgina, por tanto debe colocarse al
comienzo del script, antes de que comience el volcado de html al
usuario, de lo contrario dar error.

A continuacin observe el siguiente cdigo de ejemplo:

<?php

setcookie("miCookie");

/*Para borrar una cookie regularmente basta con crear una


cookie con el mismo nombre de otra y sin ningn otro argumento
en la funcin*/
?>

Al ejecutar el script anterior en el navegador creamos una cookie de


nombre miCookie, sin ningn valor. Automticamente se
establecen los parmetros por defecto tiempo de vida = lo que
dure la sesin; path = el directorio actual (aunque en cierto grado
depende del navegador); dominio = el dominio de la pgina;
seguro = no.

Para establecer el tiempo de vida de una cookie usamos la funcin


time(), que nos devuelve la hora actual medida en nmero de
segundos desde el Epoch Unix (Enero 1 1970 00:00:00 GMT).
Observe el siguiente cdigo de ejemplo:

<?php

$unaSemana = time() + (7 * 24 * 60 * 60);

// 7 das; 24 horas; 60 mins; 60segs

?>

El script anterior crear un variable que guarda la fecha actual en


segundos ms la cantidad de segundos equivalente a una semana.

Una vez entendido como colocar una fecha de caducidad a una


cookie veamos el siguiente ejemplo:

<?php

// Esta cookie dura una hora. 1 hora = 3600 segundos

setcookie("miCookie1", "1", time() + 3600);

// Esta cookie dura un dia. 24 h = 86400 segundos

setcookie("miCookie2", "1", time() + 86400);

// esta cookie dura una semana.

setcookie("miCookie3", "1", time() + (7 * 86400) );

// esta cookie dura un ao. 1 ao = 31536000 segundos

setcookie("miCookie4", "1", time() + 31536000);

?>

A continuacin un ejemplo de como leer una cookie:

<?php

if(!isset($_COOKIE["visitado"])){
setcookie("visitado", "si", time() + 3600, "", "", 0);

}else{

echo "YA HABIAS ESTADO AQUI ANTES!!!";

?>

Si quisiramos acceder inmediatamente a la cookie, podemos


recargar la pgina antes de enviarla al usuario, entonces nuestro
cdigo anterior quedera de esta forma:

<?php

if(!isset($_COOKIE["visitado"])){

setcookie("visitado", "si", time() + 3600, "", "", 0);

header("Location: $PHP_SELF?COOKIE_SET=1");

}else

echo "YA HABIAS ESTADO AQUI ANTES!!!";

?>

$_REQUEST

Esta variable superglobal es un arreglo asociativo que contiene de


forma predeterminada los datos de $_GET, $_POST y $_COOKIE. En
ese sentido para capturar los datos enviados por el mtodo $_POST
o $_GET y las cookies guardadas en el disco duro de un cliente
podemos utilizar esta variable para capturar dichos datos
indistintamente del mtodo o de si es una cookie.

$_SESSION

Esta variable superglobal, es una matriz asociativa que contiene las


variables de sesin disponibles en el script actual. Para crear una
variable de sesin usaremos las siguientes funciones:

session_unset(): destruye todas las variables de sesin pero


no el archivo donde se guardan las variables de sesin as que
se puede utilizar session_id().
session_unregister($var): destruye una variable de sesin
determinada, para este caso la variable de sesin $var.
session_destroy(): destruye el archivo sesin por ende
todas las variables de sesin .
session_id(): devuelve el session id de la sesin actual.
session_start(): crea una sesin, esta funcin debe
colocarse al comienzo de un volcado a HTML o para evitar
inconvenientes al principio de un script PHP, preferiblemente
entre las primeras lneas.
A continuacin un ejemplo completo de sesiones en PHP:

<<prueba1.php>>

<?php
session_start()
?>
<html>
<head>
<title>Sesiones</title>
</head>
<body leftmargin="17">
<?php
$_SESSION["name"] = "Ana";
$_SESSION["surname"] = "Bullow";
?>
<a href="prueba2.php">Ir a</a>
</body>
</html>
<<prueba2.php>>

<?php session_start() ?>


<html>
<head><title>Sesiones</title></head>
<body>
<?php
echo "Hola " . $_SESSION["name"] . $_SESSION["surname"];
session_unset();
session_unregister("surname");
session_destroy();
echo session_id();
?>
</body>
</html>
GLOSARIO DE TRMINOS

HMTL: siglas de HyperText Markup Language (Lenguaje de


Marcas de Hipertexto), es el lenguaje de marcado
predominante para la construccin de pginas web.

W3C: son las siglas de la World Wide Web Consortium,


abreviado simplemente como W3C, es un consorcio
internacional que produce recomendaciones para la World
Wide Web. Est dirigida por Tim Berners-Lee, el creador
original de URL (Uniform Resource Locator, Localizador
Uniforme de Recursos), HTTP (HyperText Transfer Protocol,
Protocolo de Transferencia de HiperTexto) y HTML (Lenguaje
de Marcado de HiperTexto) que son las principales tecnologas
sobre las que se basa la Web.

URL: significa Uniform Resource Locator, es decir,


localizador uniforme de recurso. Es una secuencia de
caracteres, de acuerdo a un formato estndar, que se usa
para nombrar recursos, como documentos e imgenes en
Internet, por su localizacin.

PECL: es un repositorio de extensiones para PHP.

Вам также может понравиться