48
PHP 2015 Autor: Sergio Santos Gil

PHP

Embed Size (px)

Citation preview

PHP

2015

Autor: Sergio Santos Gil

- PHP

Sergio Santos Gil 2

PHP Índice

Introducción ...................................................................................................................................... 5

Definición...................................................................................................................................... 5

Características .............................................................................................................................. 6

Funciones ...................................................................................................................................... 6

Requisitos ...................................................................................................................................... 7

Instalación ........................................................................................................................................ 8

XAMPP ......................................................................................................................................... 8

EasyPHP ..................................................................................................................................... 10

Sintaxis ........................................................................................................................................... 12

Delimitadores .............................................................................................................................. 12

Instrucciones ............................................................................................................................... 12

Comillas ...................................................................................................................................... 12

Comentarios ................................................................................................................................ 12

Inclusión de ficheros.................................................................................................................... 13

Variables......................................................................................................................................... 14

Ámbito de las Variables ............................................................................................................... 14

Variables Predefinidas ................................................................................................................ 15

Constantes ................................................................................................................................... 17

Arrays ......................................................................................................................................... 19

Operadores ...................................................................................................................................... 20

Asignación .................................................................................................................................. 20

Concatenación ............................................................................................................................ 20

- PHP

Sergio Santos Gil 3

Aritméticos .................................................................................................................................. 20

Comparación ............................................................................................................................... 21

Lógicos ........................................................................................................................................ 21

Incremento y Decremento ............................................................................................................ 21

Sentencias ....................................................................................................................................... 22

if, else .......................................................................................................................................... 22

if, elseif, else ................................................................................................................................ 22

switch .......................................................................................................................................... 22

while ........................................................................................................................................... 22

do… while ................................................................................................................................... 23

for ............................................................................................................................................... 23

foreach ........................................................................................................................................ 23

break y continue .......................................................................................................................... 23

Objetos ........................................................................................................................................... 24

Herencia ..................................................................................................................................... 25

Interfaz ........................................................................................................................................ 26

Funciones ....................................................................................................................................... 27

Funciones para gestión de archivos ............................................................................................. 28

Funciones para gestión de directorios ......................................................................................... 28

Funciones Predefinidas ................................................................................................................... 29

Funciones de Cadenas ................................................................................................................. 29

Funciones Matemáticas ............................................................................................................... 32

Funciones de Fecha ..................................................................................................................... 33

Otras Funciones .......................................................................................................................... 34

Formularios..................................................................................................................................... 35

INPUT ......................................................................................................................................... 36

SELECT ...................................................................................................................................... 37

LABEL ........................................................................................................................................ 37

TEXTAREA ................................................................................................................................. 38

FIELDSET .................................................................................................................................. 38

Otros ........................................................................................................................................... 39

Cookies ........................................................................................................................................... 40

Sesiones .......................................................................................................................................... 41

- PHP

Sergio Santos Gil 4

AJAX ............................................................................................................................................. 42

XMLHttpRequest ......................................................................................................................... 43

Conexión a una BBDD.................................................................................................................... 44

Introducir Registros .................................................................................................................... 45

Listado de Registros .................................................................................................................... 45

Borrado de Registros ................................................................................................................... 45

Modificación de Registros ........................................................................................................... 45

Conexión con PDO ...................................................................................................................... 46

Arquitectura MVC .......................................................................................................................... 48

- PHP

Sergio Santos Gil 5

Introducción Definición PHP es un lenguaje de programación de estilo clásico, es decir, que utiliza variables,

sentencias, funciones,…

PHP, Hypertext Preprocessor, se define como un lenguaje interpretado de alto nivel, cuyo

código va insertado en las páginas HTML, permitiendo saltar del modo PHP al código

HTML dentro de las mismas. Este lenguaje es ejecutado del lado del servidor, lo cual

permite acceder a los recursos que tiene el servidor, enviando rápidamente los resultados

al navegador en forma de página Web.

El servidor Web, al soportar PHP, procesará la página de forma secuencial: desde el

principio hasta el fin; buscando secciones PHP dentro de los delimitadores del código,

<? y?>. En el caso de que las encuentre, las compila y ejecuta mostrando un resultado

idéntico a la página HTML.

Existen dos tipos de lenguajes de programación: del lado servidor y del lado cliente.

Del lado servidor: Es un lenguaje reconocido, ejecutado e interpretado en el

mismo servidor, generando un archivo HTML que es enviado al cliente. PHP y ASP,

entre otros, pertenecen a este tipo de lenguaje

Del lado cliente: Es aquel lenguaje que puede ser “dirigido” por el navegador y que

no necesita un tratamiento previo. Destacamos: HTML, Java y JavaScript

PHP está basado principalmente en lenguajes como C, C++ y Java con los que comparte

toda su sintaxis y semántica, asimilando también características de lenguajes interpretados

como Perl y Bash. A nivel general, las principales diferencias entre PHP y C son:

PHP no distingue mayúsculas y minúsculas, salvo en el tratamiento de objetos.

En PHP no se declaran las variables ni tienen un tipo fijo, sino que las variables

pueden almacenar valores de todo tipo.

- PHP

Sergio Santos Gil 6

Características

o Velocidad: Este lenguaje goza de una alta velocidad de ejecución, con lo que evita las

demoras innecesarias en la máquina. Por lo tanto, no necesita muchos recursos del

sistema.

o Estabilidad: Utiliza un sistema propio de administración de recursos y dispone de un

sofisticado método de manejo de variables, consiguiendo así uno de los sistemas más

robustos y estables de los existentes.

o Seguridad: Está provisto de diferentes niveles de seguridad personalizables desde el

archivo de configuración .ini, que el programador puede variar según sus necesidades.

o Simplicidad: Debido a su sencillez, es un lenguaje que permite a los programadores

generar código en poco tiempo.

o Lenguaje basado en herramientas de software libre: Para programar en PHP, no

hay que pagar licencias de ningún tipo, lo que no limita su distribución e incita a los

programadores expertos a que contribuyan a mejorarlo.

o Conectividad. Es un lenguaje que dispone de de una amplia gama de librerías y

permite agregar de forma sencilla extensiones. Esto permite que este lenguaje sea

utilizado en áreas muy diversas, como sería en la encriptación, gráficos, XML, etc.

Funciones Tiene acceso y soporta muchas bases de datos: MySQL, Oracle,…

Conectividad con otros servicios, usando HTTP, FTP, SNMP,…

Servicios de correo y noticias: POP, IMPAP,…

Creación de textos y gráficos: XML, HTML, PDF, Flash,…

Funciones matemáticas.

POSIX: memoria compartida, acceso a ficheros, cronómetros…

Comercio electrónico: Cybercash, VerisignPro,…

Formularios.

Encriptación y compresión: MD5, GZip,…

- PHP

Sergio Santos Gil 7

Requisitos

o Para poder trabajar con PHP y visualizar las páginas creadas, se necesita instalar un

servidor Web como Apache.

o Una vez instalado un servidor Web, tenemos que instalar su módulo PHP, que es el

conjunto de archivos necesarios para interpretar correctamente las páginas .php.

o Y para trabajar con bases de datos desde PHP, hace falta un sistema gestor de bases

de datos, como puede ser MySQL u Oracle.

Se puede realizar la instalación de forma manual o se puede instalar un paquete pre

configurado como XAMPP o EasyPHP, entre otros. Estos paquetes pre configurados

instalan simultáneamente un servidor Apache y el módulo PHP en cualquier sistema

operativo.

Para crear páginas web en PHP, basta con crearlas con cualquier editor de texto, siempre que

se guarde el fichero con la extensión .php. También hay herramientas que facilitan la

creación de archivos PHP, como por ejemplo PHPDesigner y Notepad++.

Para descargar cualquier programa citado anteriormente, pinche en sus respectivos logos:

o Servidor web

o Sistemas Gestores de Bases de Datos

o Paquetes pre configurados

o Editores de PHP

- PHP

Sergio Santos Gil 8

Instalación Pasamos a la instalación de los servidores Web con sus respectivos módulos PHP, como los

sistemas gestores de bases de datos.

Podemos trabajar con el que más guste al consumidor, por lo que explicamos la instalación

de dos paquetes pre configurado que contienen Apache y MySQL, como es el caso de

XAMPP y EasyPHP.

Para aquellos usuarios que utilicen sistemas operativos LINUX, explicamos la instalación del

servidor Apahe para aquellos que lo quieran hacer manual.

XAMPP La instalación de XAMPP es muy sencilla:

Elegimos el lenguaje de instalación

Especificamos la ruta dónde se almacenará

- PHP

Sergio Santos Gil 9

Especificamos los servidores que queremos instalar, para PHP son obligatorios

instalar el servidor Apache y el gestor de bases de datos de MySQL.

Lo instalamos y una vez finalizado, nos aparecerá el panel de control.

En este panel podemos especificar que servicios queremos que se ejecuten y cuales

parar. Cuando se estén ejecutando aparecerá el mensaje de Running.

- PHP

Sergio Santos Gil 10

EasyPHP Los pasos para instalar EasyPHP también son bastantes fáciles y similares a XAMPP:

Indicamos el lenguaje de instalación:

Aceptamos los términos del software.

Indicamos la ruta donde querremos almacenar el software e indicamos la carpeta

donde se almacenará por defecto los accesos directos.

- PHP

Sergio Santos Gil 11

Una vez instalado, podemos configurar el idioma del programa, para aquellos que no

seamos bilingües accedemos a la configuración de EasyPHP y elegimos lenguaje.

Dentro de las herramientas principales de EasyPHP destacamos:

o Ficheros Log desde el cual tenemos acceso a los errores generados por

Apache, MySQL y EasyPHP.

o Configuración donde accederemos a sus diferentes herramientas.

o Explorar la cual abre el directorio por defecto, donde se almacena el sitio web.

o Administración de la bases de datos.

o Web local que visualiza los directorios que hay en la raíz del servidor.

o Reiniciar el servicio Apache y MySQL.

o Detener/Iniciar los servidores

o Y salir del programa.

Una vez iniciado EasyPHP, el servidor Apache está configurado por defecto, para que la

página que primero abra en el navegador sea el archivo index.htm, index.html o index.php

según la configuración que tenga por defecto.

Este archivo se encuentra dentro del directorio www. Cuando abra el navegador, escriba en la

Barra de direcciones http://localhost/, y se abrirá automáticamente el fichero index que

tengamos predefinido

- PHP

Sergio Santos Gil 12

Sintaxis Delimitadores

El código PHP se introduce en el código HTML, pero para que el servidor detecte la parte en

PHP de una página, éste tiene que estar delimitado con unas etiquetas especiales que van al

principio y al final del código.

Estas etiquetas suelen ser las etiquetas cortas: <?php {código} ¿>, que suelen ser las más

utilizadas; y las etiquetas estilo ASP: <% {código} %>.

Instrucciones

En PHP se denominan instrucciones a todo aquel lenguaje recogido dentro de los

delimitadores de código. Cada sentencia se considera terminada con un punto y coma “;“.

Comillas

En PHP existen dos tipos de comillas con distintas funcionalidades:

Comillas dobles ( “ “ ): Estás comillas leen dentro de la cadena en busca de

variables a interpretar.

Comillas simples ( „ „ ): Son las que muestran el contenido tal y como está escrito

dentro de la cadena. Dentro de estas comillas podemos mostrar las comillas dobles, ya

que muestra todo el contenido tal y como se introduce entre ellas.

Comentarios

Los comentarios son anotaciones dentro del código PHP que sirven para facilitar la

compresión del código por parte de los lectores, y no se muestran en pantalla porque el

interprete de PHP lo primero que hace es quitar todos los comentarios del programa.

// o # al principio de la línea de código para comentar una línea.

Y para comentar varias líneas o bloques, se pone /* al principio de línea y */ al final.

- PHP

Sergio Santos Gil 13

Inclusión de ficheros

Una forma muy útil de agregar código PHP a nuestro programa es insertando dicho código

ya creado en otro fichero e invocarlo mediante dos funciones:

include(fichero.php): gracias a este comando llamaremos a otro fichero que

tendremos creado. Así, podremos ahorrarnos mucho código a la hora de escribir

nuestro código. A la hora de que el fichero no exista, muestra un mensaje de error y

continúa ejecutándose el programa.

require(fichero.php): este comando sirve para incluir bibliotecas de funciones. Una

biblioteca es un archivo que almacena el código compilado de otras funciones.

Cuando el fichero no exista, salta un error que impide seguir ejecutándose el

programa.

_once(fichero.php): si añadimos este comando, sólo se incluirá el fichero una vez,

aunque lo invoquemos varias veces.

- PHP

Sergio Santos Gil 14

Variables Las variables son como la principal manera de almacenar valores en el medio de un

programa. Con las variables se pueden realizar operaciones, se puede hacer comparaciones

entre sí y puede variar el flujo del programa en función de su valor en ese momento.

Las características más importantes de las variables en PHP:

Todas las variables comienzan con el símbolo “$”.

Son asignadas con el operador “=”. La variable se coloca a la izquierda y la expresión

a evaluar a la derecha.

No necesitan ser declaradas antes de su uso, es decir, no necesitamos decirle al

programa si una variable es una cadena o un número entero, ya que en PHP se

encargará de definirla por sí mismo.

Las variables que se utilizan antes de ser asignadas tienen un valor por defecto.

Las variables hacen distinción entre las mayúsculas de las minúsculas.

Ámbito de las Variables

El ámbito de una variable es el contexto donde la variable está definida. La mayoría de

las variables PHP solamente tienen un ámbito simple, el cual también abarca los ficheros

incluidos y los requeridos.

Ámbito global. La variable está presente en todas las partes del script, y puede ser

utilizada en cualquier momento, gracias al comando global.

Ámbito local. La variable sólo existe y opera dentro de una función concreta, no

puede ser accesible por el script en general ni por las demás funciones.

- PHP

Sergio Santos Gil 15

Variables Predefinidas

PHP utiliza una serie de variables predefinidas que facilitan la información de gran utilidad.

Para poder visualizar en pantalla, gracias a la función echo, la información que estas

variables son capaces de mostrar, es importante que en el fichero php.ini esté el valor

register_globals=ON.

GATEWAY_INTERFACE: Indica qué revisión de la especificación CGI está

usando el servidor.

SERVER_NAME: Muestra el nombre del servidor en el que se ejecuta el script de

PHP.

SERVER_SOFTWARE: Describe la cadena de identificación del servidor que

aparece en las cabeceras al responderse a las peticiones.

SERVER_PROTOCOL: Da el nombre del protocolo a través del que se solicitó la

página.

REQUEST_METHOD: Nos dice el método de petición que se utilizó para ir a la

página.

QUERY_STRING: Muestra la cadena de petición con la que se accedió a la página.

DOCUMENT_ROOT: Revela el directorio raíz del documento bajo que se ejecuta el

script, tal y como está definido en el fichero de configuración del servidor.

HTTP_ACCEPT: Enseña los tipos MIME que el cliente puede recibir.

HTTP_ACCEPT_CHARSET: Indica cuáles son los contenidos de la cabecera

Accept-Charset de la petición actual.

HTTP_ENCODING: Permite ver los contenidos de la cabecera Accept-Encoding de

la petición actual.

HTTP_CONNECTION: Enseña el tipo de conexión HTTP que está en uso.

Generalmente Keep-Alive, esto indica que el servidor no debe cerrar la conexión con

el cliente.

HTTP_HOST: Describe los contenidos de la cabecera Host de la petición actual.

- PHP

Sergio Santos Gil 16

HTTP_REFERER: Revela la dirección de la página desde la que el navegador

accedió a la página actual.

HTTP_USER_AGENT: Muestra desde qué navegador se está accediendo para ver la

página.

REMOTE_ADDR: Permite visualizar la dirección IP desde la que el usuario está

viendo la página actual.

REMOTE_PORT: Enseña el puerto que se está utilizando en la máquina del usuario

para comunicarse con el servidor Web.

gethostbyaddr("$REMOTE_ADDR"): Indica qué puerto se está usando en la

máquina del usuario para comunicarse con el servidor Web.

SCRIPT_FILENAME: Describe la vía de acceso absoluta del script que se está

ejecutando.

SERVER_ADMIN: Da el valor que se haya dado a la directiva SERVER_ADMIN

(en Apache) en el fichero de configuración del servidor Web.

SERVER_PORT: Muestra el puerto del equipo servidor que está usando el servidor

Web para la comunicación.

SERVER_SIGNATURE: Es una cadena que contiene la versión del servidor y el

nombre del servidor virtual que es añadida a las páginas generadas por el servidor si

está característica está activa.

SCRIPT_NAME: Revela la vía de acceso basada en el sistema de ficheros del script

en cuestión, después de que el servidor haya hecho la conversión virtual-a-real.

REQUEST_URI: Indica la URI que se dio para acceder a esta página.

PHP_SELF: Nos dice el nombre del fichero que contiene el script que se está

ejecutando, relativo al directorio raíz de los documentos.

- PHP

Sergio Santos Gil 17

Constantes

En PHP tenemos que definir las constantes utilizando la función define(), cuya declaración

es: define(“nombre”, “valor” [noMayúsculas]) .

Donde nombre es el nombre que le damos a la constante, valor el valor que vayamos a

otorgar, y noMayúsculas indica si está en 1 que podemos acceder a la variable

independientemente con mayúsculas o minúsculas, en cambio, si el valor es 0 (por

defecto) sólo podremos acceder a ella de la misma forma de la que la hayamos definido.

También se pueden declarar con la palabra reservada const, y no se debe inicializar con el

signo dólar.

Las constantes pueden ser accesibles desde cualquier parte del código donde han sido

definidas, sin restricciones de ámbito como en las variables. No pueden ser redefinidas o

borradas una vez definidas. Y sólo pueden contener valores escalares, no vectores.

- PHP

Sergio Santos Gil 18

Características a tener en cuenta de las constantes:

Los valores asignados a las constantes se mantienen, incluso cuando las constantes

son invocadas desde una función.

Cuando los valores de una constante son numéricos, no es necesario escribirlos

entre comillas.

PHP asignará el valor cero en operaciones aritméticas con una constante de

cadena si ésta comienza por una letra.

Si una cadena empieza con uno o varios números, al realizar operaciones aritméticas

con ella, PHP considera solo el valor de los números anteriores al primer carácter

no numérico.

Con la instrucción echo pueden enlazarse cadenas de caracteres, constantes y

variables separándolas solo con comas.

Se puede definir como constante el resultado de una operación aritmética.

En PHP existen constantes predefinidas que no requieren de la función define():

__FILE__ Recoge el nombre del archivo de comandos que se está ejecutando

actualmente y también la ruta completa de su ubicación en el servidor-

__LINE__ Registra el número de línea, también considera las líneas en blanco dentro

del archivo PHP que está siendo interpretado en la actualidad. Si se usa de un archivo

incluido o requerido, entonces se da la posición dentro del archivo incluido.

PHP_VERSION Recoge la versión PHP en uso por el servidor.

PHP_OS Indicará información del sistema operativo que utiliza el servidor en el cual

se está interpretando el fichero PHP.

TRUE Valor verdadero.

FALSE Valor falso.

E_ERROR Denota un error distinto de un error de interpretación del cual no es

posible recuperarse.

E_WARNING Denota una condición donde PHP reconoce que hay algo erróneo,

pero continuará de todas formas; pueden ser capturados por el propio archivo de

comandos.

E_PARSE Indicará que el intérprete encontró sintaxis inválida en el archivo de

comandos, y que la recuperación no es posible.

E_NOTICE Ocurrió algo que pudo ser o no un error y la ejecución continúa

- PHP

Sergio Santos Gil 19

Arrays

Un array en PHP es realmente un mapa ordenado. Un mapa es un tipo de datos que asocia

valores con claves. Este tipo es optimizado para varios usos diferentes; puede ser usado

como una matriz real, una lista, una tabla asociativa, diccionario, colección, pila, cola,... Ya

que los valores de un array pueden ser otros arrays, árboles y también son posibles arrays

multidimensionales.

Los arrays no necesitan ser declarados, basta con asignar algún valor a alguna de sus

casillas para empezar a utilizarlos. Los valores asignados pueden ser de cualquier tipo y estar

mezclados.

También existen los arrays asociativos, en el cual cada elemento se compone de un valor y

una clave, es decir, el valor es el elemento en sí mientras que la clave será el índice con el

que llamamos al elemento.

Los valores pueden ser de cualquier tipo, en cambio las claves sólo pueden ser numéricas o

cadenas. Si se asignan varios valores a la misma clave, sólo prevalecerá el último asignado.

- PHP

Sergio Santos Gil 20

Operadores Los operadores se definen como símbolos que expresan operaciones que se pueden

realizar entre dos o más elementos. Por medio de dichos operadores, las variables pueden

ser creadas, modificadas y comparadas entre sí.

Asignación

El operador de asignación que se utiliza es el símbolo igual (=) que nos permite asignar

valores a las variables.

Concatenación

El operador de concatenación que utilizamos es el punto (.) y con él podemos unir los

valores de las variables.

También podemos utilizar la combinación de los dos (.=) para asignar un dato al valor

anterior.

Aritméticos

Los operadores aritméticos son aquéllos que nos permiten realizar operaciones

numéricas con nuestras variables.

+ Suma

- Resta

* Multiplicación

/ División

% Devuelve el resto de la división

Hay que tener en cuenta que en PHP no se dividen números enteros, lo que conlleva hacer un

casting a int: (int)(10/2).

- PHP

Sergio Santos Gil 21

Comparación

Los operadores de comparación se utilizan generalmente para comparar dos variables,

comprobando si cumple o no la condición previamente establecida. Estos operadores son

binarios y su resultado es un booleano, es decir, devuelve verdadero o falso.

== Igualdad

!= Desigualdad

< Menor que

<= Menor o igual que

> Mayor que

>= Mayor o igual que

=== Igualdad en valor y tipo

!== Diferencia en valor y tipo

Lógicos

Los operadores lógicos se usan conjuntamente con los operadores de comparación cuando la

expresión que queremos comparar requiere de un operador lógico. Sirven para componer

condicionales más simples por medio de las reglas simples por medo de las reglas de la

“y”, “o” y no lógicas. Estos operadores nos permiten expresar condicionales compuestas

de las que queremos averiguar su valor de verdad.

&& And (Y)

|| Or (O)

! NOT (Negación)

Incremento y Decremento

Los operadores de incremento o decremento sirven para aumentar o disminuir el valor

de una variable. Estos operadores solo suman o restan una unidad.

$variable++ Aumenta en 1 el valor de la variable indicada

$variable-- Disminuye en 1 el valor de la variable indicada

- PHP

Sergio Santos Gil 22

Sentencias if, else

Es la estructura de control más simple de PHP. La sentencia if obliga a evaluar la expresión

que haya entre paréntesis y, si se cumple la condición, ejecuta un bloque de código. Si por

el contrario dicha condición no se cumple, el bloque de código será ignorado gracias a else.

if, elseif, else

Esta instrucción es similar a la anterior, con la diferencia que nos permite introducir en la

misma línea de la instrucción condicional más casos de condiciones. Es decir, evaluamos una

expresión gracias a if, si no se cumple dicha expresión evaluamos otra expresión con elseif,

como tantas condiciones deseemos, y si no, los bloques serán ignorados mediante else.

switch La sentencia switch es una forma distinta y más comprensible para evaluar una variable

frente a multitud de opciones. En muchos casos, queremos comparar la misma variable con

infinidad de expresiones, ejecutando la parte del código correspondiente a la opción elegida.

Se declara el comando switch seguido de la variable a comparar. Después se utiliza la

expresión case, seguido de dos puntos, para indicar la opción de la variable. Cada caso

case, van separados con la cláusula break, que permite salir fuera del switch, ya que si no

se utiliza se ejecutan el resto de declaraciones. Y por último, se utiliza la cláusula default,

donde se especifica el bloque de código que se ejecutará si no cumple algunas de las

condiciones del switch.

while El bucle while es el más sencillo de utilizar, se utiliza siempre y cuando la condición sea

verdadera, para ejecutar las instrucciones que contiene dentro de él.

El valor de la expresión es comprobado cada vez al principio del bucle, incluso si este

valor cambia durante la ejecución de las sentencias. La ejecución no parará hasta el fin de

la repetición.

- PHP

Sergio Santos Gil 23

do… while Este bucle es casi igual que el anterior, pero con la diferencia de que aquí la condición se

evalúa después de ejecutar el código. Se especifica do seguido del código que se va a

ejecutar, y después con el while se especifica cuando parar el bucle.

for La sentencia for es uno de los bucles más complejos, el cual toma tres parámetros

separados entre ellos mediante un punto y coma, estos parámetros son:

Valor inicial de la variable de control.

Valor final de la variable de control, el cual especifica cuando terminar el bule.

Y el incremento o decremento de dicha variable.

La primera expresión que se evalúa es el “valor_inicial”, y se hace una sola vez al

comienzo del bucle. A continuación, al comienzo de cada iteración es evaluada

“valor_final” y si dicha evaluación resulta verdadera, el bucle sigue su curso al igual que las

sentencias anidadas. Pero si la evaluación resulta que es falsa, la ejecución del bucle finaliza.

foreach

Los bucles foreach son utilizados para el tratamiento de arrays.

Este bucle nos ayuda a recorrer los valores de una matriz, lo que nos resulta muy útil para

realizar una lectura rápida de la misma.

break y continue Son dos instrucciones que se pueden meter dentro de las sintaxis de cualquiera de las

estructuras anteriores.

break sirve para escapar de cualquier estructura de control: for, while,… Acepta

un parámetro opcional que determina cuantas estructuras de control hay que escapar.

continue se utiliza dentro del bucle para saltar el resto de esa iteración y pasar a la

iteración siguiente. También acepta un parámetro que determina cuantos bucles hay

que saltar antes de que continúe con la ejecución.

- PHP

Sergio Santos Gil 24

Objetos Para crear objetos en PHP, debemos crear una clase en la que podemos otorgarles

atributos que deben ir precedidos mediante el “$”. Los atributos pueden ser tanto privados,

públicos o protegidos. También pueden ser estáticos, pero para acceder a estos se haría

mediante el operador “::”.

Para acceder u otorgar valores, tanto a los atributos como a los métodos del objeto, se emplea

mediante “->” y sin necesidad de acceder al atributo con el “$”.

Para crear un objeto se emplea el comando new seguido del nombre de la clase que hace

referencia al objeto.

Podemos añadir constructores a los objetos. Un constructor son funciones cuyo nombre son

idénticos al objeto. Sirven normalmente para otorgar valores iniciales a los atributos o para

hacer labores de conexión a bases de datos.

La variable $this se refiere al propio objeto, es decir, a su propia dirección de memoria.

Sirve para dar valores y a referenciar a los propios atributos del objeto.

- PHP

Sergio Santos Gil 25

Herencia También existe herencia entre objetos, que reutilizan código existente de forma sencilla.

Pone en conexión una clase con otra, de manera que al conectarlas entre sí hereda todos los

atributos y métodos de la clase conectada. Para ello se emplea la palabra reservada extends.

Al heredar también se puede sobrescribir los métodos heredados. De forma que en el objeto

heredado, puede cambiar el código del método. Aunque, se puede acceder al código del

método sobrescrito mediante el parent, que llama al código de la clase padre.

- PHP

Sergio Santos Gil 26

Interfaz Las interfaces describen la estructura de una clase sin especificar su implementación.

Las clases que las implementan deben escribir código para sus métodos o declararlos

abstractos.

PHP soporta la implementación múltiple, sólo si no hay métodos que tengan el mismo

nombre y distinto número de parámetros.

- PHP

Sergio Santos Gil 27

Funciones Una función es un conjunto de instrucciones donde tenemos que procesar variables para

obtener el resultado buscado. Para que una función realice la tarea determinada, debemos

llamar correctamente a la función, definiendo los parámetros y variable oportunos.

Con las funciones podemos conectarnos a una base de datos, crear encabezados de páginas,

pies de páginas, etiquetas, etc.

Una gran ventaja de las funciones es que las podemos llamar en cualquier momento. Al

utilizar funciones en nuestro código, podemos perfeccionar cada una de sus funcionalidades

cada vez que sea necesario, siendo mucho más fácil localizarlas. También podemos utilizar el

código que contengan, llamando a la función cuantas veces haga falta, ya que se pueden

utilizar indefinidamente.

Para crear una función debemos poner siempre en el inicio la palabra function seguida del

nombre de la función. Entre paréntesis deberemos escribir los valores que vamos a utilizar

en nuestra función.: function nombreFuncion(valores){ }

El valor que indicamos dentro del paréntesis ( ) puede ser omitido, pero hay que escribirlo

obligatoriamente.

En el caso de las funciones, escribir mayúsculas y minúsculas es indiferente, ya que no las

distingue.

Para invocar la función creada basta con indicar su nombre seguido de punto y coma. Se

puede invocar después de haberla creado o antes.

Las funciones pueden retornar o devolver variables. Para ello, debemos escribir la palabra

return seguida del dato o la variable que tiene que. Cada vez que llamemos a return,

terminará la ejecución de la función devolviendo el dato solicitado.

Una función puede poseer múltiples return, pero sólo devolverá datos de cada uno de ellos

cada vez.

- PHP

Sergio Santos Gil 28

Funciones para gestión de archivos

copy($origen, $destino): esta función coge el archivo escrito en $origen y lo copia en

$destino.

rename($antes, $después): esta función renombra el archivo $antes por el escrito en

$despues.

unlink($archivo): elimina el archivo especificado.

$id = fopen($archivo, $modo): esta función abre el archivo especificado y le asigna

$id. En cuanto al modo, nos referimos al modo apertura del fichero:

o r solo lectura.

o r+ lectura y escritura.

o w solo escritura.

o w+ lectura y escritura, suprimiendo el contenido anterior y el archivo es creado

si no existe.

o a solo escritura. El archivo se crea si no existe y el puntero se coloca al final.

o a+ lectura y escritura. Igual que el anterior, pero el puntero se coloca al final

del fichero.

fgets($id, $max): lee una línea de archivo en concreto hasta un número máximo de

caracteres.

fwrite($id, $cadena): permite escribir una cadena dentro del archivo señalado.

fseek($id, $posicion): esta función avanza o retrocede un puntero tantas posiciones

como indiquemos.

feof($id): comprueba de que el puntero llegó al final de la función

fpassthru($id): lee el archivo indicado completo y lo muestra por pantalla.

fclose($id): cierra el archivo especificado.

Funciones para gestión de directorios

$dir = opendir($path): esta función abre el directorio situado en $path y se lo asigna

a la variable $dir.

readdir($dir): lee el elemento del directorio $dir abierto previamente.

rmdir($dir): esta función elimina el directorio $dir.

mkdir($path, $derechos): permite crear un directorio situado en $path con los

derechos de acceso $derechos (chmod 644).

rewinddir($ir): devuelve el puntero de lectura del directorio $dir al primer elemento.

closedir($dir): esta función cierra el directorio $dir.

- PHP

Sergio Santos Gil 29

Funciones Predefinidas

En PHP, además de las funciones creadas por el usuario, existen múltiples funciones para

realizar distintas tareas. Todas ellas están ya predefinidas, por lo que lo único que tenemos

que hacer es llamarlas, pasarles los parámetros necesarios, y ellas realizan la tarea.

Para poder usarlas debemos conocer, el nombre de la función, los parámetros que debemos

pasar, y por supuesto saber que tarea realizan.

Funciones de Cadenas

Contar caracteres de una cadena. Estas funciones no alteran los argumentos que

les pasamos, por lo que para obtener el resultado debemos guardarlas siempre en otra

variable.

o strlen($variable): Da como resultado el número de caracteres que tiene la

cadena pasada en el argumento $variable.

o chr(numero): En esta función pasamos como parámetro un número entre 0 y

255, y el resultado da un carácter asignado a ese número en el código

ASCII.

o ord(“caracter”): Es la función contraria a la anterior. Pasamos como parámetro

un carácter o signo, y la función nos devolverá el número en ASCII de ese

carácter. Si pasamos como argumento más de un carácter o una cadena de

texto, la función nos devolverá únicamente el código ASCII del primer

carácter.

o count_chars($texto, modo): Esta función indica cuales son los caracteres en

código ASCII que aparecen en el texto y/o cuantas veces aparece cada uno

de ellos. En $texto pasamos como argumento la cadena a analizar, y en modo

escribiremos un número del 0 al 4. Según el modo la función devolverá un

array o una cadena. El comportamiento de los distintos modos son:

Modo 0: Devuelve un array asociativo con todos los caracteres del

código ASCII.

Modo 1: Devuelve un array asociativo con únicamente los caracteres

que aparecen en el texto.

Modo 2: Devuelve un array asociativo con los caracteres del código

ASCII que no aparecen en el texto.

Modo 3: Devuelve una cadena de texto en la que aparecen los caracteres

que contiene el texto.

Modo 4: Devuelve una cadena de texto en la que aparecen los caracteres

del código ASCII que no aparecen en el texto.

- PHP

Sergio Santos Gil 30

o str_word_count($texto, modo): Esta función diferencia las palabras del texto

y permite hacer varias operaciones según el modo. En el argumento $texto,

pasamos el texto a analizar, y en modo pondremos un número del 0 al 2.

Dependiendo del modo la función dará los siguientes resultados:

Modo 0: Devuelve el número de palabras que contiene el $texto.

Modo 1: Devuelve un array indexado con todas las palabras que

contiene el $texto.

Modo 2: Devuelve un array asociativo donde la clave indica en que

número de carácter de la cadena comienza la palabra, y el valor es la

palabra en sí.

o substr_count($texto, $subcadena): Devuelve un número que indica las veces

que una determinada $subcadena (carácter, palabra) aparece dentro de una

cadena de texto $texto.

o strpos($texto, “caracter”): Devuelve un número que indica la primera posición

del “caracter” pasado en el segundo argumento, dentro de la cadena $texto.

o strrpos($texto, “caracter”): Funciona de forma análoga a la anterior, sólo que

el número que devuelve es el de la última posición del “caracter” dentro de la

cadena $texto.

o stripos($texto, “caracter”): Funciona igual que la función strpos() pero sin

tener en cuenta la diferencia entre mayúsculas y minúsculas.

o strripos($texto, “caracter”): Funciona igual que la función strrpos() pero sin

tener en cuenta la diferencia entre mayúsculas y minúsculas.

Cadenas de texto y arrays.

o explode(“separador”, $texto): Separa los elementos de un texto

devolviéndolos en un array. En “separador” se indican uno o varios caracteres

dónde se debe hacer la partición del texto para definir los distintos elementos

del array. $texto es la variable que contiene el texto que se convertirá en array.

o implode / join(“elemento_union”, $array):Convierte un array en cadena de

texto. Como segundo argumento debemos pasar un array que se transformará

en una cadena de 0, 1, o varios caracteres, que aparecerá escrita entre cada

elemento del array.

o chunk_split($texto, numero_caracteres): Devuelve un array en el que cada

elemento consiste en un trozo de la cadena pasada en $texto, de tantos

caracteres como el número indicado en numero_caracteres.

o in_array($valor, $array): Comprueba si existe dicho valor en un determinado

array sin tener que recorrerlo.

- PHP

Sergio Santos Gil 31

Cambiar mayúsculas y minúsculas.

o strtoupper($texto): Devuelve la cadena de texto pasada en $texto con todas

sus letras en mayúsculas.

o strtolower($texto): Devuelve la cadena de texto pasada en $texto con todas

sus letras en minúsculas.

o ucwords($texto): Devuelve la cadena de texto pasada en el argumento

$textocon la primera letra de cada palabra pasada a mayúsculas, siempre

que ésta sea un carácter alfabético.

o ucfirst($texto): Devuelve la cadena de texto pasada en $texto con la primera

letra de la cadena pasada a mayúsculas.

Eliminar y reemplazar texto.

o str_replace($buscar, $remplazar, $texto): Esta función es particularmente útil

para remplazar una palabra o trozo de texto por otro, ya que dentro del

texto indicado en $texto, busca los trozos que coinciden con la cadena indicada

en $buscar y los sustituye por la cadena indicada en $remplazar.

Si en el segundo argumento $remplazar indicamos una cadena vacía (“ “)lo

que hará la función es eliminar del $texto los trozos coincidentes con $buscar.

o str_ireplace($buscar, $remplazar, $texto): Esta función es igual que la

anterior, pero no tiene en cuenta las diferencias entre letras mayúsculas y

minúsculas.

o substr($texto, comienzo, longitud): Devuelve una parte de la cadena pasada

en $texto. El segundo argumento es un número que indica que carácter

empieza la cadena devuelta, y el tercero indica su longitud. El tercer argumento

“longitud” es opcional, si no se indica, la cadena devuelta llegará hasta el final

de la cadena original.

o sbstr_replace($texto, $sustituir, comienzo, longitud): Devuelve la cadena

pasada en $texto, en la cual se sustituye un texto por otro. El texto nuevo se

indica en $sustituir. El tercer argumento indica el comienzo del texto

sustituido y el cuarto su longitud.

o str_pad($texto, largo, $releno, tipo_relleno): Alarga la cadena de $texto hasta

la longitud indicada en “largo”, para ello se utiliza la cadena indicada en

$relleno. Es decir, si queremos que una cadena ocupe más espacio del que

tiene, alargándola, en el argumento $relleno escribiremos ese carácter, con lo

cual se alargará la cadena hasta la longitud indicada.

o strtr($texto, “lista_1”, “lista_2”):Modifica el texto pasado en $texto, de

manera que sustituye los caracteres de “lista1” por los de “lista2”. El primer

carácter indicado en “lista1” es sustituido por el primero de “lista2” el segundo

de “lista1” es sustituido por el segundo de “lista2”, y así sucesivamente.

- PHP

Sergio Santos Gil 32

Otros modificadores de cadenas.

o str_repeat($texto, num): Devuelve el texto pasado en $texto, repetido el

número de veces indicado en el argumento “num”.

o strrev($texto): Devuelve la cadena pasada en $texto invertida (derecha a

izquierda).

o htmlentities($texto): Devuelve la misma cadena pasada en $texto, en la cual se

han introducido al lenguaje HTML ciertos caracteres especiales que necesitan

escribirse de manera distinta en HTML.

o strip_tags($texto, <”etiq_permitidas”>): Elimina todas las etiquetas de HTML

y PHP que haya en el texto de $texto. EL segundo argumento es opcional e

indica cuales son las etiquetas permitidas (que no se eliminarán), estas deben

indicarse entre los signos <… >.

Funciones Matemáticas

Funciones de cálculo. Estas funciones permiten hacer ciertas operaciones algo más

complejas que las que nos permiten los operadores.

o pow(base, exp): (Potenciación) Eleva el número indicado en base (base de la

potencia) al número indicado en exp (exponente).

o sqrt(num):(Raíz cuadrada) Calcula la raíz cuadrada del número pasado como

argumento.

o log(num, base): (Logaritmo) Devuelve el resultado del logaritmo para num.

base es opcional, e indica la base del logaritmo.

o log10(num): (Logaritmo en base 10) Devuelve el resultado del logaritmo en

base 10 para el argumento pasado.

o decbin(num): (Conversión a binario) Convierte el número pasado en el

argumento en número binario.

o bindec(num): (Conversión a decimal) Convierte un número binario a decimal.

o decoct(num): (Conversión a octal) Convierte el número pasado en octal.

o dechex(num):(Conversión a hexadecimal) Convierte el número pasado en un

valor hexadecimal.

o base_convert(num, base1, base2): (Conversión de una base a otra) Convierte

el número pasado en el argumento, el cual se toma escrito en la “base1”, a la

base especificada en “base2”.

o max(array): (Máximo valor) Devuelve el valor más alto de todos los que se

pasan en una lista. La lista de números puede pasársele en forma de array o

pasar los números directamente como varios argumentos.

o min(array): (Mínimo valor) Devuelve el valor más bajo de todos los pasados

en una lista.

- PHP

Sergio Santos Gil 33

Redondeo, valor absoluto y número aleatorio.

o abs(num): (Valor absoluto) Devuelve el valor absoluto del número pasado

como argumento, es decir, siempre positivo.

o round(num, precision): (Redondeo) Redondea el número pasado en el primer

argumento al entero más cercano cuando no especificamos el segundo

argumento, el cual es opcional e indica el número de decimales que queramos

obtener el número redondeado.

o rand(min, max): (Número aleatorio) Genera un número entero aleatorio

comprendido entre los números pasados en “min” y en “max”.

Funciones trigonométricas.

o deg2rad(grados): (Conversión grados a radianes) Convierte el número

pasado en el argumento a radianes.

o rad2deg(rad): (Conversión radianes a grados) Convierte el número pasado en

el argumento a grados.

o sin(num): (Seno) Calcula el seno del ángulo pasado en el argumento.

o cos(num): (Coseno) Calcula el coseno del ángulo pasado en el argumento.

o tan(num): (Tangente) Calcula la tangente del ángulo pasado en el argumento.

o asin(num): (Arco-seno) Calcula el arco seno del número otorgado.

o acos(num): (Arco-coseno) Calcula el arco coseno del número otorgado.

o atan(num): (Arco-tangente) Calcula el arco tangente del número otorgado.

Funciones de Fecha

o time(): Devuelve la marca de tiempo UNIX para la fecha actual.

o mktime(hora, min, seg, mes, dia, año): Esta función devuelve la marca de

tiempo UNIX para una fecha concreta.

o date(“formato”): Muestra la fecha actual según el formato (d = día; m = mes;

y = año; h=horas; H=horas 24; i=minutos; s=segundos).

o strtotime(String): Devuelve el timestamp correspondiente a la fecha indicada

en varios formatos (“dia-mes-año”; “año/mes/dia”; “mes/dia/año”).

o setlocale(categoría, “localización”): Esta función tiene dos argumentos,

“categoría” indica cual es el tipo de información que debe tratarse de forma

local, y “localización” pondremos en forma de cadena el código del país o

región local.

o date_default_timezone_set(“zona_horaria”):Cambia la hora que nos da el

servidor por la de la zona que introduzcamos como parámetro, por ejemplo:

(“Europe/Madrid”). Esta afectará a todas las fechas posteriores que escribamos

a partir de esta función.

- PHP

Sergio Santos Gil 34

Otras Funciones

Transformación de variables.

o floatval($var):Transforma la variable pasada como argumento a número

decimal.

o intval($var):Transforma la variable pasada como argumento a número entero.

o strval($var):Transforma la variable pasada como argumento a cadena de texto.

o floatval($var):Transforma la variable pasada como argumento a número

decimal.

o settype($var,tipo):Transforma la variable pasada en el primer argumento en el

tipo indicado en el segundo argumento.

o eval($var): Esta función convierte una variable normal en códigoPHP, es

decir, lo que le pasamos en el argumento es interpretado como parte del código

de la página, y no como una variable.

Comprobaciones de variables.

o is_int($var): Comprueba si la variable pasada en el argumento es un entero.

o is_float($var): Comprueba si la variable pasada en el argumento es un decimal.

o is_string($var): Comprueba si la variable pasada es una cadena de texto.

o is_array($var): Comprueba si la variable pasada en el argumento es un array.

o is_object($var): Comprueba si la variable pasada en el argumento es un objeto.

Otras funciones.

o fscanf(STDIN, “tipo%n”, $variable): Esta función permite al usuario

introducir por teclado el valor de la $variable, donde el tipo puede ser String

(s%n), un número entero (d%n), o un número decimal (f%n).

o isset($var): Devolverá el booleano true si la variable está definida, o false si no

lo está.

o unset($var): Esta función eliminará la variable pasada como argumento.

o gettype($var): Devuelve, como cadena de texto, el tipo de variable que es la

variable otorgada como argumento de entrada.

o header(“Location:ruta_pagina”): Permite redireccionar páginas web. Hay

que tener en cuenta que el scriptPHP en el que pongamos esta función debe

figurar al principio de la página, antes que cualquier otra etiqueta. El

argumento que le pasamos será, entre comillas, la palabra Location seguido de

dos puntos y la ruta de la página de envío, tal como lo pondríamos en un

enlace.

- PHP

Sergio Santos Gil 35

Formularios Es conveniente saber, que un formulario HTML va siempre definido entre las siguientes

etiquetas:<FORM> y </FORM>. Dentro de estas etiquetas, podemos incluir tantos

atributos como nos permite el lenguaje HTML.

Los atributos más destacados son:

ACTION: Indica la dirección del script que va a procesar la información.

METHOD: Especifica la forma de envío de los datos. Existen dos opciones:

o GET se emplea para enviar los datos por la URL.

o POST se utiliza cuando enviamos los datos por la entrada estándar STDIO.

Con la palabra action, indicamos el script que va a procesar la información que recoger en el

formulario; y con la palabra method se indica lo que quiere hacer el usuario con los datos.

A la hora del envío de datos al servidor, podemos obtener los valores de los distintos campos

del formulario gracias al atributo name. Según el método de envío, se utiliza su respectivas

variables para obtener dichos datos ($_GET, $_POST, $_REQUEST para ambos métodos).

Archivo HTML Archivo PHP

En el formulario HTML podemos utilizar elementos como <INPUT> y <SELECT>.

Los valores de dichos elementos los rellenará el visitante de la página. Al enviar el

formulario indicado se genera una variable cuyo nombre se especifica mediante el atributo

name. El valor será introducido por el usuario.

- PHP

Sergio Santos Gil 36

INPUT

Cuadro de texto (text). Es el método más utilizado para recoger información

detallada en un formulario. Sirve para entradas de texto sencillas, como un nombre,

dirección, teléfono… que son introducidos por el usuario. Es fácil identificarlo, puesto

que crea un cuadro de texto donde podremos escribir el máximo de caracteres que se

especifique.

Cuadro de contraseña (password). Este campo se utiliza cuando queremos que no se

muestre la información al escribir el contenido, se emplea normalmente para cuando

el usuario vaya a escribir su contraseña.

Campo oculto. Estos campos se utilizan para añadir información dentro de un

formulario, la cual permanece oculta a la vista del usuario. Se emplea con el

parámetro hidden.

Casillas de verificación. Estas casillas se utilizan cuando solo se puede elegir entre

un número de opciones concreto. Pretende buscar la comodidad en el usuario y

menor tiempo de respuesta.

Es la mejor solución para ofrecer opciones definidas, que se podrán seleccionar o no

haciendo click encima de la casilla, que se mostrará como marcada si aparece una

pequeña marca en la casilla correspondiente.

o checkbox: Este tipo de casillas permiten seleccionar varias opciones a la vez.

o radio: Solo permite seleccionar una opción, descartando las demás

posibilidades. Podemos poner una opción marcada por defecto gracias a la

opción CHECKED

Botón de comando. Este botón es el encargado, de cuando hacemos click sobre él, de

enviar los datos del formulario al script especificado con el atributo action indicado

al principio.

- PHP

Sergio Santos Gil 37

SELECT En esta opción se puede seleccionar uno de los elementos de la lista desplegable. La

etiqueta <SELECT> crea el campo de selección y dentro del mismo se va añadiendo las

diferentes opciones disponibles con el parámetro <OPTION>.

También se puede especificar mediante el atributo multiple poder seleccionar más de una

opción del menú. Para ello, se tiene que especificar el valor del atributo name como array.

Para poder seleccionar más de una opción, se tiene que mantener la tecla control pulsada

mientras se clickean en las distintas opciones.

LABEL

Gracias a esta etiqueta podemos asociar un texto a un determinado elemento del

formulario y se muestra junta a él.

Para vincular dichos elementos, se emplea el atributo for en la etiqueta <LABEL>, cuyo

valor tiene que coincidir con el valor del atributo id del elemento a asociar.

- PHP

Sergio Santos Gil 38

TEXTAREA Este campo se utiliza cuando el texto es demasiado largo y queremos que se muestre y se

pueda leer completamente. Para desplazarnos dentro del cuadro usamos las barras de

desplazamiento.

o rows: Especifica el número de filas del área del texto.

o cols: Especifica el número de columnas del área del texto.

o readonly: El control es de sólo lectura, por lo que el usuario no podrá escribir y

el contenido se enviará al servidor.

o disabled: El control está deshabilitado, por lo que el usuario no puede escribir y

tampoco se envía el contenido al servidor.

FIELDSET Agrupa visualmente algunos elementos de un formulario, dibujando un recuadro alrededor de

todos ellos. Se complementa con la etiqueta <LEGEND> que le otorga un título al recuadro.

- PHP

Sergio Santos Gil 39

Otros

isset() y empty(). Estas funciones manejan los mensajes de errores, warnings o

notices en el lado servidor al intentar procesar parámetros que no se han recibido o

que no tienen ningún valor. isset()devuelve true si se ha enviado algún parámetro, y

empty() devuelve true si no se ha enviado ningún valor .

Envió de ficheros al servidor. Se puede enviar archivos al servidor gracias al tipo

file de la etiqueta <INPUT>. Para poder recibir esos archivos al servidor, se emplea el

comando $_FILES[“nombreArchivo”][info], que contiene información fija para cada

archivo subido, en un array asociativo bidimensional, donde info puede valer:

o name: nombre del archivo.

o size: se especifica el tamaño del archivo.

o type: tipo del archivo.

o tmp_name: nombre que tendrá el archivo temporal.

o error: estado de la subida. Si el valor es 0 la subida será correcta, en cambio, si

es menor de 0 dará error.

Los archivos inicialmente son subidos a una carpeta temporal, con un nombre del

tipo php001.php. El archivo será eliminado posteriormente, por eso es preciso

copiarlos en otra carpeta para poder conservarlos (copy()).

Código en cliente

Código en servidor

- PHP

Sergio Santos Gil 40

Cookies Una cookie es un mini archivo de información sobre el usuario, que el servidor coloca en

el equipo cliente con diferentes fines:

Diferenciar a los usuarios y ofrecer a cada uno el contenido que corresponda.

Autenticar al usuario de forma directa.

Establecer nuestras preferencias y opciones.

El uso de cookies se justifica porque HTTP es un protocolo sin estado.

Las cookies se asocian a una combinación máquina + usuario + navegador. Por tanto, son

accesibles para todas las personas que compartan esta combinación, de modo que es muy

recomendable no guardar información sensible. También pueden contener información

sobre los hábitos de navegación de los usuarios en un sitio web.

Para crear una cookie en PHP se emplea la función setcookie(“nombre”,[”contenido/s”]).

Es imprescindible colocar la función antes de generar cualquier salida, porque si no el

intérprete producirá un error y no se creará la cookie. Puede contener varios contenidos:

“contenido”: contenido de la cookie, puede ser vacío.

“caduca”: fecha y hora de caducidad expresada en tiempo Unix. Por defecto, al cerrar

la ventada del navegador.

“ruta”: establece el directorio del servidor al que se asocia la cookie.

“dominio”: establece el dominio del servidor.

“enviar para”: booleano que indica si la cookie se enviará en conexiones seguras

HTTPS o en cualquier tipo de conexión.

“accesible”: establece si la cookie será accesible sólo por el servidor o mediante el

navegador usando scripts.

Y para acceder a la información de las cookies se emplea la variable $_COOKIE.

- PHP

Sergio Santos Gil 41

Sesiones Las sesiones son un sistema que permite a los servidores guardar una relación entre

conexiones, pero a diferencia de las cookies, la información se almacena en el servidor.

Para iniciar una sesión, se emplea el método session_start() que comprueba si hay una sesión

abierta, si no la hay creará una. En cambio, si existe la sesión, reanudará la sesión con el

mismo identificador. Para consultar el identificador se emplea el método session_id().

Para permitir que una variable pertenezca a una sesión y pueda transmitirse entre diferentes

páginas, es preciso registrarla mediante la variable $_SESSION.

La información se las sesiones se guarda durante un perdido determinado, que puede ser el

cierre de sesión por pate del usuario o un tiempo de expiación establecido previamente. Estas

sesiones se almacenan en el directorio tmp del servidor web.

Como las sesiones se pueden quedar almacenadas, podemos eliminarlas gracias al método

session _destroy(), o simplemente eliminar su contenido con session_unset().

- PHP

Sergio Santos Gil 42

AJAX AJAX (Asynchronous Javascript And XML) son técnicas del lado cliente, utilizando

JavaScript para conseguir que el documento de una página cambie, con información

proveniente del servidor, pero sin necesidad de recargarse completamente de nuevo.

Es asíncrono porque se pueden actualizar varias partes de la página simultáneamente, sin

necesidad de que acabe la actualización de una para que empiece la siguiente. Y es XML

para que la información la pueda entender el cliente.

Una de las operaciones más habituales en las aplicaciones AJAX es la de obtener el

contenido de un archivo o recurso del servidor.

- PHP

Sergio Santos Gil 43

XMLHttpRequest Es un objeto que nos permite la transferencia de datos desde la página al servidor y

viceversa. Nos sirve tanto para incorporar datos en la página que tengamos en otros archivos

del servidor, como para mandar datos de la página al servidor, y todo esto de forma

asíncrona.

Propiedad Valor

readyState

Devuelve un número que indica el estado de la carga del documento:

0.- sin inicializar 3.- cargando

1.- inicializado

2.- Cabeceras recibidas 4.- completado

responseBody Devuelve la respuesta como un array de bytes.

responseText Devuelve la respuesta como una cadena de texto

responseXML Devuelve la respuesta como un archivo XML.

status

Devuelve el código de estado de la URL solicitada:

200.- Acceso correcto a la página

404.- Solicitud incorrecta, no se puede conectar a la página

500.- Error interno que no permite ver la página

statusTetx Igual que el anterior, pero devuelve el código de estado con una cadena de

texto (“Ok”, “Not Found”, Internal Server Error,…).

Método Función

open(método_envío, URL

[, sincronía, user, passwd] )

Este método es el que indica cual y cómo es la petición que debe hacerse al

servidor. Tiene como parámetros el método de envío de los datos y la ruta

en la que está el archivo con el que intercambiamos datos.

De forma opcional se puede indicar mediante un booleano si la transmisión

de datos se realiza de forma asíncrona (true) o síncrona (false), y podemos

poner un usuario con su contraseña para la autentificación.

send(datos)

Envía la petición al servidor, donde como parámetro enviaremos los datos al

servidor cuando usemos el método de transmisión POST.

Tiene que ir después del open().

abort() Detiene la petición actual.

setRequestHeader(cabecera,

valor)

Permite establecer cabeceras personalizadas en la petición HTTP.

Se debe invocar después del open().

getAllResponseHeaders() Devuelve una cadena de texto con todas las cabeceras de la respuesta del

servidor.

Evento Descripción

onreadystatechange Se produce cada vez que hay un cambio en el estado de carga del documento.

onabort Se produce cuando se interrumpe la carga del documento.

onload Se produce cuando el documento se ha cargado completamente.

onloadstart Se produce cuando comienza la carga del documento.

onprogress Se produce mientras el documento se está cargando.

- PHP

Sergio Santos Gil 44

Conexión a una BBDD

Antes de realizar cualquier operación con una base de datos desde una web, debemos realizar

una conexión al servidor de la base de datos, en este caso emplearemos el sistema gestor de

bases de datos de MySQL, y a la propia base de datos. Esto se hace mediante las funciones

mysql_connect, para conectarnos a MySQL, y mysql_select_db para conectarnos a nuestra

base de datos.

Si poseemos un servidor externo, debemos conocer los datos de conexión que se nos

facilitarán al realizar la contratación. En la función mysql_connect debemos poner la

dirección IP del servidor:

mysql_connect (“servidor”,”usuario”,”password”);

$conexion = mysql_select_db (“Base de datos”);

- PHP

Sergio Santos Gil 45

Introducir Registros Para crear un nuevo registro en una de las tablas de nuestra base de datos, debemos generar

la información para después introducirla una sentencia SQL (INSERT INTO) que se envía

mediante la función mysql_query:

mysql_query("INSERT INTO tabla(campos) VALUES(valores), $conexion);

Listado de Registros Para elaborar un listado completo de la base de datos, realizamos una consulta SQL

(SELECT) que almacenará la información en una variable $resultado.

$resultado=mysql_query("SELECT * FROM tabla");

Posteriormente, mostramos la información de $resultado mediante la función

mysql_fetch_array que devuelve una variable array con los contenidos de un registro a la

vez que posiciona sobre el siguiente. Utilizamos un bucle while para mostrar de forma

secuencial cada uno de los registros:

while( $array=mysql_fetch_array($resultado) ){ $array["campo"]; }

Borrado de Registros Una forma de realizar un borrado de registros es la sentencia SQL (DELETE) mediante la

función mysql_query, indicando las condiciones que deseemos.

mysql_query("DELETE FROM tabla WHERE condiciones);

Modificación de Registros Para realizar modificaciones, se emplea la sentencia SQL que modifica los valores

(UPDATE) mediante la función mysql_query.

mysql_query("UPDATE tabla SET campo='nuevo_valor’);

- PHP

Sergio Santos Gil 46

Conexión con PDO La extensión PDO (Objetos de Datos de PHP) define una interfaz ligera para poder

acceder a bases de datos en PHP. Proporciona una capa de abstracción de acceso a datos,

lo que significa que, independientemente de la base de datos que se esté utilizando, se usan

las mismas funciones para realizar consultas y obtener datos.

Se activa descomentando el apartado extensión=php_pdo_mysql.dll del fichero php.ini.

- PHP

Sergio Santos Gil 47

Para un uso más docente, podemos usar las sentencias preparadas, que son scripts

compilados de SQL que pueden ser personalizados usando parámetros de variables.

Estas consultas sólo necesitan ser analizadas una vez y puede ser ejecutada varias veces

cambiando o no los parámetros. Así se evita repetir el ciclo de análisis, compilación y

optimación cada vez que se ejecuta, por lo que usan menos recursos y se ejecutan antes.

- PHP

Sergio Santos Gil 48

Arquitectura MVC

La arquitectura MVC se refiere a la separación de las responsabilidades de una aplicación

en tres áreas diferenciadas:

Modelo: Se encarga de la gestión de la lógica de negocio y la persistencia de datos.

o Utiliza un singleton para la conexión a la base de datos.

o Utiliza objetos, con métodos get/set para sus atributos.

o Crea funciones estáticas para cada acción específica que solicite el

controlador.

Vista: Se encarga de la presentación de los datos y la gestión de eventos para

desencadenar acciones en el controlador.

o Debería contener HTML principalmente.

o Intercala con PHP en las formas <? //código PHP ? >.

Controlador: Se encarga de gestionar todas las peticiones que vienen desde la

interfaz para acceder al modelo.

o Habrá normalmente un controlador de fachada y varios

subcontroladores: uno por cada entidad, por caso de uso o funcionalidad.

o El controlador de fachada debe ser el punto único de entrada a nuestra

aplicación.

o Sólo deben contener PHP.

o Son los únicos que manejan sesiones, cookies y cabeceras.