Está en la página 1de 58

13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Programación de documentos web


utilizando lenguajes de script de servidor.

Caso práctico
Tras la presentación de las plataformas de
gestión de contenidos Félix y María han
pensado que les resultaría interesante ver las
posibilidades de personalizar aún más la
plataforma para adaptarla a sus necesidades.

Le transmiten a Juan esta posibilidad y este


les contesta que sería posible hacerlo, pero
contando con alguien que supiera programar
en PHP, ya que los que forman parte del Let Ideas Compete (CC BY-NC-ND)

departamento tienen su tiempo dedicado a


labores de mantenimiento y administración del sistema informático.

María y Félix dicen que antes de plantearse la necesidad de contratar a una


persona más, sería conveniente hacer alguna prueba, para convencerse que
es posible modificar la plataforma del modo que ellos quieren.

María dice que ella tiene la sensación de que las alumnas del CFGS ASIR
tienen una actitud muy positiva y emprendedora en la empresa, y que le
parece que quizás se las podría dar una oportunidad con este proyecto.

Juan comenta que a él le parece una idea estupenda, que están muy
integradas en el departamento, y que no se les puede poner ninguna queja.
Según los informes que tiene de Laro y Vindio, cuando tienen alguna duda o
hay algo que no saben, no hay que olvidar que están formándose, preguntan
con gran interés cuando ya han agotado todas las posibilidades de resolverlo
por sus propios medios.

Juan tiene la idea de hablar con ellas para saber que conocimientos tienen de
programación en PHP para evaluar la posibilidad de solicitarles la adaptación
de las plataformas. Para ello decide hablar con Laro y Vindio para pedirles
que comprueben los conocimientos que tienen de programación, comenzando
por las cuestiones básicas, como son: la integración de este lenguaje con los
lenguajes de marcas, los distintos tipos de datos, el tratamiento y visibilidad de
variables al trabajar con funciones, las estructuras de control del lenguaje, la
gestión de errores, uso de formularios y sesiones.

En esta unidad veremos el incremento de posibilidades que supone el uso de aplicaciones


desarrolladas con lenguajes de programación que se ejecutan del lado del servidor, en
especial con PHP, ya que algunos de los más importantes gestores de contenidos que
estamos utilizando, han sido programados con este lenguaje, algo que nos va a permitir
multiplicar su potencialidad.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 1/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Ministerio de Educación y Formación Profesional (Dominio público)

Materiales formativos de FP Online propiedad del Ministerio de


Educación y Formación Profesional.
Aviso Legal

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 2/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

1.- Clasificación.

Caso práctico
María tiene una reunión con el departamento de
informática para informarles de la potencial
necesidad de intentar adaptar las plataformas, y
hacer modificaciones “a medida”, y de la posibilidad
de contratar a alguien más para desarrollar ese
trabajo, si dicha necesidad se confirma.

Para determinar exactamente en qué lenguaje hay


que programar, le pide a Juan que lo explique, ya
que ella no tiene los conocimientos informáticos
necesarios para hacerlo.

Juan comienza por situar a todos en el tema,


Nate Steiner (CC0)
haciendo una clasificación de los diversos lenguajes
con los que sería posible trabajar.

Anteriormente hemos comentado que los lenguajes en el


lado del servidor permiten el acceso a bases de datos, y
proporcionan estructuras de código que facilitan el proceso
de desarrollo al permitir estructuras de control.

Para realizar una clasificación de estos lenguajes,


podemos hacer referencia al tipo de sistema operativo bajo
el que corren sus aplicaciones.

Esta clasificación queda reflejada en la tabla adjunta:


Symphoney Symphoney (CC BY)

Lenguajes de script en el lado del


servidor

Lenguaje Sistema operativo Año de aparición

Perl Multiplataforma 1987

Python Multiplataforma 1991

PHP Multiplataforma 1995

Ruby Multiplataforma 1995

ASP.Net Microsoft Windows 1998

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 3/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Para saber más


En el siguiente enlace podrás leer una breve historia de la evolución de los
lenguajes de script del lado del servidor:

Evolución de los lenguajes de script.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 4/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

2.- Integración con los lenguajes de


marcas.

Caso práctico
Juan continúa explicando que PHP es un lenguaje de
script de lado de servidor, multiplataforma y con una
integración inmediata con HTML que además, puede
utilizarse de modo muy sencillo junto a otros
lenguajes de marcas y, lo más interesante, junto a
cualquier fichero XML.

Por último, determina que PHP es el lenguaje con el


que van a trabajar para hacer las pruebas que les
solicita María.

Jonny Goldstein (CC BY)

La integración de PHP con HTML es inmediata. Cuando el fichero


de extensión .php es solicitado al servidor, el intérprete del mismo
ejecuta las sentencias PHP transformándolas en código HTML que
luego será procesado por el navegador del cliente.

PHP no está limitado a ser usado junto con HTML, ya que puede
ser usado en combinación de XHTML y cualquier tipo de ficheros
XML. Es más, PHP es capaz de autogenerar estos archivos y
guardarlos en el sistema de archivos en lugar de mostrarlos por
pantalla.

webmove (CC BY)

Debes conocer
Este enlace te lleva a una presentación en la que verás cómo embeber PHP
con HTML.

◄ Título ►

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 5/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

EMBEBER CÓDIGO PHP


CON HTML

Requisitos previos.

AlfBonillo (Dominio público)

¿Cómo incluir código PHP


en una página HTML?

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 6/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

AlfBonillo (Dominio público

Archivo informe.php

AlfBonillo (Dominio público)

Descargar archivo de Ejemplo. informe.php.zip (zip -


0,33 KB) .

Ver informe.php

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 7/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

AlfBonillo (Dominio público)

Ejemplo 1. Código Fuente.

AlfBonillo (Dominio público)

Descargar archivo de Ejemplo. ejemplo1.php.zip (zip


- 0,83 KB) .

Ejemplo 1. Ejecución.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 8/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

AlfBonillo (Dominio público)

Ejemplo 2. Código Fuente.

AlfBonillo (Dominio público)

Descargar archivo de Ejemplo. ejemplo2.php.zip (zip


- 0,89 KB) .

Ejemplo 2. Ejecución.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_offl… 9/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

AlfBonillo (Dominio público)

Ejemplo 3. Código Fuente.

AlfBonillo (Dominio público)

Descargar archivo de Ejemplo. ejemplo3.php.zip (zip


- 0,93 KB) .

Ejemplo 3. Ejecución.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 10/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

AlfBonillo. (Dominio público)

Comparación Ejemplo 2 y
Ejemplo 3.

AlfBonillo. (Dominio público)

Fin.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 11/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

AlfBonillo. (Dominio público)

1 2 3 4 5 6 7 8 9 10 11 12
13

Autoevaluación
PHP es un lenguaje de script de servidor que permite crear y guardar
ficheros con formato XML. ¿Verdadero o Falso?

Falso.
Verdadero.

Incorrecto. PHP cumple esas características.

Correcto. Muy bien, has captado la idea.

Solución

1. Incorrecto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 12/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

2. Opción correcta

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 13/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

3.- Configuración del intérprete.

Caso práctico
Al salir de la reunión, Vindio habla con las
estudiantes y les pregunta si conocen el lenguaje
PHP. Ellas le contestan que tienen nociones
básicas, pero que el ciclo que estudian está
orientado a la administración de sistemas y no a la
programación, aunque están dispuestas a aprender
si fuera necesario.

Naroba también le explica que, dado el carácter de


los estudios si que saben configurar el intérprete
para poder trabajar con ese lenguaje. Alain Bachellier (CC BY-NC-SA)

Llamamos intérprete al programa que ejecuta las instrucciones escritas en un


fichero fuente, en nuestro caso en lenguaje PHP, que acaba de ser traducido.

¿En qué momento se configura el intérprete de


PHP?

Al iniciarse PHP el servidor web lee el fichero


php.ini, que como hemos visto en unidades
anteriores, es el fichero con el que se configura el
intérprete de PHP.

El fichero de configuración consiste en una serie de


directivas y los valores que se les asigna, y que
CG Dibujo (CC BY-NC-ND)
determinan el comportamiento del intérprete. Hay
que tener en cuenta que las líneas en blanco y las
que comienzan por punto y coma, que son los comentarios, no son procesadas.

Las directivas del fichero php.ini están agrupadas en diferentes secciones:

Opciones de lenguaje.
Limitación de recursos.
Manipulación de errores.
Directorios.
Otros.

También es posible emplear ficheros de configuración a nivel de directorio, que funcionan de


una forma semejante a los ficheros .htaccess de Apache.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 14/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

PHP distingue entre mayúsculas y minúsculas, excepto para sus palabras


reservadas y nombres de función, esta característica afecta al contenido del
fichero de configuración.

Debemos tener presente que PHP busca los ficheros INI en cada directorio desde el
directorio del fichero solicitado hasta el directorio donde se encuentra el documento raíz
actual, esto es: DocumentRoot.

Desde la versión 5.1. de PHP, es posible referenciar a variables ini existentes en ficheros
.ini. ¿Cuál es la utilidad de esta característica?

Agrupar en una sola sección las variables de configuración que más se modifiquen por tener
un servidor en el que se utilicen distintas configuraciones.

Para saber más


Este enlace te lleva al menú de configuración en tiempo de ejecución de PHP:

Cambios en la configuración de PHP

Visita este otro enlace para acceder al menú de aspectos generales de la


instalación y configuración de PHP:

Instalación y configuración de PHP

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 15/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

4.- Herramientas de edición de código.

Caso práctico
Viendo que no es un lenguaje nuevo para ellas, Laro
les pregunta por el editor que utilizaban para programar
cuando estudiaron ese lenguaje.

Naroba le explica que en ese módulo les permitían usar


el editor que fuese más cómodo para cada uno de ellos.
Ella prefería trabajar con una distribución Linux y usaba
el editor gedit para programar, ya que reconocía las
palabras reservadas al guardar la extensión del fichero
y además las coloreaba lo que le resultaba cómodo.

Jana dice que ella prefería trabajar con un IDE gratuito


por lo que usaba HTML-Kit, mientras que Noiba usaba Alain Bachellier (CC BY-NC-
el editor Notepad++ para Windows. SA)

Para codificar podemos emplear cualquier editor de texto


plano como el bloc de notas, aunque es preferible utilizar
Notepad++, ya que tiene la característica de colorear las
palabras reservadas de varios lenguajes de programación,
lo que sirve de ayuda al codificar un programa. Además
para Linux también se pueden utilizar editores como Kate o
Kwrite para escritorio KDE (Entorno de Escritorio K) y gedit
para GNOME.

Por otro lado, también podemos utilizar un IDE, que es un Jesús Serrano (CC BY)
programa que proporciona un conjunto de herramientas
para facilitar el desarrollo de nuevos programas para uno o
varios lenguajes de programación.

Existen diversos IDE gratuitos que facilitan la tarea de codificar ficheros web,
proporcionando ayuda para HTML y PHP. Uno de ellos es HTML-Kit. Los usuarios de
Gnome cuentan con herramientas como Scribes. Al final de este apartado cuentas con un
enlace a diversos IDE gratuitos.

También existen IDE con licencia de pago, seguro que has oído hablar de Frontpage y
Dreamweaver.

Para saber más


Este es un enlace a una web donde aparece un listado de diversos editores
web gratuitos:
https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 16/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Editores web gratuitos

Autoevaluación
Cuáles de los siguientes editores puede usarse para codificar en PHP:

Gedit.

Kate.

HTML-Kit.

Word.

Mostrar retroalimentación

Solución

1. Correcto
2. Correcto
3. Correcto
4. Incorrecto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 17/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

5.- Elementos del lenguaje. Sintaxis.

Caso práctico
Vindio les dice que es estupendo que conozcan los
elementos básicos del lenguaje.

Naroba le comenta que cree no tener problemas


con la definición y utilización de variables y
funciones, aunque le parece que los objetos no los
utiliza muy bien, ya que no comprende muy bien la
filosofía de la POO. Añade que, pese a que quien
impartía el módulo insistía en la necesidad de usar
los comentarios para documentar y hacer más fácil
la comprensión del código, ella no acababa de Alain Bachellier (CC BY-NC-SA)

usarlos adecuadamente y que cada vez se relajaba


más y prescindía de su uso.

Laro le explica que esa actitud es la habitual hasta que uno trabaja en
proyectos reales, y tiene que invertir tiempo en comprender aquello que hacen
los demás para poder realizar su trabajo. Pero que documentar los programas
es tan importante como documentar las instalaciones. También la tranquiliza
respecto a la POO, ya que le dice que, al menos, inicialmente no van a
necesitar un altísimo nivel de programación y podrán desenvolverse sin un
gran dominio de la POO.

Un programa informático requiere estar bien formado tanto sintáctica como


lógicamente.

Lo primero hace referencia a que las palabras y estructuras


utilizadas sean correctas, es decir, que estén bien escritas
y formadas; y lo segundo, que nuestro programa realice
correctamente las tareas para las que está diseñado.

Ya hemos visto anteriormente como incluir código de PHP


dentro de HTML, pero nos falta conocer otras
características propias del lenguaje; como, por ejemplo,
que siempre debemos incluir el punto y coma para
finalizar una sentencia, por lo que a dicho carácter se le Manuel Gonzalez Noriega (CC BY)
conoce como “Instrucción separador”. A este efecto sirve
también el símbolo de cierre de bloque de PHP , el “?>”.

Otros elementos del lenguaje son:

Comentarios.
Constantes.
Variables.
Tipos de datos.
https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 18/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Funciones.
Objetos.

Autoevaluación
Para indicar la finalización de una sentencia de código se usa:
El punto, ".".

El punto y coma, ";".

La coma, ",".

El símbolo de cierre de bloque de PHP, "?>".

Mostrar retroalimentación

Solución

1. Incorrecto
2. Correcto
3. Incorrecto
4. Correcto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 19/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

5.1.- Comentarios.
Se emplean tanto para proporcionar determinada
información sobre el código, como para deshabilitar una
parte del mismo y evitar que se ejecute, ya que las líneas
de comentario son ignoradas por el intérprete.

Al comienzo del fichero se suelen escribir unas líneas de


comentario, explicando aspectos generales de la
funcionalidad del archivo, mientras que usado entre el
código las líneas de comentario se emplean para aclarar
pasos complejos o delimitar determinadas áreas dentro del Junior Silva (CC BY-SA)
archivo que faciliten su lectura.

Cuando se realiza una modificación en los ficheros afectados se comenta el código antiguo
y se delimita donde comienza y termina la modificación, añadiendo una explicación sobre la
actualización en las líneas de comentario en la cabecera del fichero.

En algunas ocasiones, el código comentado se elimina posteriormente y sólo se conservan


los comentarios de la cabecera del documento que informan de la modificación.

En PHP se utilizan dos tipos de comentarios:

Comentario de línea: son válidos sólo hasta el final de línea o del bloque de código
PHP. ¿Cómo se crean? Empleando los símbolos: // y # , siendo más habitual usar el
primero.
NOTA: la etiqueta </script> no finaliza un bloque de código PHP, mientras que ?> si lo
hace. Si está activada la directiva ASP_TAGS, la etiqueta %> funciona igual que ?>.

Comentario de bloque: permite comentar varias líneas hasta que encuentra el


símbolo de fin de comentario. Los símbolos utilizados son /* para iniciar el bloque y */
para finalizarlo.

Autoevaluación
¿Cuáles de las siguientes cadenas de caracteres indican el comienzo de
comentarios?
//

%>

/*

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 20/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Mostrar retroalimentación

Solución

1. Correcto
2. Correcto
3. Incorrecto
4. Correcto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 21/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

5.2.- Constantes y variables.


Una constante es un identificador, es decir un nombre, al que se le asigna un
valor simple, de manera que cuando se emplea ese nombre se sustituye por el
valor asignado. Lo habitual, por convención, es que el nombre de la constante
esté en mayúsculas.

¿Cómo podemos definir una constante?

Empleando la sentencia DEFINE(). Un ejemplo sería:

define(“PI” 3.141592);

Una vez que se define una constante no se puede cambiar el


valor que se le ha asociado y puede referenciarse desde
christine kaelin (CC BY-NC-ND)
cualquier punto del código.

Además de las constantes definidas por el programador, PHP cuenta con una lista de
constantes predefinidas en el sistema que pueden ser utilizadas en cualquier instante.

Una variable es un espacio de memoria en la que se puede almacenar un dato


para su uso posterior.

Por ejemplo: $mi_numero = 75; donde: mi_numero es el nombre de la variable, fíjate en que va
precedido por el símbolo de dólar $, y 75 es el valor que almacenamos en la variable.
Podemos cambiar el contenido de una variable todas las veces que sea necesario a lo largo
del programa.

PHP cuenta con variables predefinidas, además de las variables que pueda definir el
programador para que el script se ejecute de manera correcta. Estas variables predefinidas
facilitan el trabajo de los programadores. De las más conocidas y empleadas son las
variables $_POST[···] y $_GET[···], muy empleadas para la recuperación de valores desde
formularios web.

Existe una regla para proporcionar el nombre a las variables y a las constantes. Un nombre
válido comienza por un subguión o una letra, al que puede seguir otras letras, números o
subguiones.
Para las variables, el nombre siempre va precedido del signo dólar ($) y es sensible a
mayúsculas.

Las principales diferencias que podemos establecer entre constantes y variables son:

Las constantes no llevan el signo dólar ($) como prefijo.


Las constantes sólo pueden ser definidas usando la función DEFINE() y no por
asignación directa.
Las constantes pueden ser definidas y accedidas desde cualquier sitio sin importar las
reglas de acceso de variables.
Las constantes no pueden ser redefinidas o eliminadas una vez se han definido.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 22/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Las constantes, en principio, sólo deben contener valores escalares.

Para saber más


En los siguientes enlaces podrás ampliar información sobre constantes y
variables.

Lista de constantes predefinidas en PHP.

Clasificación de las variables predefinidas de PHP

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 23/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

5.3.- Tipos de datos.


El tipo de dato indica cuál es la clase de información que
se va a manejar. Es importante, porque en función del tipo
de dato se pueden realizar unas operaciones u otras y
también evitar posibles errores o resultados no deseados.

PHP no es un lenguaje fuertemente tipado, es decir, no es


necesario asociar un tipo de dato a una variable al
definirla, tal y como se hace en otros lenguajes de
programación como C, Java o Pascal; sino que el tipo de
la variable queda determinado por el tipo del dato que se ken yee (CC BY-NC-ND)

asigna, por lo que si a la variable $a le asigno el valor 7,


$a=7;, esta será una variable de tipo entero, y si a continuación le asigno “Hola”, $a=”Hola”;,
$a se convertirá en una cadena de caracteres o string.

Esta forma de trabajar proporciona más flexibilidad al permitir que una variable pueda ser
inicialmente de tipo numérico, y luego se transforme en otro tipo distinto, pero obliga al
programador a tener un mayor control sobre los datos que se almacenan en las variables y
las operaciones que se realizan con ellas.

Si se quiere forzar un tipo de dato específico a una variable, lo podemos hacer indicando
delante de la variable el tipo que deseamos que tenga. Para ello se pone entre paréntesis el
nombre del tipo de dato; por ejemplo:

$a = 75; // $a es de tipo entero al asignarle un número entero


$b = (string) $a; // $b es de tipo cadena al forzar el tipo. Es igual que hacer $b = “75

Debes conocer
Visitando este enlace podrás ver una clasificación de los tipos que se emplean
en PHP, así como otros enlaces para saber más sobre cada tipo en concreto:

Tipos de datos de PHP

Para leer más sobre la conversión y manipulación de tipos en PHP:

Manipulación de tipos de datos en PHP

Autoevaluación
¿Cuáles de los siguientes tipos de datos son válidos en PHP?
https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 24/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

char.

integer.

float.

array.

Mostrar retroalimentación

Solución

1. Incorrecto
2. Correcto
3. Correcto
4. Correcto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 25/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

6.- Expresiones y operadores.


Precedencia.

Caso práctico
Noiba recuerda que entre los elementos del lenguaje
estaban los operadores y, le parecía que su
precedencia era muy semejante, por no decir igual, que
la que había estudiado en matemáticas.

Aunque había unos operadores de manejo de bit que


nunca logro averiguar cómo se utilizaban.

Laro comenta que no son los más utilizados pero que


son útiles, ya que permiten al programador tratar los
valores de los bits directamente.

Alain Bachellier (CC BY-NC-


SA)

Una expresión es una combinación de operadores, variables,


constantes, y funciones que está formada correctamente, es
decir, es válida sintácticamente, y que tiene sentido, o lo que
es igual, es válida semánticamente. Toda expresión produce
un valor al ser procesada. La mayor parte del código que
realicemos en PHP van a ser expresiones.

Ejemplos de expresiones son: $a = 6;, o una más compleja:


$b +3 = = $a * 2

Un operador es un elemento, palabra o símbolo, que al Blog-ADM-Anhanguera (CC BY-NC)


aplicarlo sobre otros elementos, los operandos, proporciona
un valor.

Según el tipo de operación que realizan, los operadores más utilizados se clasifican en:

Aritméticos: son los operadores empleados en las operaciones aritméticas: suma,


resta,...
Asignación: se utilizan para almacenar un dato dentro de una variable, por ejemplo:
$a = 6;.
De bit: permiten evaluar y manipular bits determinados dentro de un entero.
Comparación: como su nombre indica, comparan dos elementos.
Lógicos: el resultado obtenido de estos operadores se valora a true o false, Cierto o
Falso.

Al final de la página tienes un enlace al sitio oficial de PHP donde podrás ampliar la
información sobre los distintos tipos de operadores.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 26/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Otra posible clasificación puede hacerse en función del número de operandos sobre los que
actúan:

Unarios: un solo operando, por ejemplo el operador incremento (++)


Binarios: dos operandos. Son la mayoría, ejemplo la suma: 2 + 3
Ternarios: tres operandos, como es el caso del operador condicional (?:), ejemplo $a
? $b : $c

La precedencia de operadores establece el orden de evaluación de las operaciones que


forman una instrucción. Por ejemplo, 2 + 3 * 4 da como resultado 14 y no 20, porque la
multiplicación es precedente, es decir, se opera antes, frente a la suma, por tanto equivale a
la operación matemática 2 + ( 3 * 4 ).

Para saber más


En los siguientes enlaces podrás ampliar información sobre los operadores y
la precedencia de los mismos.

Tipos de operadores y ejemplos

Tabla con la precedencia de los operadores en PHP

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 27/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

7.- Sentencias de control.

Caso práctico
Naroba les habla de las sentencias de control y les
explica que le costó un tiempo diferenciar entre las
condicionales y los bucles. Aunque ahora le parece
algo evidente, no sabe porqué motivo había ocasiones
en que usaba condicionales en lugar de utilizar bucles.
Todo se resolvió cuando logró entender que en los
condicionales las sentencias se ejecutan una sola vez,
mientras que en los bucles las sentencias se ejecutan
un número de veces limitado por una condición.

Jana recuerda que a ella le supuso un gran trabajo


aprender a poner la condición adecuada para terminar
la ejecución de los bucles y casi siempre le fallaban Alain Bachellier (CC BY-NC-SA)
los códigos por ese motivo, ya que entraban en bucles
infinitos.

A través de las sentencias de control


podemos establecer cual es el flujo que debe
seguir el programa, y de esta manera
podemos dotarlo de mayor operatividad, pero
también de mayor complejidad al
proporcionar al programa “capacidad de
decisión”.

Las sentencias de control son:

Condiciones: en función de los valores


que toman una o varias variables, que
forman la expresión que debe verificar Prensa Monterrey (CC BY-NC-SA)
la condición, se lleva a cabo la
ejecución de una serie de sentencias u otras. Las estructuras que proporciona
PHP para manejar condiciones son:
IF - ELSEIF - ELSE.
SWITCH - CASE.
Bucles: permiten la repetición, o iteración, de un bloque de código hasta que se
cumpla la condición que pone fin al bucle. Es necesario determinar correctamente la
condición de salida del bucle para que el programa no se quede atrapado y se ejecute
indefinidamente. Para manejar bucles, PHP proporciona las siguientes estructuras:
FOR.
FOREACH.
WHILE.
DO - WHILE.

Además, Existen dos comandos para salir de forma forzada de las estructuras anteriores,
que son:

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 28/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

BREAK.
CONTINUE.

Todas ellas las vamos a estudiar a continuación.

Autoevaluación
Los bucles se diferencian de los condicionales en que las sentencias
contenidas en la estructura se pueden ejecutar solo una vez en el caso
de las condicionales y varias veces en los bucles:
Falso.
Verdadero.

No es correcto. Los bucles son estructuras que permiten la ejecución de


las sentencias que contienen varias veces, mientras que los
condicionales solo las ejecutan una vez y solo si se cumple la condición
que las precede.

Correcto. Es importante que seas capaz de diferenciar entre estos tipos


de estructura.

Solución

1. Incorrecto
2. Opción correcta

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 29/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

7.1.- Condicionales: if-elseif-else y switch-


case.
IF permite la ejecución condicional de bloques de
código. La construcción es: IF (expresión)
{sentencias}.

Expresión establece la condición que se debe


evaluar, a un valor booleano y en caso de
verificarse se ejecutará la sentencia. Para ejecutar
un bloque de sentencias, en lugar de una sola,
metemos el bloque entre llaves. Cuando solo es una
sentencia podemos prescindir de las llaves.

Podemos anidar sentencias IF, haciendo que para


ejecutar un bloque de sentencias se tengan que AlfBonillo. (Dominio público)
cumplir varias expresiones:

IF (expresión1)
IF (expresión2)
sentencia

Cuando queremos ejecutar otra sentencia cuando no se cumple la expresión del IF, se
utiliza el ELSE.

IF (expresión)
sentencia_1
ELSE
sentencia_2

ELSEIF, o también ELSE IF, es una combinación de las sentencias anteriores. La manera de
usarla es:

IF (expresión_1)
sentencia_1
ELSEIF (expresión_2)
sentencia_2
•••••••••••••••••••••••
ELSEIF (expresión_n)
sentencia_n
ELSE
sentencia_p

No hay que confundir los IF anidados con los ELSEIF. Los primeros exigen que la
expresiones se cumplan en cascada, los segundos requieren que la expresión
https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 30/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

anterior no se verifique para ejecutar la sentencia de esa rama.

Para evaluar los posibles valores que puede tomar una variable es mejor usar: SWITCH - CASE
que ir anidando condiciones semejantes en una sentencia IF - ELSEIF - ELSE. Su construcción
es:

SWITCH (variable) {
CASE valor_1:
sentencia
••••••••••••••••
CASE valor_n:
sentencia
DEFAULT:
sentencia
}

Con DEFAULT se recogen todos aquellos valores que no se hayan considerado explícitamente
y es la última opción que se valora. Su uso no es obligatorio.

Para saber más


Las sentencias condicionales se pueden codificar de distintas maneras que
debes conocer para entender el código que se ejecuta si te encuentras con
ellas:

Sentencias condicionales en PHP

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 31/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

7.2.- Bucles: while, do – while for y


foreach.
La construcción de la sentencia WHILE es muy sencilla:

WHILE (expresión) {
instrucción 1;
••••••••••••••••••
instrucción n;
}

julrocas (CC BY-NC-SA)

Para que se ejecuten las instrucciones la evaluación de la


expresión debe dar como resultado TRUE.

DO- WHILE trabaja de la misma manera , la única diferencia es que en este último caso la
evaluación de la expresión se realiza al final y las sentencias siempre se ejecutarán al
menos una vez.

DO {
instrucción 1;
•••••••••••••••••••••
instrucción n;
} WHILE (expresión);

La estructura de un bucle FOR es más compleja. En lugar de emplear una expresión usa tres,
construyéndose la instrucción de la siguiente manera:

FOR (expresión1; expresión2; expresión3) {


instrucción 1;
••••••••••••••••••••••••
instrucción n;
}

El sentido de cada una de ellas es el siguiente:

expresión 1: es ejecutada siempre al comienzo del bucle y solo una vez.


expresión 2: es evaluada antes de realizar cada iteración y provoca la salida del
bucle en cuanto su resultado no es TRUE.
expresión 3: es ejecutada al final de cada iteración.

En PHP existe otra estructura de repetición que no está definida en todos los lenguajes de
programación. Se trata de FOREACH, que proporciona una manera rápida de iterar sobre
arrays. La construcción de esta instrucción es:

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 32/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

FOREACH (expresión) {
instrucción 1;
••••••••••••••••••••••••
instrucción n;
}

Donde expresión tiene dos formas posibles:

array as $valor: recorre el array almacenando el elemento correspondiente en la


variable $valor.
array as $indice => $valor: además de almacenar el elemento en $valor, guarda la
clave del mismo en $indice.

Ejercicio resuelto
Para utilizar FOREACH es necesario que el array esté reconocido como una
variable, de manera que no podemos definir el array en la instrucción. De los
siguientes ejemplos, que ilustran lo anterior, el primero es correcto, mientras
que el segundo no lo es.

Correcto.

Mostrar retroalimentación

<?php

$v = array(1, 2, 3); // Definimos un array de valores 1, 2

foreach( $v as $valor ) { // Recorremos cada uno de los ele


$valor = 4 * $valor; // El elemento del array que se evalú
} // Al llegar a este punto los valores
?>

Erróneo.

Mostrar retroalimentación

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 33/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

<?php
foreach( array(1, 2, 3) as $valor ) { // No es posible definir el a
$valor = 4 * $valor;
}
?>

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 34/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

7.3.- Instrucciones break, y continue.


Se utilizan para controlar la ejecución dentro de las
sentencias en las que se encuentra el programa.

Para salir de una estructura de control condicional o


iterativa puede usarse BREAK o CONTINUE.

Ambas se emplean de una forma análoga, con la diferencia


de que mientras BREAK finaliza totalmente la ejecución del
bucle; CONTINUE hace que se salte a la siguiente iteración.

Admiten un número como argumento, que indica el número Broken Windshield. (CC BY-SA)

de estructuras anidadas de las que debe salir. Cuando no


se indica argumento se asume que su valor es, por defecto, igual a 1.

Al utilizar la estructura condicional SWITCH CASE es necesario emplear siempre una de estas
sentencias, habitualmente BREAK; ya que de no interrumpir la ejecución de la sentencia del
CASE por el que entró el flujo del código, continúa ejecutando los demás CASE que haya por
debajo aunque no verifiquen la condición. Esto se debe a que el SWITCH ejecuta las
sentencias de una en una cuando se encuentra una CASE coincidente. Por tanto, la
estructura SWITCH - CASE queda finalmente como sigue:

SWITCH (variable) {
CASE valor_1:
sentencias_1
break;
················
CASE valor_n:
sentencias_n
break;
DEFAULT:
sentencias_p
}

A pesar de la existencia de estos comandos es aconsejable no abusar de su uso


y emplearlos solo en casos realmente necesarios, procurando que los bucles
finalicen de la forma definida en su expresión de control.

Autoevaluación
La diferencia entre un bucle while y un do-while es que las sentencias
que contiene el primero pueden no ejecutarse, mientras que en un do-
while al menos se ejecutarán una vez.

Falso.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 35/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Verdadero.

La respuesta es incorrecta puesto que en un bucle while lo primero que


se hace es verificar que se cumple la condición, y si no se cumple las
sentencias del bucle no se ejecutan. En cambio en el bucle do-while lo
primero que se ejecutan son las sentencias y, después se valida la
condición para volverlas a ejecutar, sólo en el caso de que la condición
se cumpla.

Correcto, es muy importante que tengas clara esta diferencia entre


ambas estructuras.

Solución

1. Incorrecto
2. Opción correcta

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 36/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

8.- Funciones integradas y de usuario.

Caso práctico
Noiba se ríe y dice que ella ese problema no le tenía,
pero que para ella fue complicado entender la
codificación con funciones. Según ella, quien impartía el
módulo intentaba por todos los medios hacerle
comprender que al enfrentarse a un problema era más
sencillo si lo dividía en tareas más sencillas que se
codificaban en funciones independientes, y luego hacía
una que resolviese el problema completo recurriendo a
las que ya tenía resueltas. Pero a ella le parecía más
rápido y simple hacerlo todo en un bloque.

Naroba también se ríe y cuenta que el problema de


Noiba era el uso del ámbito de las variables, ya que no Alain Bachellier (CC BY-NC-
SA)
entendía que la visibilidad de una variable pudiese
limitarse a un bloque de código.

Una función es un fragmento de código que realiza una tarea concreta. Como
resultado de su acción, es habitual que devuelva un valor, y sólo uno, o ninguno.
Ten en cuenta que un array se considera un único valor.

Además, a una función se le pueden proporcionar una serie de valores, que se


denominan parámetros, que necesita para llevar a cabo su tarea.

Para codificar una función debemos empezar usando la palabra reservada function, seguida
del nombre y de paréntesis entre los que se especifica la lista de parámetros. En el cuerpo
de la función, delimitado por las llaves, se incluyen las líneas de código y se escribe al final
del mismo la palabra return , que determina el valor que devuelve la función. Si se omite, la
función devuelve el valor NULL .

Para nombrar funciones se siguen las mismas reglas que para las variables y las
constantes.

function prueba($param_1, ···, $param_n){


echo "Aquí las líneas de código.\n"; //Esta función saca este mensaje.
$valor_devuelto = 0;
return $valor_devuelto; //Además devuelve el valor en $valor_devuelto.
}

mseery (CC BY-NC)

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 37/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

A la hora de llamar a una función debemos tener presente si


devuelve algún valor, cuál es el tipo de valor que devuelve.
Si no es una función construida por nosotros esta
información se encuentra en el prototipo.

Para llamar a una función que devuelve un valor utilizamos:


$a = mifuncion(); o mifuncion(); dependiendo de si
deseamos recoger el valor devuelto por ella en una variable
o no. Si no devuelve ningún valor usamos el segundo tipo de
llamada.

Dado que el nombre de una función es insensible al cambio de mayúsculas–minúsculas, se


recomienda invocarlas empleando su nombre, tal y como aparece en su prototipo.

Además de las definidas por el programador, PHP incorpora una colección de funciones
predefinidas que sirven para realizar diversas tareas. Para poder utilizarlas algunas de ellas
necesitan que se hayan incluido extensiones específicas, como es el caso de las funciones
para conectar y gestionar bases de datos MySQL, sino devolverá un error "Undefined
Function".

Por último, añadir que el ámbito de actuación de una función es global y es independiente
de donde haya sido definida. Se puede invocarla antes de donde ha sido declarada, es
decir, puedes llamar a la función al comienzo del fichero y haberla codificado al final del
mismo.

Para saber más


En el siguiente enlace podrás ampliar información sobre las funciones internas
de PHP.

Funciones internas de PHP

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 38/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

8.1.- Ámbito de las variables.


El ámbito de una variable es la zona de actuación para esa variable.

El ámbito de una variable dentro de un script cubre al propio fichero y a aquellos


que sean incorporados a él a través de las funciones internas include() o
require(). A este ámbito se le conoce como ámbito global.

Según su ámbito podemos clasificar a las variables del siguiente


modo:

Locales: son las que se crean por defecto. Cuando se definen


dentro de una función sólo son accesibles desde esa función
en la que están definidas.
Globales: se definen usando la palabra reservada global. De
este modo, la variable puede ser empleada desde cualquier
punto del código dentro del fichero en el que ha sido definida,
pero no puede ser empleada desde otros ficheros.
Estática: se definen utilizando la palabra reservada static. El
ámbito de este tipo de variables es la función en la que está
creada. En ese caso ¿las variables locales son estáticas? No, Enrique Dans (CC BY)
las locales pierden el valor cuando el control del programa sale
de la función mientras que las estáticas mantienen su valor aunque el control del flujo
de programa haya salido de la función.
Superglobal: son variables accesibles desde cualquier lugar, tanto del fichero en el
que ha sido creada como en otros ficheros del sitio web. Sólo hay una serie de
variables definidas de este modo, pero son de tipo array por lo que podemos dar a sus
elementos los valores de la variables superglobales que necesitemos. Más abajo
tienes un enlace al listado de variables superglobales de PHP.
Un ejemplo de uso sería, por ejemplo, añadir el código de usuario al array de variables
de sesión. Vamos a suponer que hemos recogido el código de usuario en una variable
llamada $usuario, que la almacenamos como variable de sesión, para registrar las
acciones que realice mientras visita nuestro sitio web, para lo que creamos la variable
$_SESSION['cusuario'] en el array de variables de sesión $_SESSION. La sentencia de
creación de la variable de sesión y asignación del valor sería:

$_SESSION['cusuario'] = $usuario;

Debes conocer
En los siguientes enlaces podrás ampliar información sobre el ámbito de las
variables.

Ejemplos sobre el uso de global, $GLOBALS y static

Variables superglobales del sistema


https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 39/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Autoevaluación
La diferencia entre una variable local y una estática es que la primera no
se resetea entre dos llamadas a la función en la que está definida, es
decir cuando la ejecución sale de la función el valor de la variable
permanece y puede recuperarse si se llama a la función otra vez.
Verdadero.
Falso.

Incorrecto. Son las variables estáticas las que mantienen su valor cuando
salen de la función en la que está definida y puede ser recuperado si el
flujo de ejecución regresa a esa función, y las locales las que se reinician
siempre que salen de la función en la que están definidas.

Correcto. Son las variables estáticas las que mantienen su valor cuando
salen de una función y puede ser recuperado si el flujo de ejecución
regresa a esa función, mientras que las locales se reinician.

Solución

1. Incorrecto
2. Opción correcta

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 40/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

8.2.- Paso de parámetros.

Anteriormente hemos comentado que podemos


proporcionar datos de entrada a las funciones pasándolos a
través de los parámetros de la función, aunque no hemos
explicado el modo de hacerlo.
Tomás Fernández Escudero. (Uso educativo no
La manera de proporcionarla es mediante una lista de comercial)

identificadores separada por comas. Podemos diferenciar


dos modos diferenciados de pasar parámetros a una función:

Por valor: es el método usado por defecto. Consiste en pasar el valor de la variable
para que la función trabaje con él, pero esta no puede modificar el valor de dicha
variable en memoria. ¿Y eso significa que al pasar una variable por valor a una
función la estamos convirtiendo en constante?
No, el parámetro puede cambiar de valor mientras se ejecuta la función, pero cuando
el control de la ejecución sale de esta, la variable vuelve a recuperar el valor que tenía
antes de entrar en la función.

El siguiente ejemplo muestra el modo de pasar a una función n parámetros por valor.

function mifun($par_1, $par_2, …, $par_n)

Por referencia: en este caso, en lugar de pasar el valor de la variable se envía la


dirección de memoria que ocupa la variable, por lo que este dato puede ser
modificado. Para pasar un argumento por referencia basta con anteponer el símbolo
ampersand (&) delante de la variable que se pasa por referencia en la lista de
parámetros. El siguiente ejemplo muestra el modo de pasar a una función n
parámetros por valor y p por referencia.

function mifun($parVal_1, $parVal_2, …, $parVal_n, &$parRef_1, &$parRef_2, …, &$parRe

Es posible asignar un valor predeterminado a una variable. De esta manera a la hora de


realizar la llamada a la función es posible no especificar un valor. Si se desea pasar un valor
a la función empleando ese parámetro, este último tiene preferencia sobre el valor
predeterminado.

Las variables a las que se asigna un valor por defecto se escriben en la lista de
parámetros a la derecha de las que no lo tienen. El siguiente ejemplo muestra el modo
de pasar a una función dos parámetros por valor, uno por referencia, y dos con un valor
definido por defecto:

function mifun($parVal_1, $parVal_2, &$parRef_1, $parDef_1="valor_1", $parDef_2="valor_2")

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 41/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Ejercicio resuelto
Crea una función a la que se le pase por valor una variable que sea el
porcentaje de ganancia de un bar por bebida, otra variable por referencia con
el precio base de esa bebida y una tercera que guarde una cadena de texto
que describa una bebida y tenga como valor predeterminado "café". La
función devolverá la frase: "El precio de la bebida: b, es de p euros.";
siendo b y p los valores contenidos respectivamente en las variables que
guardan el precio de una bebida y la descripción de una bebida. Tras llamar a
la función se sacarán los valores de las variables porcentaje y precio para
comprobar si se han alterado sus valores o no.

NOTA: El valor del porcentaje que paso a la función es un valor entero.

Para calcular un porcentaje:

porcentaje = porcentaje / 100


precio = (1 + porcentaje) * precio.

Mostrar retroalimentación

<?php
// Definimos la funcion:
function mibar($porcgano, &$precio, $bebida = "café") {
$porcgano = $porcgano/100;
$precio = (1 + $porcgano) * $precio;
return "El precio de la bebida: ".$bebida.", es de ".$precio.
}
// Llamamos a la función dando como valores de entrada 8 al porcentaj
$ganancia = 8;
$coste = 1.10;
mibar($ganancia, 1.10); //Llamada a la función, aquí se hace l
echo "Ganancia: ".$ganancia." Coste: ".$coste."\n"; // Orden de
/* Devuelve:
El precio de la bebida: café, es de 1.188 euros.
Ganancia: 8 Coste: 1.188 */
$ganancia = 8;
$coste = 1.50;
mibar(8, 1.50, "refresco");
echo "Ganancia: ".$ganancia." Coste: ".$coste."\n";
/* Devuelve:
El precio de la bebida: refresco, es de 1.62 euros.
Ganancia: 8 Coste: 1.62 */
?>

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 42/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Autoevaluación
Marcar las respuestas que no son ciertas. Al usar el símbolo & antes de
un parámetro en el paso de variables a una función es que no se está
pasando esa variable:

Por referencia.

Por valor.

Definiendo un valor por defecto.

Ese símbolo no se utiliza en el paso de parámetros a una función.

Mostrar retroalimentación

Solución

1. Incorrecto
2. Correcto
3. Correcto
4. Correcto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 43/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

9.- Gestión de errores.

Caso práctico
Vindio sonríe y confiesa que, cuando el comenzó a
programar, tampoco entendía el uso de funciones y
que intentaba minimizar la cantidad de parámetros
usando variables globales, lo que ponía muy
nervioso a su profesor.

Les pregunta por la gestión de errores, para


comprobar que saben utilizar las excepciones.

Naroba le contesta que más o menos se defiende,


aunque no entiende muy bien el uso de los bloques Alain Bachellier (CC BY-NC-SA)

try-catch.

Vindio les explica que son muy importantes ya que gracias a ellos se puede
conseguir que el programa no termine bruscamente por ciertos errores, como
por ejemplo que el usuario se equivoque al introducir los datos.

La gestión de errores, también llamada de excepciones,


es la manera que tenemos como programadores de evitar
una terminación anormal del script que se está ejecutando, y
darle una salida más controlada que una pantalla con el
mensaje de que algo no ha funcionado como debía.

Una manera rápida de terminar con la ejecución de un script


al no cumplirse una condición, es finalizar la ejecución del
mismo empleando las funciones exit() o die(), añadiendo
un mensaje para el usuario. Jumanji Solar (CC BY-NC-SA)

Por ejemplo, para finalizar un script por generarse un error al no poder conectar con la base
de datos haremos:

$conexion = mysqli_connect("localhost", "alumno", "") or die("No se pudo conectar con la base

En PHP una excepción puede ser lanzada, usando la palabra reservada throw, o capturada
mediante el uso de catch. La construcción try ··· catch permite la captura y tratamiento de
los errores. Cada bloque try debe tener al menos un bloque catch. La estructura de uso es:

if (Condicion del Error){ //Condición que detecta la excepción.


throw new Exception(); //Lanzamiento. Entre paréntesis puede ir un mensaje.
}
else {
https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 44/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.
sentencias_1; //Si se produce la excepción no se ejecutarán estas senten
}

Las líneas anteriores suelen estar dentro de una función.

try {
sentencias_2; //Se llama a la función que contiene las líneas anteriores.
}
catch (Exception e) {
sentencias que gestionan la excepción;
}

El funcionamiento es el siguiente: si se produce algún error en las sentencias del bloque try,
se lanza una excepción que será capturada, si corresponde el tipo, por el bloque catch;
ejecutándose entonces las sentencias para tratar el error producido.

Autoevaluación
Para que sea capturada una excepción es necesario que:
Sea lanzada para que pueda ser recogida.
Se haya definido la acción en el fichero php.ini.
La excepción sea del mismo tipo que la lanzada por throw.

Que se haya definido un mensaje para el usuario.

Incorrecta. Catch sólo recoge una excepción si es del tipo que espera.

No es correcta. El fichero php.ini no tiene ninguna relación con las


excepciones.

Correcta. Continúa trabajando así.

Incorrecta. La captura de una excepción no siempre implica un mensaje


para el usuario.

Solución

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 45/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 46/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

10.- Mecanismos de recogida de datos:


formularios.

Caso práctico
Jana dice que lo que no le costó nada fue comprender
el funcionamiento de los formularios para recoger datos
de una web.

Además, le parecía "mágico" el hecho de que el usuario


introdujese los datos en la ventana de un navegador y
que el programa pudiese capturarlos mediante PHP.

Ha conseguido entender que todo sucede porque ha


sido programado de ese modo, teniendo en cuenta las
diferentes opciones de ejecución y las posibles
intervenciones del usuario, que en ocasiones son casi
impredecibles, pero que el equipo de desarrollo debe Alain Bachellier (CC BY-NC-
contemplar. SA)

Los formularios permiten la comunicación con los visitantes de


nuestro sitio web. Con ellos podemos realizar encuestas,
cuestionarios y recoger todos aquellos datos que deseemos
almacenar.

El proceso es extremadamente sencillo, ya que PHP convierte


automáticamente en variables todos los campos que constan en el
formulario. Sólo es necesario especificar el atributo name, con el
valor correspondiente que queramos darle, en las etiquetas HTML
que estemos empleando: input, textarea, botón de radio, etc... El
nombre de la variable será el valor que hayamos asignado al
atributo name.
GRAPHIX CREW (CC BY-NC-ND)

Una parte importante de lo que hay que hacer es especificar los


siguientes atributos de la etiqueta form:

name: nombre que se asigna al formulario. Es opcional.


method: en él especificamos el método por el que vamos a enviar los datos. Hay dos
valores posibles: POST y GET. En base a este valor tomamos los valores enviados por el
formulario del array $_POST o del $_GET. Por seguridad se recomienda emplear POST en
vez de GET, ya que este último pasa los valores en la URL.
action: tipo de acción que realizará el formulario. Puede ser el nombre del fichero PHP
que procesará los datos recogidos. Si se deja en blanco o se consigna $PHP_SELF toma
el propio fichero donde está el formulario como fichero de recogida y procesamiento.
En el caso de que dejemos que la acción actúe sobre el propio fichero que contiene el
formulario, hay que gestionar el flujo de la página web para que la ejecución del
mismo sea correcta.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 47/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Ejercicio resuelto
Codifica dos ficheros: formulario.html y accion.php. El primero contendrá un
formulario que recoja el nombre y correo electrónico de un usuario y tendrá un
botón para enviar el formulario. El segundo recogerá esos datos y los
mostrará por pantalla.

Mostrar retroalimentación

Código del fichero: formulario.html

<html>
<head>
<title>Mi formulario</title>
</head>
<body>
<p>Informe ambos campos y pulse el botón para enviar el formulari
<form action="accion.php" method="post" name="formu">
Nombre: <input type="text" name="nombre" /><br />
Correo: <input type="text" name="correo" /><br />
<input type="submit" name="envia" value="¡Envíame!"/>
</form>
</body>
</html>

Código del fichero: accion.php

<html>
<head>
<title>Datos recogidos</title>
</head>
<body>
<p>Los datos recogidos por el formulario son:</p><br />
<?php
echo "Nombre:".$_POST['nombre']."<br />\n";
echo "Correo:".$_POST['correo']."<br />\n";
?>
</body>
</html>

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 48/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Autoevaluación
La importancia del atributo method es que:

Especifica el método por el que se envían los datos.


Determina de que forma se almacenan los datos.
Impide que los datos introducidos sean leídos.
Se puede no usar si ha sido definido en el fichero php.ini.

Correcta. Muy bien, has comprendido el concepto.

Incorrecta. Este atributo determina el método por el que se envían los


datos.

No es correcta. Method no tiene nada que ver con la lectura de los datos.

Incorrecto. Es un atributo del lenguaje, no necesita ser definido en el


fichero de configuración de PHP.

Solución

1. Opción correcta
2. Incorrecto
3. Incorrecto
4. Incorrecto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 49/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

10.1.- Autenticación de usuarios y control


de accesos.
Entre las utilidades que proporcionan los formularios en las
páginas web está el filtrar el acceso a la misma o a partes
de ella.

De este modo podemos controlar mediante un código de


usuario, o login, y su contraseña asociada la identidad de un
visitante registrado. Para proporcionar un mayor grado de
seguridad las contraseñas se almacenan encriptadas, y se
emplean etiquetas input de HTML de tipo password para
que no sea visible el dato tecleado. Al final de este apartado JT Curses (CC BY-SA)
te invito a que leas sobre las funciones que proporciona
PHP para encriptar contraseñas.

También es posible que en lugar de que tengamos que realizar nosotros el formulario
pidamos al navegador cliente que abra una ventana donde tenga que identificarse el
usuario. Para leer sobre este método visita el enlace al final del apartado.

Para poder contrastar la veracidad de la identidad de un usuario a través de su par: login-


contraseña, necesitamos disponer de un lugar donde poder contrastar esos datos. Lo más
habitual es utilizar una base de datos en donde estén almacenados esos valores. Cómo
utilizar bases de datos con PHP es un tema que trataremos en la próxima unidad.

Otro método para identificar a los usuarios es a través de servicios de autenticación como
kerberos o radius. Si te interesa profundizar sobre este aspecto, visita el enlace
correspondiente que encontrarás a pie de página.

A la hora de escribir un script siempre debemos tener en cuenta el uso que puede hacerse
del mismo, que puede ser muy distinto del que nosotros hayamos previsto inicialmente. Por
ello debemos controlar los datos de las variables que nos pasen los usuarios.

Para saber más


En los siguientes enlaces podrás ampliar información sobre autenticación y
control de acceso.

Ejemplo de autentificación de usuario

Funciones apropiadas para encriptar las contraseñas

Servicios de autenticación de usuarios con Radius y Kerberos V

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 50/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Autoevaluación
El par login-contraseña permite contrastar la identidad de un usuario si
se pueden contrastar dichos datos.

Falso.
Verdadero.

Incorrecto. Dicho par permite la comprobación de usuarios.

Correcto. Muy bien, continua por ese camino.

Solución

1. Incorrecto
2. Opción correcta

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 51/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

11.- Sesiones.

Caso práctico
Laro explica que es importante gestionar
adecuadamente los accesos a la aplicación y les
pregunta si han utilizado sesiones en alguna ocasión.

Naroba contesta que las han usado para gestionar


variables cuyo valor persiste en el lado del servidor
durante una secuencia de accesos de un cliente a un
servidor, permitiendo así tratar como un solo bloque
una secuencia de accesos de un cliente a un conjunto
de scripts de PHP.

Alain Bachellier (CC BY-NC-


SA)

Una sesión es información que se mantiene entre solicitudes


de página cuando alguien navega dentro de un sitio web.
Permiten guardar y pasar datos dentro de los distintos ficheros que
forman el sitio, con lo que podemos personalizar la web para cada
usuario. Además, este paso de datos de usuario se realiza de
forma segura para el usuario si se implementa junto con una
pasarela de seguridad con el protocolo SSL.

El soporte de sesiones está instalado por defecto en PHP.

La única constante predefinida con la que cuentan las sesiones es


el identificador de sesiones o SID. Para recuperar este valor se
emplea la función session_id(). Para conservar la sesión y sus Carolina L. Llano (CC BY)

variables es necesario propagar el SID de un fichero a otro del sitio


web.

Para crear otras variables de sesión y así poder pasarlas, se utiliza el array $_SESSION.

A la hora de querer destruir una variable de sesión en concreto, debemos especificar


claramente esa variable mediante: unset($_SESSION['variable_destruir']);. Si en lugar de
especificarla, lo hacemos de manera genérica con: unset($_SESSION);, lo que estamos
haciendo es destruir el array completo lo que imposibilitará seguir trabajando con sesiones.

Debes conocer

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 52/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

En los siguientes enlaces podrás ampliar información sobre cómo gestionar


las sesiones.

Ejemplos de como pasar el identificador de sesión

Funciones que se emplean para utilizar sesiones

◄ Título ►

FORMULARIOS Y
SESIONES

Lo que vamos a ver.

AlfBonillo (Dominio público)

Código fuente formulario


POST.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 53/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

AlfBonillo (Dominio público)

Descargar archivo de Ejemplo. formpost.html.zip (zip


- 0,70 KB) .

Código fuente fichero de


acción POST.

AlfBonillo (Dominio público)

Descargar archivo de Ejemplo. accpost.php.zip (zip -


0,75 KB) .

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 54/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

El resultado tras enviar el


formulario...!

AlfBonillo (Dominio público)

Código fuente formulario


GET.

AlfBonillo (Dominio público)

Descargar archivo de Ejemplo. formget.html.zip (zip -


0,68 KB) .

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 55/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Código fuente del fichero


de acción GET.

AlfBonillo (Dominio público)

Descargar archivo de Ejemplo. accget.php.zip (zip -


0,75 KB) .

Barra de direcciones del


Navegador.

AlfBonillo (Dominio público)

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 56/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Fin de la presentación.

AlfBonillo (Dominio público)

1 2 3 4 5 6 7 8 9

Autoevaluación
Las sesiones permiten:
Guardar datos sobre el visitante del sitio web.

Pasar datos entre los fichero del sitio web.

Implementar el protocolo SSL.

Configurar las opciones de PHP.

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 57/58
13/12/23, 9:00 IAW05.- Programación de documentos web utilizando lenguajes de script de servidor.

Mostrar retroalimentación

Solución

1. Correcto
2. Correcto
3. Incorrecto
4. Incorrecto

https://www.mecd.es/cidead/aulavirtual/pluginfile.php/394698/mod_resource/content/2/IAW05_v1/ArchivosUnidad/Moodle/IAW05_completa_of… 58/58

También podría gustarte