0% encontró este documento útil (0 votos)
32 vistas25 páginas

Capítulo 3, Introduccion A PHP

Cargado por

hiddannara
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas25 páginas

Capítulo 3, Introduccion A PHP

Cargado por

hiddannara
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 25

Capítulo 3

Introducción a PHP
En el capítulo 1, expliqué que PHP es el lenguaje que se utiliza para hacer que el servidor genere
una salida dinámica que es potencialmente diferente cada vez que un navegador solicita una página.
En este capítulo, comenzará a aprender este lenguaje sencillo pero potente, este será el tema de los
capítulos siguientes hasta el Capítulo 6.

Yo animo a desarrollar el código PHP en una de las IDEs que figuran en el capítulo 2. Esto le
ayudará a coger errores y acelerar el aprendizaje enormemente en comparación con los editores
menos funcionales.

Muchos de estos entornos de desarrollo permiten ejecutar el código PHP y ver la salida discutida en
este capítulo. También voy a mostrar cómo incrustar el PHP en un archivo HTML para que pueda
ver como luce en una página web (la forma en que los usuarios acabarán viéndola). Pero ese paso,
tan emocionante como puede ser en un primer momento, no es realmente importante en esta etapa.

En la producción, sus páginas web serán una combinación de PHP, HTML y JavaScript, y algunas
declaraciones de MySQL. Además, cada página puede llevar a otras páginas para proporcionar a los
usuarios maneras de hacer clic a través de enlaces y rellenar formularios. Podemos evitar toda esa
complejidad mientras se aprende cada idioma, sin embargo. El enfoque de ahora en adelante es sólo
escribir código PHP y asegurarse de que obtenga el resultado esperado, o al menos que usted
entienda la salida que está consiguiendo!

La incorporación de PHP Dentro HTML


Por defecto, los documentos PHP terminan con la extensión. PHP. Cuando un servidor web se
encuentra con esta extensión en un archivo solicitado, éste pasa automáticamente al procesador de
PHP. Por supuesto, los servidores web son altamente configurables, y algunos desarrolladores web
optan por forzar archivos que terminan en htm o html que también consiguen analizados por el
procesador de PHP, por lo general porque los desarrolladores quieren ocultar el hecho de que están
utilizando PHP.

El programa PHP es responsable de pasar de un archivo limpio adecuado para la visualización en un


navegador web. En su más simple, un documento PHP emitirá sólo HTML. Para probar esto, usted
puede tomar cualquier documento HTML normal, como un archivo index.html, guárdelo como
index.php, y se mostrará de forma idéntica a la original.

Llamando al analizador PHP


Para activar los comandos de PHP, usted necesita aprender una nueva etiqueta. La primera parte es:
<?php

La primera cosa que usted puede notar es que la etiqueta no se ha cerrado. Esto se debe a sectores
enteros de PHP se pueden colocar dentro de esta etiqueta y terminan sólo cuando se encuentra la
pieza de cierre, que se ve así:
?>

Una pequeña "Hola Mundo" PHP puede ser como el Ejemplo 3-1.
Ejemplo 3-1. La invocación de PHP

<?php
echo "Hello world";
?>

La forma de usar esta etiqueta es bastante flexible. Algunos programadores abren la etiqueta al
principio de un documento y cerrar bien al final, la salida de todo el código HTML directamente de
comandos PHP.

Otros, sin embargo, optan por insertar sólo los más pequeños posibles fragmentos de PHP dentro de
estas etiquetas donde se requiere scripting dinámico, dejando el resto del documento en el estándar
HTML.

Este último tipo de programador sostiene generalmente que su estilo de codificación de los
resultados de código más rápido, mientras que el primero dice que el aumento de velocidad es tan
mínimo que no justifica la complejidad adicional de abandonar y salir de PHP muchas veces en un
solo documento.

A medida que aprenda más, seguramente descubrir tu estilo preferido de desarrollo de PHP, pero en
aras de hacer que los ejemplos de este libro más fácil de seguir, me ha adoptado el enfoque de
mantener el número de transferencias entre PHP y HTML al mínimo-generalmente sólo una o dos
veces en un documento.

Por cierto, existe una ligera variación de la sintaxis de PHP. Si usted navega por Internet para ver
ejemplos de PHP, también se puede encontrar código en la sintaxis de apertura y de cierre utilizado
es el siguiente:
<?
echo "Hello world";
?>

Aunque no es tan obvio que el intérprete PHP está siendo llamado, esto es una sintaxis alternativa
válida que también suele funcionar (aunque no con el paquete WAMP EasyPHP), pero debe ser
desalentada, ya que es incompatible con XML y su uso está obsoleto (lo que significa que ya no se
recomienda y podría ser eliminado en futuras versiones).

NOTA: Si sólo tiene código PHP en un archivo, puede omitir el cierre >. Esto es realmente una
buena práctica, ya que se asegurará de que no tienes exceso de espacio en blanco goteando de tus
archivos PHP (especialmente importante a la hora de escribir código orientado a objetos).
Figura 3-1. Visualización de ejemplos de este libro en http://lpmj.net

Ejemplos de este libro


Para ahorrar el tiempo que se necesitaría para escribir en ellos, todos los ejemplos de este libro han
sido archivados en un sitio web complementario especialmente creado en http://lpmj.net, donde se
puede ver cada uno de ellos individualmente, con color de resaltado de sintaxis y descargarlos en el
ordenador (consulte la Figura 3-1).

Además de tener todos los ejemplos guardados por capítulo y el numero ejemplo (por ejemplo
example3-1.php), el archivo EXAMPLES.ZIP proporcionado también contiene una carpeta
adicional denominada named_examples, en la que encontrará todos los ejemplos, que te sugiero
guardar utilizando un nombre de archivo específico, como Ejemplo 3-4 (se verá más adelante, este
archivo se debe guardar como test1.php).

Si usted lee este libro en frente de una computadora (y esperamos que pueda, de modo que usted
puede probar lo que se aprende), al utilizar el sitio también será capaz de ver algunos ejemplos que
aparecen en pantalla, con un máximo de dos clicks, lo que facilitara su referencia a medida que lee.

La estructura de PHP
Vamos a cubrir mucho terreno en este apartado. No es demasiado difícil, pero yo recomiendo que
usted trabaje su manera a través de él con cuidado, ya que establece las bases para todo lo demás en
este libro. Como siempre, hay algunas preguntas útiles al final del capítulo que se puede utilizar
para probar cuánto ha aprendido.

Usar Comentarios
Hay dos maneras en que usted puede agregar comentarios a su código PHP. El primero resulta de
una sola línea en un comentario precediéndolo con un par de barras diagonales, así:
/ / Esto es un comentario
Esta versión de la característica de comentarios es una buena manera de eliminar temporalmente
una línea de código de un programa que te da errores. Por ejemplo, podría usar un comentario como
para ocultar una línea de depuración de código hasta que lo necesite, así:
// echo "X equals $x";

También puede utilizar este tipo de comentario directamente después de una línea de código para
describir su acción, así:
$ x + = 10 // Incremento de $ x por 10

Cuando necesite los comentarios de varias líneas, hay un segundo tipo de comentario, que parece el
Ejemplo 3-2.

Ejemplo 3-2. Un comentario de varias líneas

<?php
/* This is a section
of multiline comments
which will not be
interpreted */
?>

Puede utilizar el / * y * / pares de caracteres para abrir y cerrar los comentarios de casi cualquier
lugar que desee dentro de su código. La mayoría, si no todos, los programadores utilizan esta
construcción para comentar temporalmente fuera secciones enteras de código que no funcionan o
que, por una u otra razón, no quiere ser interpretado.

NOTA: Un error común es usar / * y * / al comentar una gran sección de código que ya contiene
una sección de comentarios de espera que utiliza esos caracteres. No se puede anidar
comentarios de esta manera, el intérprete de PHP no sabrá dónde termina un comentario y
mostrará un mensaje de error. Sin embargo, si utiliza un editor de programas o IDE con
resaltado de sintaxis, este tipo de error es más fácil de detectar.

Sintaxis básica
PHP es un lenguaje muy sencillo, con raíces en C y Perl, pero se parece más a Java. También es
muy flexible, pero hay algunas reglas que usted necesita aprender acerca de su sintaxis y estructura.

Punto y coma
Usted puede haber notado en los ejemplos anteriores que los comandos PHP culminaron con un
punto y coma, por ejemplo:

$x += 10;

Probablemente la causa más común de los errores que se encontrará con PHP es olvidar este punto
y coma, lo que causa que PHP trate múltiples declaraciones como una afirmación, encontrándose en
la imposibilidad de entender y produciendo un mensaje de "Error de análisis".

El símbolo $
El símbolo $ ha llegado a ser utilizado de muchas maneras diferentes por los distintos lenguajes de
programación. Por ejemplo, si usted ha escrito en el lenguaje BASIC, usted ha utilizado el $ para
terminar nombres de las variables para denotar como cadenas.
En PHP, sin embargo, se debe colocar un $ en frente de todas las variables. Esto es necesario para
hacer que PHP analice más rápido, ya que sabe al instante cada vez que se encuentra con alguna
variable. Si las variables son números, cadenas o matrices, están deberán parecerse a las del ejemplo
3-3.

Ejemplo 3-3. Tres tipos diferentes de asignación de variables

<?php
$mycounter = 1;
$mystring = "Hello";
$myarray = array("One", "Two", "Three");
?>

Y en realidad eso es prácticamente toda la sintaxis que tienes que recordar. A diferencia de
lenguajes como Python, que son muy estrictos acerca de cómo aplica sangría y código de diseño,
PHP te deja completamente libre para usar (o no usar) toda la sangría y el espaciado que desee. De
hecho, por lo general se recomienda el uso racional de lo que se llama un espacio en blanco (junto
con un comentario de comprensión) para ayudarle a entender el código cuando vuelvas a esa parte.
También ayuda a otros programadores que tienen que entender su código.

Figura 3-2. Usted puede pensar en las variables como cajas de fósforos que contienen artículos

Descripción de las Variables


Hay una metáfora simple que le ayudará a entender lo que las variables de PHP. Basta con pensar
en ellas como pequeñas (o grandes) cajas de cerillas! Así es, cajas de cerillas que he pintado en
blanco y con un nombre escrito encima.

Las Variables de Cadena


Imagina que tienes una caja de cerillas en la que se ha escrito la palabra username. A continuación,
escriba Fred Smith en un pedazo de papel y lo coloca en la caja (véase la Figura 3-2). Bueno, es el
mismo proceso que asigna un valor de cadena a una variable, como este:
$username = "Fred Smith";

Las comillas indican que "Fred Smith" es una cadena de caracteres. Usted debe encerrar cada
cadena, ya sea entre comillas o apóstrofes (comillas simples), aunque hay una sutil diferencia entre
los dos tipos de cita, que se explica más adelante. Si quieres ver lo que hay en la caja, la abres,
tomas el pedazo de papel, y lo lees. En PHP, hacerlo se parece a esto:

echo $username;

O puedes asignarlo a otra variable (fotocopia del papel y ubicar la copia en otra caja de cerillas),
así:

$current_user = $username;

Si usted está interesado en comenzar a probar PHP por sí mismo, usted podría intentar entrar en los
ejemplos de este capítulo en un IDE (como se recomienda en el final del capítulo 2), para ver
resultados inmediatos, o se puede introducir el código del Ejemplo 3 - 4 en un editor de programa y
guárdelo en el directorio de desarrollo web (también discutido en el capítulo 2) como test1.php.

Ejemplo 3-4. Su primer programa PHP

<?php // test1.php
$username = "Fred Smith";
echo $username;
echo "<br />";
$current_user = $username;
echo $current_user;
?>

Ahora puedes llamarlo introduciendo la URL de su directorio de desarrollo web y el nombre del
archivo test1.php en la barra de direcciones de su navegador. Por ejemplo, si está utilizando un PC y
el alias del directorio de desarrollo se llama Web, introduzca lo siguiente en su navegador:

http://localhost/web/test1.php

El resultado de ejecutar este código deben ser dos apariciones del nombre “Fred Smith”, el primero
de ellos es el resultado del comando echo $username y el segundo es del comando echo
$current_user.

Las Variables Numéricas


Las variables no solo contienen cadenas-estas pueden contener también números. Usando la
analogía de la caja de cerrillas, para almacenar el número 17 en la variable $count, el equivalente
seria la colocación de, digamos, 17 bolas en una caja de cerillas en el que se a escrito la palabra
count:
$count = 17;

También puede utilizar un numero de punto flotante (que contiene un punto decimal), la sintaxis es
la misma:
$count = 17.5;
Para leer el contenido de la caja de cerillas, solo tendrá que abrirla y contar los granos. En PHP,
asigne el valor de $count a otra variable o tal vez solo echo al navegador web.

Matrices
¿Que son las matrices? Bueno, puede pensar en ellos como varias cajas de cerillas pegadas juntas.
Por ejemplo, digamos que queremos almacenar los nombres de cinco jugadores de un equipo de
futbol en una matriz llamada $team. Para ello, pondríamos pegar las cinco cajas de cerillas lado a
lado y anotar los nombres de los jugadores en hojas separadas, colocando una en cada caja de
cerillas.

A través de toda la parte superior del conjunto de cajas de cerillas deberemos escribir la palabra
team (ver Figura 3-3). El equivalente de esto en PHP seria:

$team = array('Bill', 'Joe', 'Mike', 'Chris', 'Jim');

Esta sintaxis es más complicada que las que he explicado hasta ahora. El código de construcción de
la matriz consiste en el siguente método:
array();

con cinco cadenas en su interior. Cada cadena está encerrada entre apóstrofes.

Si entonces quisiéramos saber quien es el jugador 4, podríamos utilizar este comando:


echo $team[3]; // Muestra el nombre de Chris

Figura 3-3. Una matriz es como varias cajas de cerillas pegadas

La razón por la afirmación anterior tiene el número 3 y no un 4 es porque el primer elemento de una
matriz PHP es en realidad el elemento cero, por lo tanto, los números de los jugadores serán del 0 a
4.
Matrices bidimensionales
Hay mucho más que puedes hacer con matrices. Por ejemplo, en lugar de ser líneas
unidimensionales de cajas de cerillas, etas pueden ser matrices bidimensionales o incluso pueden
tener tres o más dimensiones.

Como un ejemplo de una matriz de dos dimensiones, digamos que queremos hacer un seguimiento
de un juego de tic-tac-toe, lo que requiere una estructura de datos de nueve celdas dispuestas en un
cuadrado de 3 × 3. Para representar esto con cajas de cerillas, imagina nueve de ellas pegadas una a
la otra en una matriz de tres filas por tres columnas (véase la figura 3-4).

Ahora puede colocar un trozo de papel, ya sea con una "x" o una "o" en la caja de cerillas correcta
para cada jugada realizada. Para hacer esto en código PHP, tendrá que crear una matriz que contiene
tres matrices más, como en el ejemplo 3-5, en el que la matriz está configurada con un juego en
progreso.

Figura 3-4. Una matriz multidimensional simulada con cajas de cerillas

Ejemplo 3-5. Definición de una matriz bidimensional

<?php
$oxo = array(array('x', '', 'o'),
array('o', 'o', 'x'),
array('x', 'o', '' ));
?>

Una vez más, nos hemos movido un paso en complejidad, pero es fácil de entender si se comprende
la sintaxis básica de una matriz. Hay tres constructores de matrices () anidados dentro del
constructor de la matriz () externa.
Para obtener el tercer elemento de la segunda fila de esta matriz, se utiliza el comando PHP
siguiente, que mostrará una "x":

echo $oxo[1][2];

NOTA: Recuerde que los índices de matriz (punteros a elementos dentro de una matriz) empiezan
desde cero, no uno, por lo que el [1] en el comando anterior se refiere a la segunda de las tres
matrices, y el [2] hace referencia a la tercera posición dentro de esa matriz. Se devolverá el
contenido de la caja de cerillas tres a lo largo y dos abajo.

Como se ha mencionado, las matrices con aun más dimensiones son apoyadas por la simple
creación de más matrices en matrices. Sin embargo, no vamos a estar cubriendo las matrices de más
de dos dimensiones en este libro.

Y no se preocupe si todavía está teniendo dificultades para llegar a enfrentarse con el uso de
matrices, ya que el tema se explica en detalle en el capítulo 6.

Normas de Denominación de Variables


Cuando se crean las variables PHP, debe seguir estas cuatro reglas:

-Los nombres de variables deben comenzar con una letra del alfabeto o el _ (guión bajo).

-Los nombres de variables pueden contener sólo los caracteres: a-z, A-Z, 0-9 y _ (guión bajo).

-Los nombres de variables no pueden contener espacios. Si una variable debe incluir más de una
palabra debe estar separado con el _ (guión bajo). (por ejemplo, $ nombre_usuario).

-Los nombres de variables distinguen entre mayúsculas y minúsculas. La variable $ High_Score no


es la misma que la variable $ high_score.

Operadores
Los operadores son la matemática, cadena, la comparación y comandos lógicos como más, menos,
los tiempos y dividir. PHP se parece mucho a la aritmética simple, por ejemplo, la siguiente
declaración manda un 8:

echo 6 + 2;

Antes de pasar a aprender lo que PHP puede hacer por usted, tome un momento para aprender
acerca de los diferentes operadores que proporciona.

Los operadores aritméticos


Los operadores aritméticos hacen lo que se puede esperar. Ellos se utilizan para realizar las
matemáticas. Usted las puede utilizar para los cuatro principales operaciones (más, menos, los
tiempos, y dividir), así como de encontrar un módulo (el resto después de la división) y para
aumentar o disminuir el valor (véase la Tabla 3-1).
Tabla 3-1. Los operadores aritméticos

Los operadores de asignación


Estos operadores se utilizan para asignar valores a variables. Estos comienzan con u simple = y
pasan a +=, -=, y así sucesivamente (ver Tabla 3-2). En el operador += se suma el valor del lado
derecho de la variable a la izquierda, en lugar de sustituir totalmente el valor de la izquierda. Por lo
tanto, si $count comienza con el valor 5, la declaración:

$count += 1;

Establece a $count a 6, al igual que la instrucción de asignación más familiar:

$count = $count + 1;

Las cadenas tienen su propio operador, el punto (.), detallado en la sección “La concatenación de
cadenas” en la página 46.

Tabla 3-2. Los operadores de asignación


Los operadores de comparación
Los operadores de comparación se utilizan generalmente en el interior de una construcción como
una sentencia if en la que usted necesita comparar dos elementos. Por ejemplo, es posible que desee
saber si una variable que ha estado incrementando ha llegado a un valor específico, o si otra
variable es inferior a un valor fijado, y así sucesivamente (ver Tabla 3-3).

Observe la diferencia entre = y ==. El primero es un operador de asignación, y el segundo es un


operador de comparación. Incluso los programadores más avanzados a veces pueden transponer las
dos al codificar rápidamente, así que ten cuidado.

Tabla 3-3. Los operadores de comparación

Los operadores lógicos


Si no los ha usado antes, los operadores lógicos pueden parecer a primera vista como algo un poco
desalentador. Pero solo pensar en ellos de manera que pueda usar la lógica en Ingles. Por ejemplo,
usted podría decirse a sí mismo “Si la hora pasa de las 12pm y no pasa de las 2pm, entonces tome el
almuerzo”. En PHP, el código para esto podría ser algo como lo siguiente (utilizando el tiempo
militar):

if ($hour > 12 && $hour < 14) dolunch();

Aquí hemos movido el conjunto de instrucciones para tener que ir a almorzar a una función que
vamos a tener que crear más adelante llamada dolunch. La continuación de la declaración se deja
fuera, porque se da a entender y por lo tanto es innecesario.

Como muestra el ejemplo anterior, se debe utilizar un operador lógico para combinar los resultados
de dos de los operadores de comparación mostrados en la sección anterior. Un operador lógico
también puede ser la entrada de otro operador lógico (“Si la hora pasa de las 12pm y no pasa de las
2pm, entonces tome el almuerzo, o si el olor del asado está penetrando el pasillo y hay platos en la
mesa”). Como regla general, si algo tiene un valor verdadero o falso, puede ser la entrada de un
operador lógico. Un operador lógico toma dos entradas verdaderas o falsas y produce un resultado
verdadero o falso.

La Tabla 3-4 muestra los operadores lógicos.


Tabla 3-4. Los operadores lógicos

Tenga en cuenta que ‘&&’ pueden ser intercambiables con ‘and’ y lo mismo es cierto para ‘||’ y
‘or’. Pero ‘and’ y ‘or’ tienen una prioridad más baja, por lo que en algunos casos, puede ser
necesarios paréntesis adicionales para forzar la procedencia deseada. Por otro lado, hay veces en
que solamente ‘and’ o ‘or’ son aceptables, como en la siguiente declaración, que utiliza un operador
(que se explica en el Capítulo 10):

mysql_select_db($database) or die("Unable to select database");

El más inusual de estos operadores es xor, que significa exclusiva o y devuelve un verdadero si
alguno de los valores es cierto, pero un valor falso si ambas entradas son verdaderas o ambas
entradas son falsas. Para entender esto, imagine que usted quiere inventar su propio limpiador de
artículos para el hogar. El amoníaco es un buen limpiador, y lo mismo ocurre con blanqueador, por
lo que usted quiere que su limpiador tenga uno de estos. Pero la limpieza no debe tener ambos, ya
que la combinación es peligrosa. En PHP, puede representar esto como:

$ingrediente = $amoniaco xor $blanqueador;

En el ejemplo de código, si bien elija $amoniaco o $blanqueador como verdadero, $ingrediente


también se establecería como verdadero. Pero si ambas son verdaderas o ambas son falsas, se
ajustara $ingrediente en falso.

Asignación de variables
La sintaxis para asignar un valor a una variable es siempre variable = valor. O, para reasignar el
valor de otra variable, es otra variable = variable.

También hay un par de otros operadores de asignación que le serán útiles. Por ejemplo, ya hemos
visto:

$x += 10;

que le dice al intérprete PHP añadir el valor a la derecha (en este ejemplo, el valor 10) a la variable
$x. Del mismo modo, podríamos restar de la siguiente manera:

$y -= 10;
Variable incremento y decremento
Al añadir o restar 1 es una operación tan común que PHP proporciona operadores especiales para
ello. Puede utilizar uno de los siguientes operadores en el lugar de los + = y - =:

++$x;
--$y;

En conjunción con una prueba (una sentencia if), puede utilizar el siguiente código:

if (++$x == 10) echo $x;

Esto le indica a PHP que primero incremente el valor de $x y luego compruebe si tiene el valor de
10, y si lo tiene, que muestre el valor. Pero también se puede requerir PHP para incrementar (o, en
el siguiente ejemplo, el decremento) una variable después de que ha puesto a prueba el valor, así:

if ($y-- == 0) echo $y;

lo que da un resultado ligeramente diferente. Supongamos que $y empieza como 0 antes de que se
ejecute la sentencia. La comparación devuelve un resultado verdadero, pero $y se establece en -1
después de que se hizo la comparación. Entonces, ¿cuál será la sentencia echo mostrada: 0 o -1?
Trata de adivinar y, a continuación, probar la afirmación en un procesador de PHP para confirmar.
Debido a esta combinación de estados es confuso, que debe ser tomado como sólo un ejemplo
educativo y no como una guía para un buen estilo de programación.

En resumen, si una variable se incrementa o decrementa antes o después de la prueba depende de si


el incremento o decremento del operador se coloca antes o después de la variable.

Por cierto, la respuesta correcta a la pregunta anterior es que la sentencia echo mostrará el resultado
de -1, ya que $y se disminuye justo después de que se ha accedido en la sentencia if, y antes de la
declaración de echo.

La concatenación de cadenas
La concatenación de cadenas utiliza el punto (.) Para añadir una cadena de caracteres a otra. La
forma más sencilla de hacerlo es la siguiente:

echo "Usted tiene " . $msgs . " mensajes.";

Si se asume que la variable $msgs se establece en el valor 5, la salida de esta línea de código será:

Usted tiene 5 mensajes.

Así como puede agregar un valor a una variable numérica con el operador + =, puede añadir una
cadena a otra usando .= como esto:

$bulletin .= $newsflash;

En este caso, si $boletín contiene un boletín de noticias y $newsflash tiene una noticia de última
hora, el comando añadirá la noticia de última hora para el boletín de noticias de manera que
$boletín comprende ahora dos cadenas de texto.
Tipos de Cadena
PHP soporta dos tipos de cadenas que se denotan por el tipo de comillas que se utiliza. Si desea
asignar una cadena literal, preservando el contenido exacto, se debe utilizar la comilla simple
(apóstrofe) de esta manera:

$info = 'Preface variables with a $ like this: $variable';

En este caso, cada carácter dentro de la cadena de un solo citado se asigna a $info. Si se hubiera
usado comillas dobles, PHP habría intentado evaluar $variable como una variable.

Por otro lado, cuando se desea incluir el valor de una variable dentro de una cadena, lo hace
mediante el uso de cadenas entre comillas dobles:

echo "There have been $count presidents of the US";

Como te darás cuenta, esta sintaxis también ofrece una forma más simple de concatenación en la
que no es necesario utilizar un período, o cerrar y volver a abrir comillas, para añadir una cadena a
otra. Esto se conoce como la sustitución de variables y te darás cuenta de algunas aplicaciones lo
utilizan extensivamente y otras no lo usan en absoluto.

Caracteres de Escape
A veces una cadena debe contener caracteres con significados especiales que podrían ser
interpretados incorrectamente. Por ejemplo, la siguiente línea de código no funcionará, ya que la
segunda comilla encontrada en la palabra sister's le dirá al interprete PHP que el extremo de la
cadena ha sido alcanzado. En consecuencia, el resto de la línea será rechazada como un error:

$text = 'My sister's car is a Ford'; // Sintaxis errónea

Para corregir esto, se puede agregar una barra diagonal inversa inmediatamente antes las comillas
diciéndole a PHP que trate el carácter literalmente y no interpretarlo:

$text = 'My sister\'s car is a Ford';

Y puedes realizar este truco en casi todas las situaciones en las que, de otro modo PHP devolverá un
error al tratar de interpretar un carácter. Por ejemplo, la siguiente cadena entre comillas dobles será
configurada correctamente:

$text = "My Mother always said \"Eat your greens\".";

Adicionalmente puede utilizar caracteres de escape para insertar varios caracteres especiales en
cadenas como tabulaciones, nuevas líneas y retornos de carro. Estos están representados, como
puede imaginar, por \ t, \ n, \ r. Aquí hay un ejemplo usando pestañas para trazar un rumbo; se
incluye aquí únicamente para ilustrar escapes, porque en las páginas web siempre hay mejores
formas de hacer diseño:

$heading = "Date\tName\tPayment";

Estos caracteres de barra inversa-precedida especiales sólo funcionan en cadenas entre comillas
dobles. En cadenas entre comillas simples, la cadena anterior se muestra con las secuencias feas \t
en lugar de tabuladores. Dentro de las cadenas con comillas simples, sólo la diagonal inversa con
apóstrofe (\ ') y la doble diagonal inversa (\ \) se reconocen como caracteres de escape.

Comandos de múltiples líneas


Hay momentos en el que se necesitara dar salida a un montón de texto desde PHP y utilizando
varias declaraciones echo (o imprimir) serían lento y desordenado. Para superar esto, PHP ofrece
dos conveniencias. La primera es sólo para poner varias líneas entre comillas, como en el ejemplo
3-6. Las variables también pueden ser asignadas, como en el ejemplo 3-7.

Ejemplo 3-6. Una declaración echo cadena multilínea


<?php
$author = "Alfred E Newman";
echo "This is a Headline
This is the first line.
This is the second.
Written by $author.";
?>

Ejemplo 3-7. Una asignación de cadena multilínea


<?php
$author = "Alfred E Newman";
$text = "This is a Headline
This is the first line.
This is the second.
Written by $author.";
?>

PHP también ofrece una secuencia de líneas múltiples con el operador <<<, comúnmente conocida
como here-document o heredoc para abreviar, y es una manera de especificar una cadena literal, la
preservación de los saltos de línea y otros espacios en blanco (incluyendo sangrado) en el texto. Su
uso puede ser visto en el Ejemplo 3-8.

Ejemplo 3-8. Sentencia echo multilínea Alternativa


<?php
$author = "Alfred E Newman";
echo <<<_END
This is a Headline
This is the first line.
This is the second.
- Written by $author.
_END;
?>

Lo que este código hace es decirle a PHP que muestre todo entre las dos etiquetas _END como si
fuera una cadena entre comillas dobles. Esto significa que es posible, por ejemplo, para un
desarrollador escribir secciones enteras de HTML directamente al código PHP y luego simplemente
reemplazar partes dinámicas específicas con variables PHP.

Es importante recordar que la etiqueta de cierre _END; debe aparecer a la derecha en el comienzo
de una nueva línea y debe ser la única cosa en esa línea, ni siquiera un se permite que se añada
después comentario (ni siquiera un solo espacio). Una vez que haya cerrado un bloque de líneas
múltiples, usted es libre de utilizar el mismo nombre de la etiqueta de nuevo.

NOTA: Recuerde el uso del constructor heredoc <<< _END ... _END; usted no tiene que añadir
el carácter \n de avance de línea para enviar un salto de línea simplemente pulse intro y empiece
una nueva línea. Además, a diferencia de cualquiera de las comillas o cadena delimitada por
comillas simples, usted es libre de utilizar todas las comillas simples y dobles que le gusten en un
heredoc sin escape, precedidas estas con una barra invertida (\).

Ejemplo 3-9 muestra cómo se utiliza la misma sintaxis para asignar varias líneas a una variable.

Ejemplo 3-9. Una cadena de asignación de variables de múltiples líneas

<?php
$author = "Alfred E Newman";

$out = <<<_END
This is a Headline

This is the first line.


This is the second.
- Written by $author.
_END;
?>

La variable $out luego se rellena con el contenido entre las dos marcas. Si usted fue anexando, en
lugar de ceder, podría también haber utilizado .= En lugar de = para anexar la cadena $out.

Tenga cuidado de no colocar un punto y coma inmediatamente después de la primera aparición de


_END ya que ello terminara el bloque de varias líneas antes de haber comenzado y provocara un
mensaje de "Error de análisis". El único lugar para el punto y coma es después de la etiqueta _END
de terminación, a pesar de que es seguro de usar punto y coma dentro del bloque como caracteres de
texto normales.

Por cierto, la etiqueta _END es simplemente una que yo elegí para estos ejemplos, ya que es poco
probable que sea utiliza en ningún otro lugar en el código PHP y por lo tanto único. Pero usted
puede utilizar cualquier etiqueta que desee, como _SECTION1 o _output y así sucesivamente.
Además, para ayudar a diferenciar etiquetas como está a partir de variables o funciones, la práctica
general es iniciar con un guion bajo, pero usted no tiene que utilizar uno si usted no lo elige.

Diseñar texto en varias líneas es por lo general sólo una conveniencia para que el código PHP sea
más fácil de leer, porque una vez que se muestra en una página web, las reglas de formato HTML
toman el control y los espacios en blanco se suprimen, pero $author todavía se sustituye por el valor
de la variable.

Escritura de Variables
PHP es un lenguaje escrito de manera muy informal. Esto significa que las variables no tienen que
ser declaradas antes de ser utilizadas, y que en PHP las variables siempre se convierten en el tipo
requerido por el contexto, cuando se accede a ellas.
Por ejemplo, puede crear un número de varios dígitos y extraer el enésimo dígito de este
simplemente suponiendo que sea una cadena. En el siguiente fragmento de código, los números
12345 y 67890 se multiplican entre sí, devolviendo un resultado de 838 102 050, que se coloca
luego en la variable $number, como se muestra en el Ejemplo 3-10.

Ejemplo 3-10. Conversión automática de un número en una cadena

<?php
$number = 12345 * 67890;
echo substr($number, 3, 1);
?>

En el momento de la asignación, $number es una variable numérica. Pero en la segunda línea, se


realiza una llamada a la función de PHP substr, que pide un carácter a ser devuelto de $number,
empezando en la cuarta posición (recordando que las compensaciones PHP empiezan desde cero).
Para hacer esto, PHP habilita $number en una cadena de nueve caracteres, de modo que substr
puede acceder a él y devolver el carácter, que en este caso es 1.

Lo mismo vale para convertir una cadena en un número, y así sucesivamente. En el Ejemplo 3-11,
la variable $pi se establece en un valor de cadena, que luego se convierte automáticamente en un
número de punto flotante en la tercera línea de la ecuación para calcular el área de un círculo, que
da de salida el valor 78.5398175.

Ejemplo 3-11. Conversión automática de una cadena en un número

<?php
$pi = "3.1415927";
$radius = 5;
echo $pi * ($radius * $radius);
?>

En la práctica, lo que todo esto significa es que usted no tiene que preocuparse demasiado acerca de
los tipos de variables. Sólo les asignan los valores que tienen sentido para usted y PHP los
convertirá en lo necesario para caso. Entonces, cuando se quiere recuperar los valores, sólo hay que
preguntar por ellos; por ejemplo, con una declaración de echo.

Constantes
Las constantes son similares a las variables, que contiene información a la que puede accederse
más tarde, con la excepción de que son lo que parecen constantes. En otras palabras, una vez que
haya definido una, su valor se establece para el resto del programa y no se puede modificar.

Un ejemplo de uso de una constante podría ser la de mantener la ubicación de la raíz del servidor (la
carpeta con los archivos principales de su página web). Se podría definir esta constante de la
siguente manera:

define("ROOT_LOCATION", "/usr/local/www/");

Luego de leer el contenido de la variable que sólo se refieren a ella como una variable regular (pero
no va precedida de un signo de dólar):
$directory = ROOT_LOCATION;
Ahora, cada vez que usted necesite ejecutar el código PHP en un servidor con una configuración de
carpeta diferente, sólo tiene una sola línea de código para cambiar.

NOTA: Las dos principales cosas que hay que recordar acerca de las constantes es que no deben
ir precedidas de un signo $ (al igual que con las variables normales), y que pueden definirse sólo
con la función define.

En general se acepta como una buena práctica el utilizar sólo mayúsculas para los nombres de
variables constantes, especialmente si otras personas también van a leer su código.

Constantes predefinidas
PHP viene confeccionado con decenas de constantes predefinidas que por lo general van a ser
difíciles de usar como un principiante en PHP. Sin embargo, hay algunas conocidas como las
constantes mágicas, que le serán útiles. Los nombres de las constantes mágicas siempre tienen dos
guiones al principio y dos al final, por lo que no vas a querer tratar de nombrar alguna de tus
propias constantes con un nombre que ya está tomado. Se detallan en la Tabla 3-5. Los conceptos
mencionados en la tabla se introducirán en los próximos capítulos.

Constantes Mágicas Descripción


__LINE__ El número de línea actual del archivo.

__FILE__ La ruta completa y el nombre del archivo. Si se utiliza dentro de un


include, se devuelve el nombre del archivo incluido. En versiones de PHP
desde 4.0.2, __ FILE__ siempre contiene una ruta absoluta con enlaces
simbólicos resueltos, mientras que en las versiones anteriores puede
contener una ruta relativa en algunas circunstancias.

__DIR__ El directorio del archivo. Si se utiliza dentro de un include, se devuelve el


directorio del archivo incluido. Esto es equivalente a dirname (__FILE__).
Este nombre de directorio no tiene una barra final a menos que sea el
directorio raíz. (Añadido en PHP 5.3.0.)

__FUNCTION__ El nombre de la función. (Añadido en PHP 4.3.0.) A partir de PHP 5,


devuelve el nombre de la función, que ya fue declarada (mayúsculas y
minúsculas). En PHP 4, su valor es siempre en minúsculas.

__CLASS__ El nombre de la clase. (Añadido en PHP 4.3.0.) A partir de PHP 5,


devuelve el nombre de la clase, ya que fue declarado (mayúsculas y
minúsculas). En PHP 4, su valor es siempre en minúsculas.

__METHOD__ El nombre del método de clase. (Añadida en PHP 5.0.0.) El nombre del
método se devuelve como fue declarado (mayúsculas y minúsculas).

__NAMESPACE__ El nombre del espacio de nombres actual (mayúsculas y minúsculas). Esta


constante se define en tiempo de compilación. (Añadido en PHP 5.3.0.)

Un uso práctico de estas variables es para propósitos de depuración, cuando se tiene que insertar
una línea de código para ver si el flujo del programa llega a ella:

echo "This is line " . __LINE__ . " of file " . __FILE__;


Esto hace que la línea de programa actual en el archivo actual (incluida la ruta) en ejecución se
emita en el navegador web.

La diferencia entre el echo y Comandos de impresión


Hasta ahora, usted ha visto el comando echo usando un número de maneras diferentes para texto de
salida desde el servidor a su navegador. En algunos casos, una cadena literal ha sido de salida. En
otros, las cadenas primero han sido concatenadas o las variables han sido evaluadas. También he
mostrado propagación de salida en varias líneas.

Pero también existe una alternativa a echo que puede utilizar: print. Los dos comandos son bastante
similares entre sí, pero print es una función real que tiene un único parámetro, mientras que echo
constructor del lenguaje PHP.

En general, el comando echo será un poco más rápido que la producción de impresión de texto en
general, ya que, al no ser una función, no fija un valor de retorno.

Por otro lado, debido a que no es una función, echo no se puede utilizar como parte de una
expresión más compleja, mientras que print puede. He aquí un ejemplo de la salida si el valor de
una variable es verdadero o falso con print, algo que no podía llevar a cabo de la misma manera con
echo, porque se mostrará un mensaje de "Error de análisis":

$b ? print "TRUE" : print "FALSE";

El signo de interrogación es simplemente una manera de interrogar si variable $b es verdadera o


falsa. Sea cual sea el comando está a la izquierda de los dos puntos se ejecuta si $b es verdadera,
mientras que el control hacia la derecha se ejecuta si $b es falsa.

En general, sin embargo, los ejemplos de este libro usan echo y recomiendo que lo haga así, hasta
llegar a un punto en el que el desarrollo de PHP descubra la necesidad de utilizar print.

Funciones
Las funciones se utilizan para separar las secciones del código que realizan una tarea en particular.
Por ejemplo, puede que a menudo sea necesario buscar una fecha y devolverla en un formato
determinado. Eso sería un buen ejemplo para convertir en una función. El código para hacerlo
podría ser de sólo tres líneas de largo, pero si lo tiene que pegar en su programa de una docena de
veces, estará haciendo su programa innecesariamente grande y complejo, a menos que utilice una
función. Y si usted decide cambiar el formato de los datos después, ponerla en una función significa
tener que cambiarlo en un solo lugar.

Si lo coloca en una función no sólo acorta su código fuente y lo hace más fácil de leer, sino que
también añade una funcionalidad adicional (nunca dicho mejor), ya que se pueden pasar parámetros
a funciones haciéndolas actuar de forma diferente. También pueden devolver valores al código de
llamada.

Para crear una función, declare esta de la manera mostrada en el ejemplo 3-12.
Ejemplo 3-12. Una simple declaración de una función.

<?php
function longdate($timestamp)
{
return date("l F jS Y", $timestamp);
}
?>

Esta función tiene una marca de tiempo Unix (un número entero que representa una fecha y hora en
función del número de segundos transcurridos desde las 00:00 am del 01 de enero 1970) como su
entrada y luego llama a la función date de PHP con la cadena de formato correcto para devolver una
fecha en el formato Miércoles 01 de agosto 2012. Cualquier número de parámetros se puede
transmitir entre los paréntesis iniciales, hemos decidido aceptar sólo uno. Las llaves encierran todo
el código que se ejecuta cuando se llama a la función.

Hasta la fecha de hoy de utilizar esta función, coloque la siguiente llamada en el código:

echo longdate(time());

Esta llamada utiliza la función integrada time de PHP para ir a buscar la marca de tiempo Unix
actual y pasa a la nueva función longdate, que devuelve la cadena adecuada para el comando echo
para mostrar. Si usted necesitara imprimir la fecha de hace 17 días, ahora sólo tiene que emitir la
siguiente llamada:

echo longdate(time() - 17 * 24 * 60 * 60);

que pasa a longdate la marca de tiempo Unix actual menos el número de segundos desde hace 17
días (17 días x 24 horas x 60 minutos x 60 segundos).

Las funciones también pueden aceptar varios parámetros y devolver varios resultados, el uso de
técnicas que voy a desarrollar en los siguientes capítulos.

Alcance de las Variables


Si usted tiene un programa muy largo, es muy posible que pueda comenzar a quedarse sin buenos
nombres de variables, pero con PHP puede decidir el alcance de una variable. En otras palabras, se
puede, por ejemplo, decirle que desea que la variable $temp sea utilizada sólo dentro de una función
en particular y olvidar que alguna vez se utilizó cuando se devuelve la función. De hecho, éste es el
ámbito predeterminado para las variables PHP.
Como alternativa, puede informar a PHP que una variable es global en su alcance y por lo tanto
puede ser visitada por cualquier otra parte de su programa.

Las variables locales


Las variables locales son variables que se crean dentro y se puede acceder sólo por una función. Por
lo general son variables temporales que se utilizan para almacenar los resultados parcialmente
procesados antes del regreso de la función.

Un conjunto de variables locales es la lista de argumentos de una función. En la sección anterior,


hemos definido una función que acepta un parámetro denominado $timestamp. Esto sólo tiene
sentido en el cuerpo de la función, no se puede obtener o establecer su valor fuera de la función.
Para otro ejemplo de una variable local, vuelva a revisar la función longdate, que se modifica
levemente en el Ejemplo 3-13.

Ejemplo 3-13. Una versión ampliada de la función longdate

<?php
function longdate($timestamp)
{
$temp = date("l F jS Y", $timestamp);
return "The date is $temp";
}
?>

Aquí hemos asignado el valor devuelto por la función de la fecha en la variable temporal $temp,
que se inserta en la cadena devuelta por la función. Tan pronto como la función retorna, el valor de
$temp se borra, como si nunca hubiera sido utilizado en absoluto.
Ahora, para ver los efectos del ámbito de variables, echemos un vistazo a algún código similar, en
el ejemplo 3-14. Aquí $temp se ha creado antes de llamar a la función longdate.

Ejemplo 3-14. Este intento de acceder a $temp en función longdate fallará

<?php
$temp = "The date is ";
echo longdate(time());
function longdate($timestamp)
{
return $temp . date("l F jS Y", $timestamp);
}
?>

Sin embargo, como $temp ni fue creado dentro de la función longdate ni se le pasa como parámetro,
longdate no puede acceder a ella. Por lo tanto, este fragmento de código sólo produce la salida de la
fecha y no el texto precedente. De hecho, en primer lugar mostrará el mensaje de error "Notice:
Undefined variable: temp".

La razón de esto es que, por defecto, las variables creadas dentro de una función son locales a la
función y las variables creadas fuera de cualquier función sólo se puede acceder con el código del
no funcionamiento.

Algunas formas de reparar el Ejemplo 3-14 aparecen en los ejemplos 3-15 y 3-16.

Ejemplo 3-15. Reescribiendo para referirse a $ temp en su ámbito local, soluciona el problema

<?php
$temp = "The date is ";
echo $temp . longdate(time());
function longdate($timestamp)
{
return date("l F jS Y", $timestamp);
}
?>
Ejemplo 3-15 mueve la referencia a $temp de la función. La referencia aparece en el mismo campo
de aplicación en el que se define la variable.

Ejemplo 3-16. Una solución alternativa: pasar $ temp como argumento

<?php
$temp = "The date is ";
echo longdate($temp, time());
function longdate($text, $timestamp)
{
return $text . date("l F jS Y", $timestamp);
}
?>

La solución en el Ejemplo 3-16 $temp pasa a la función longdate como un argumento adicional.
longdate lee en una variable temporal que se crea llama $texto y emite el resultado deseado.

NOTA: Olvidar el alcance de una variable es un error de programación común, así que recordar
cómo funciona el alcance variables ayudarán a depurar algunos problemas bastante oscuros. A
menos que haya declarado una variable de lo contrario, su alcance se limita a ser local: ya sea
para la función actual o para el código fuera de cualquier función, dependiendo de si se crea o se
accede dentro o fuera de una función por primera vez.

Las variables globales


Hay casos cuando se necesita una variable a tener un alcance global, porque desea que todo su
código para poder acceder a él. Además, algunos datos pueden ser grandes y complejos, y no quiere
seguir pasando esto como argumentos a funciones.

Para declarar una variable como de alcance global, utilice la palabra clave global. Vamos a suponer
que usted tiene una forma de registro de los usuarios en su sitio web y quiere todo el código para
saber si está interactuando con un usuario registrado o un invitado. Una forma de hacer esto es crear
una variable global como $is_logged_in:

global $is_logged_in;

Ahora la función de inicio de sesión sólo tiene que asignar a esa variable 1 en el éxito de un intento
de inicio de sesión, o 0 en su fracaso. Debido a que el alcance de la variable es global, cada línea de
código en su programa puede acceder a esta.

Debe utilizar las variables globales con precaución, sin embargo. Recomiendo que se creen sólo
cuando no puede encontrar otra manera de alcanzar el resultado que desea. En general, los
programas que se rompen en pequeñas partes y los datos segregados son menos buggy y más fácil
de mantener. Si usted tiene un programa de miles de líneas (y algún día se quiere) en el que se
descubre que una variable global tiene un valor incorrecto en algún momento, ¿cuánto tiempo le
llevará encontrar el código que se establece de forma incorrecta?

Además, si usted tiene demasiadas variables globales, se corre el riesgo de usar uno de esos
nombres más a nivel local, o por lo menos pensar que ha usado de forma local, cuando en realidad
ya ha sido declarado como global. Toda clase de bichos raros puede surgir de este tipo de
situaciones.
Las variables estáticas
En la sección "variables locales" en la página 53, he mencionado que el valor de la variable se
elimina cuando termina la función. Si una función se ejecuta muchas veces, que se inicia con una
copia nueva de la variable y el valor anterior no tiene ningún efecto.

He aquí un caso interesante. ¿Qué pasa si usted tiene una variable local dentro de una función a la
que no desea que cualquier otra parte de su código tenga acceso, pero que también le gustaría
mantener su valor para la próxima vez que la función sea llama? ¿Por qué? Tal vez porque quieres
un contador para realizar un seguimiento de las veces que se llama a una función. La solución es
declarar una variable estática, como se muestra en el Ejemplo 3-17.

Ejemplo 3-17. Una función usando una variable estática

<?php
function test()
{
static $count = 0;
echo $count;
$count++;
}
?>

Aquí la primera línea de la prueba de la función crea una variable estática llamada $count y la
inicializa a un valor de cero. La siguiente línea da salida al valor de la variable, la final lo
incrementa en uno.

La próxima vez que la función sea llama, debido a que $count ya ha sido declarada, se omite la
primera línea de la función. Entonces, el valor previamente incrementado de $count se muestra
antes de que la variable se incremente de nuevo.

Si tiene previsto utilizar las variables estáticas, debe tener en cuenta que no se puede asignar el
resultado de una expresión en sus definiciones. Estas se pueden inicializar solamente con los
valores predeterminados (véase el Ejemplo 3-18).

Ejemplo 3-18. Declaraciones de variables estáticas permitidas y rechazadas

<?php
static $int = 0; // Permitida
static $int = 1+2; // Rechazada (producirá un error de análisis)
static $int = sqrt(144); // Rechazada
?>

Las variables superglobales


A partir de PHP 4.1.0, varias variables predefinidas están disponibles. Estas son conocidas como las
variables superglobales, lo que significa que son proporcionadas por el entorno de PHP, pero son
globales dentro del programa, accesible absolutamente por todas partes.

Estas superglobales contienen gran cantidad de información útil sobre el programa actualmente en
ejecución y su entorno (véase la Tabla 3-6). Se estructuran como arrays asociativos, un tema
discutido en el capítulo 6.
Tabla 3-6. Las variables superglobales de PHP

Nombre superglobal Contenido


$GLOBALS Todas las variables que están definidas actualmente en el ámbito global
del script. Los nombres de las variables son las claves del array.

$_SERVER La información tal como cabeceras, rutas y ubicaciones de scripts. Las


entradas de esta matriz son creadas por el servidor web y no hay garantía
de que todos los servidores web proporcionarán cualquiera o todos estos.

$_GET Variables pasadas al script actual mediante el método HTTP GET.

$_POST Variables pasadas al script actual mediante el método HTTP POST.

$_FILES Elementos cargados al script actual mediante el método HTTP POST.

$_COOKIE Variables pasadas al script actual a través de cookies HTTP.

$_SESSION Variables de sesión disponibles en el script actual.

$_REQUEST El contenido de la información que pasa desde el navegador, de forma


predeterminada, $ _GET, $ _POST y $ _COOKIE.

$_ENV Variables pasadas al script actual a través del método environment.

Todas los superglobales se nombran con un solo guión bajo inicial y sólo letras mayúsculas, por lo
tanto, se debe evitar nombrar a sus propias variables de esta manera para evitar posibles
confusiones.

Para ilustrar cómo usarlos, vamos a ver un poco de información que muchos sitios utilizan. Entre
las muchas pepitas de la información suministrada por las variables superglobales es la URL de la
página que hace referencia al usuario a la página web actual. Esta información página de referencia
se puede acceder de esta manera:

$came_from = $_SERVER['HTTP_REFERRER'];

Es así de simple. Oh, y si el usuario fue directo a su página web, tal como introducir la URL
directamente en el navegador, $came_from se establece en una cadena vacía.

Superglobales y seguridad
Una palabra de precaución estén listos antes de empezar a usar las variables superglobales, porque
son utilizadas a menudo por los hackers que tratan de encontrar exploits para irrumpir en su sitio
web. Lo que hacen es cargar $_POST, $_GET, u otras superglobales con código malicioso, como
comandos de MySQL o Unix que pueden dañar o mostrar los datos sensibles si ingenuamente
accedes a ellos.

Por lo tanto, siempre se debe desinfectar las superglobales antes de usarlas. Una forma de hacerlo es
a través de la función PHP htmlentities. Convierte todos los caracteres en entidades HTML. Por
ejemplo, los caracteres menor que y mayor que (<y>) se transforman en las cadenas &lt; y &gt;
para que estas se vuelvan inofensivas, como lo son todas las comillas y barras invertidas, y así
sucesivamente.
Por lo tanto, una mejor manera de acceder a $_SERVER (y otras superglobales) es:

$came_from = htmlentities($_SERVER['HTTP_REFERRER']);

En este capítulo se le ha proporcionado una sólida formación en el uso de PHP. En el Capítulo 4,


vamos a empezar con lo que ha aprendido a construir expresiones y el flujo de programa de control.
En otras palabras, un poco de programación real.

Pero antes de seguir adelante, le recomiendo que pruebe con algunas (si no todas) de las siguientes
preguntas para asegurarse de que ha digerido completamente el contenido de este capítulo.

También podría gustarte