Hemos cubierto muchos detalles técnicos relacionados con el manejo de hipervínculos en HTML aquí en VegiBit. Como hemos visto, al trabajar con PHP, será común y necesario que procesemos datos e información mediante variables . En esta serie de tutoriales de PHP, veremos cómo generar enlaces usando PHP para que podamos incluir datos variables a través de URL y Super Globals . Específicamente, necesitaremos aprender qué es una $_GETvariable y cómo funciona en combinación con los parámetros de URL. Algunos otros puntos clave serán aprender cuáles son los caracteres reservados en las URL, qué caracteres no son seguros y cuándo y cómo necesitaremosencodeellos para un uso adecuado. Los conceptos aquí descritos se utilizan en Internet en prácticamente todos los sitios web que visite. Pasemos directamente a trabajar con URL, enlaces y PHP.


1. El GET Super Global

Cuando trabajamos con URL y enlaces en PHP, podemos pasar variables a través de la propia URL en forma de cadena de consulta. La cadena de consulta es la parte de la URL que viene después del dominioEl ejemplo clásico de cómo explicar la forma en que los enlaces GET Super Global y html funcionan juntos es creando dos páginas html y creando enlaces entre ellas para mostrar cómo se pasan los datos. Configuraremos dos páginas ahora. Uno con un enlace a la página dos, y el otro con algo de lógica para volcar el contenido de GET Super Global Variable en la pantalla. Vamos a ver.

Página uno

Página dos


¡Frio! Al pasar valores a las variables en la cadena de consulta, podemos pasar datos de una página a otra a través de la variable GET Super Global.


2. ¡Codifique sus valores GET!

En HTML hay algunos caracteres reservados que debemos tener en cuenta porque si los incluimos en una cadena de consulta sin la codificación adecuada, la URL se romperá. Esta tabla contiene los caracteres html reservados que debemos tener en cuenta.

Caracteres reservados en URL
CarbonizarseCodificación de URL
PS% 24
Y% 26
+% 2b
,% 2c
/% 2f
:% 3a
;% 3b
=% 3d
?% 3f
@% 40
Caracteres inseguros en URL
espacio% 20
"% 22
<% 3c
>% 3e
#% 23
%% 25
{% 7b
}% 7d
|% 7c
% 5c
^% 5e
~% 7e
[% 5b
]% 5d
'% 60

Como puede ver, hay bastantes personajes que podrían causarle problemas. La solución es que en lugar de usar el carácter real en la URL, debe usar el valor de codificación de dígitos hexadecimales del signo de porcentaje equivalente en la URL. Bien, sabemos que hay bastantes caracteres a tener en cuenta, así que continúe y memorice la tabla anterior, luego regrese una vez que esté listo para continuar trabajando con URL en PHP.

¡Es una broma! No tienes que memorizar esta tabla, ¡hay cosas mucho mejores que hacer con tu tiempo! De hecho, comencemos a hacer un buen uso de ese tiempo hablando de las funciones integradas en PHP que harán esto por usted. No memorices todos los personajes, solo recuerda las funciones para lidiar con ellos.

3. urlencode ( $string)

Esta útil función hará el trabajo sucio por usted. Al ejecutar la cadena de consulta a través de esta función, convertirá cualquiera de los caracteres reservados a su par hexadecimal de porcentaje / dos dígitos para facilitarle la vida. Los espacios se convierten en signos más, mientras que las letras, los números, los guiones bajos y los guiones siguen sin cambiar. Podemos ver esto en acción y por qué es necesario rompiendo nuestro enlace original. Agreguemos una variable a la lista de variables que nos gustaría enviar a través de la cadena de consulta. Aquí está el html actualizado.

Entonces, lo que estamos haciendo aquí es agregar una cadena a nuestra $modsvariable. La cuerda es Stage Two Turbo & New Suspension¿Ves algún problema aquí? Así es, colocamos un carácter reservado, el ampersand, en la cadena que queremos pasar como variable en la URL. ¡Esto va a causar algunos resultados inesperados! Para ilustrar el problema, creamos dos enlaces, uno con la $modsvariable sin tocar y el otro con nuestra $modsvariable ejecutada a través de la función urlencode . Veamos la diferencia.

Enlace 1

Enlace 2

¿Ves la diferencia? ¡El primer enlace rompe completamente los datos! ¡Ha convertido el contenido de nuestra variable $ mods en dos variables completamente diferentes! Esto seguramente hará llover fuego del cielo sobre su aplicación web. Sin embargo, el segundo enlace usa la $modsvariable después de que ha sido masajeada por la función urlencode y, por lo tanto, no interrumpe nuestra aplicación. La cadena que queríamos Stage Two Turbo & New Suspensionestá ubicada de forma segura dentro de la variable $ mods sin ningún efecto negativo. Excelente. Tenga en cuenta que esta codificación de URL solo es necesaria con solicitudes GET, ya que utilizan URL para enviar datos. Las solicitudes POST no necesitarán nada de este elegante negocio de codificación.

4. rawurlencode ( $string)

Además de la función urlencode, también tiene disponible esta función rawurlencode cuando se trata de codificación de URL. Esta función hace todas las mismas cosas que urlencode. De acuerdo, puede que se pregunte por qué utilizaría rawurlencode en lugar de urlencode. Esa es una buena pregunta y la respuesta te sorprenderá. (o no). Rawurlencode convierte los caracteres de espacio en% 20, que es su codificación porcentual / hexadecimal. Recuerde que el código urlen solo convierte los espacios en signos más. Entonces, ¿cuál es el problema aquí? Bueno, hay algunas mejores prácticas que debe conocer y aquí hay un resumen de cuándo usar cada una.

5. rawurlencode vs urlencode

rawurlencode la ruta

  • la ruta es la parte de la URL que viene antes de? símbolo
  • los espacios deben estar codificados como% 20

urlencode la cadena de consulta

  • la cadena de consulta es cualquier cosa que venga después de? símbolo
  • los espacios se codifican mejor como signos más aquí

Echemos un vistazo a esto en acción.

Hay dos razones por las que debería utilizar el primer enfoque.

1. ¿La porción que viene antes del es donde el servidor buscará en el sistema de archivos el archivo Subaru Hatchback . El servidor lo pasará mejor buscando un archivo que se use %20como espacio en lugar de como +signo literal De hecho, es posible que el servidor no encuentre este archivo si usa un +letrero, y su enlace se romperá por completo.

2. La porción que viene después de la ?será más corta y se verá mucho mejor usando +señales en lugar de %20Es cierto que ambos métodos funcionarán en este caso, pero urlencode después del ?es una mejor práctica, así que deberíamos hacerlo de esa manera.

Conclusión de la URL de PHP

En este episodio de nuestra inmersión en las cálidas aguas de la programación con PHP en la web, echamos un vistazo más de cerca al manejo de caracteres especiales en la cadena de URL. Necesitamos hacer esto porque estos caracteres especiales tienen un significado específico si forman parte de la cadena de URL. Para que los navegadores web interpreten y representen correctamente estas cadenas de URL, es fundamental que hagamos un uso adecuado de la codificación mediante urlencode y rawurlencode. Recuerde, cuando se trata de cadenas de consulta y URL, es mejor seguir un procedimiento de tres pasos. 1. Busque el ?signo de interrogación en la cadena de consulta para dividir la URL completa en dos partes . 2. En el lado izquierdo de ?, use rawurlencode para codificar los datos. 3. En el lado derechodel ?, use urlencode para codificar los datos. Con esta técnica, navegará por los enlaces, las URL y PHP con facilidad.