Está en la página 1de 67

Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Programación de documentos web


utilizando lenguajes de script de servidor.

1 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 Let Ideas Compete (CC BY-NC-ND)

en PHP, ya que los que forman parte del


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

2 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

multiplicar su potencialidad.

Materiales formativos de FP Online propiedad del Ministerio de


Educación y Formación Profesional.
Aviso Legal

3 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.
Nate Steiner (CC0)
Juan comienza por situar a todos en el tema,
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

4 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Lenguaje Sistema operativo Año de aparición

Ruby Multiplataforma 1995

ASP.Net Microsoft Windows 1998

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.

5 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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


webmove (CC BY)
guardarlos en el sistema de archivos en lugar de mostrarlos por
pantalla.

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

6 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Título

EMBEBER CÓDIGO PHP


CON HTML

Requisitos previos.

AlfBonillo (Dominio público)

¿Cómo incluir código PHP


en una página HTML?

7 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

AlfBonillo (Dominio público

Archivo informe.php

AlfBonillo (Dominio público)

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


0,33 KB) .

8 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Ver informe.php

AlfBonillo (Dominio público)

Ejemplo 1. Código Fuente.

AlfBonillo (Dominio público)

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

9 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

0,83 KB) .

Ejemplo 1. Ejecución.

AlfBonillo (Dominio público)

Ejemplo 2. Código Fuente.

10 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

AlfBonillo (Dominio público)

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


0,89 KB) .

Ejemplo 2. Ejecución.

AlfBonillo (Dominio público)

11 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Ejemplo 3. Código Fuente.

AlfBonillo (Dominio público)

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


0,93 KB) .

Ejemplo 3. Ejecución.

12 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

AlfBonillo. (Dominio público)

Comparación Ejemplo 2 y
Ejemplo 3.

AlfBonillo. (Dominio público)

Fin.

13 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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

14 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

1. Incorrecto
2. Opción correcta

15 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 Alain Bachellier (CC BY-NC-SA)

los estudios si que saben configurar el intérprete para


poder trabajar con ese lenguaje.

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.
CG Dibujo (CC BY-NC-ND)

El fichero de configuración consiste en una serie de


directivas y los valores que se les asigna, y que 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.

16 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.

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

17 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 Alain Bachellier (CC BY-NC-SA)
por lo que usaba HTML-Kit, mientras que Noiba usaba
el editor Notepad++ para Windows.

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.
Jesús Serrano (CC BY)
Por otro lado, también podemos utilizar un IDE, que es un
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
Dreamweaver.

18 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Para saber más


Este es un enlace a una web donde aparece un listado de diversos editores
web gratuitos:

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

19 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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

20 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 Alain Bachellier (CC BY-NC-SA)

comprensión del código, ella no acababa de 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, se 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 cómo incluir código de PHP


dentro de HTML, pero nos falta conocer otras
características propias del lenguaje; como, por ejemplo, que
Manuel Gonzalez Noriega (CC BY)
siempre debemos incluir el punto y coma para finalizar
una sentencia, por lo que a dicho carácter se le conoce

21 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.
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

22 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

2. Correcto
3. Incorrecto
4. Correcto

23 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

5.1.- Comentarios.
Los 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
Junior Silva (CC BY-SA)
pasos complejos o delimitar determinadas áreas dentro del
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?
//

24 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

%>

/*

Mostrar retroalimentación

Solución

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

25 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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);
christine kaelin (CC BY-NC-ND)

Una vez que se define una constante no se puede cambiar el valor que se le ha asociado y
puede referenciarse desde 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

26 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.
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

27 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 ken yee (CC BY-NC-ND)

queda determinado por el tipo del dato que se 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

28 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Autoevaluación
¿Cuáles de los siguientes tipos de datos son válidos en PHP?

char.

integer.

float.

array.

Mostrar retroalimentación

Solución

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

29 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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

Blog-ADM-Anhanguera (CC BY-NC)


Un operador es un elemento, palabra o símbolo, que al
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

30 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.

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

31 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 Alain Bachellier (CC BY-NC-SA)
aprender a poner la condición adecuada para terminar
la ejecución de los bucles y casi siempre le fallaban 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 la Prensa Monterrey (CC BY-NC-SA)
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.

32 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

FOREACH.
WHILE.
DO - WHILE.

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

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

33 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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


case.
IFpermite 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

34 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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
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

35 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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

36 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

arrays. La construcción de esta instrucción es:

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 y3

foreach( $v as $valor ) { // Recorremos cada uno de los elementos del a


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

37 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Erróneo.

Mostrar retroalimentación

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

38 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.
Broken Windshield. (CC BY-SA)

Admiten un número como argumento, que indica el número


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

39 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.
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

40 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 Alain Bachellier (CC BY-NC-SA)

Noiba era el uso del ámbito de las variables, ya que no


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.

41 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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. mseery (CC BY-NC)

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

42 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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á Enrique Dans (CC BY)

creada. En ese caso ¿las variables locales son estáticas? No,


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;

43 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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

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.

44 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Solución

1. Incorrecto
2. Opción correcta

45 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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
comercial)
La manera de proporcionarla es mediante una lista de
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, …, &$parRef_p

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:

46 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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

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 porcentaje y 1.10 al
$ganancia = 8;
$coste = 1.10;
mibar($ganancia, 1.10); //Llamada a la función, aquí se hace la asignación
echo "Ganancia: ".$ganancia." Coste: ".$coste."\n"; // Orden de visualizació
/* Devuelve:
El precio de la bebida: café, es de 1.188 euros.
Ganancia: 8 Coste: 1.188 */
$ganancia = 8;
$coste = 1.50;

47 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 */
?>

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

48 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

2. Correcto
3. Correcto
4. Correcto

49 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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, Alain Bachellier (CC BY-NC-SA)

aunque no entiende muy bien el uso de los bloques


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 Jumanji Solar (CC BY-NC-SA)
mensaje para el usuario.

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 de dat

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:

50 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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


throw new Exception(); //Lanzamiento. Entre paréntesis puede ir un mensaje.
}
else {
sentencias_1; //Si se produce la excepción no se ejecutarán estas sentencias.
}

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

51 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

para el usuario.

Solución

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

52 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 Alain Bachellier (CC BY-NC-SA)
impredecibles, pero que el equipo de desarrollo debe
contemplar.

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.

53 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.

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 formulario.
<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 />

54 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

<?php
echo "Nombre:".$_POST['nombre']."<br />\n";
echo "Correo:".$_POST['correo']."<br />\n";
?>
</body>
</html>

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

55 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

3. Incorrecto
4. Incorrecto

56 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 JT Curses (CC BY-SA)
no sea visible el dato tecleado. Al final de este apartado 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

57 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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

58 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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 Carolina L. Llano (CC BY)

emplea la función session_id(). Para conservar la sesión y sus 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.

59 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Debes conocer
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

60 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

Lo que vamos a ver.

AlfBonillo (Dominio público)

Código fuente formulario


POST.

AlfBonillo (Dominio público)

61 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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) .

El resultado tras enviar el


formulario...!

62 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

AlfBonillo (Dominio público)

Código fuente formulario


GET.

AlfBonillo (Dominio público)

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


0,68 KB) .

63 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.

64 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

AlfBonillo (Dominio público)

Fin de la presentación.

AlfBonillo (Dominio público)

1 2 3 4 5 6 7 8 9

65 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

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.

Mostrar retroalimentación

Solución

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

66 de 67 26/7/22, 13:55
Programación de documentos web utilizando lenguajes de script de servidor. http://localhost:51236/temp_print_dirs/eXeTempPrintDir_QJcIfd/IAW...

67 de 67 26/7/22, 13:55

También podría gustarte