Existen varias etapas en las que la codificación es
importante. Asumiendo que tiene un valor tipo
string$datos, que contiene la
cadena que desea pasar sin codificar, estas son las etapas
relevantes:
Interpretación de HTML. Para especificar una cadena
cualquiera, es necesario incluirla en
comillas dobles, y aplicar
htmlspecialchars() sobre el valor
completo.
URL: Una URL consiste de varias partes. Si desea que sus
datos sean interpretados como un Ãtem, es
necesario codificarla con
urlencode().
Ejemplo 71-1. Un elemento escondido de un formulario HTML
Nota:
Los datos son mostrados en el navegador como es de esperarse,
ya que el navegador interpretará los sÃmbolos
HTML escapados.
Luego de ser enviados, ya sea por GET o POST, los datos
serás codificados por el navegador para su
transferencia, y serán decodificados directamente por
PHP. Asà que en lo que a usted concierne, no
necesitará realizar ninguna
codificación/decodificación, todo es manejado
automáticamente.
Nota:
En realidad está imitando una peticián HTML GET,
por lo tanto no es necesario aplicar
urlencode() manualmente a los datos.
Nota:
Es necesario usar htmlspecialchars() sobre
la URL completa, ya que la URL ocurre como el valor de un
atributo HTML. En este caso, el navegador primero
reemplazará las entidades HTML especiales por los
caracteres correctos en el valor, y luego pasa la URL. PHP
entenderá la URL correctamente, ya que ya usado
urlencode() sobre los datos.
Notará que el caracter & en la
URL es reemplazado por &. Aunque la
mayorÃa de navegadores entenderán el caracter si
olvida esto, no siempre es posible que ocurra. Asà que
incluso si su URL no es dinámica, es
necesario usar
htmlspecialchars() sobre la URL.
2.
Intento usar una etiqueta <input type="image">, pero las
variables $foo.x y $foo.y
no están disponibles. $_GET['foo.x']
no existe tampoco. ¿Dónde están?
Cuando se envÃa un formulario, es posible usar una imagen
en lugar del botón de envÃo estándar con
una etiqueta como esta:
Nota:
Los espacios en nombres de variables de petición son
convertidos a caracteres de subrayado.
3. ¿Cómo creo matrices en un <form>
HTML?
Para hacer que el resultado de <form> sea enviado como un
valor array a su
script PHP, se deben nombrar los elementos <input>,
<select> o <textarea> de esta forma:
La matriz OtraMatriz ahora tendrá las claves 0, 1, email
y phone.
Nota:
Especificar claves de matrices es opcional en HTML. Si no
especifica las claves, la matriz es llenada en el orden en
que aparecen los elementos en el formulario. Nuestro primer
ejemplo contendrá las claves 0, 1, 2 y 3.
4.
¿Cómo obtengo todos los resultados de una etiqueta
de selección múltiple en HTML?
La etiquete de selección múltiple en una
construcción HTML le permite a los usuarios elegir varios
Ãtems desde una lista. Estos Ãtems son pasados
entonces al gestor de acción del formulario. El problema
es que todos son pasados con el mismo nombre de control. Es
decir,
<select name="var" multiple="yes">
Cada opción elegida llegará al gestor de
acción como:
var=opcion1
var=opcion2
var=opcion3
Cada opción sobrescribirá los contenidos de la
variable $var previa. La solución es
usar la caracterÃstica de PHP "matriz desde un elemento
de formulario". Debe usarse la siguiente forma:
<select name="var[]" multiple="yes">
Esto le dice a PHP que debe tratar $var como
una matriz y cada asignación de valor a var[] agrega un
Ãtem a la matriz. El primer elemento se convierte en
$var[0], el siguiente
$var[1], etc. La función
count() puede usarse para determinar
cuántas opciones fueron seleccionadas, y la
función sort() puede ser usada para
ordenar la matriz de opciones si es necesario.
5.
¿Cómo puedo pasar una variable de Javascript a
PHP?
Ya que Javascript es una tecnologÃa (usualmente) del lado
del cliente, y PHP es (usualmente) una tecnologÃa del
lado del servidor, y dado que HTTP es un protocolo "sin
estados", los dos lenguajes no pueden compartir variables
directamente.
Sin embargo, es posible pasar variables entre los dos. Una forma
de hacerlo es generar código Javascript con PHP, y hacer
que el navegador se refresque a sà mismo, pasando
variables especÃficas de vuelta al script PHP. El ejemplo
a continuación muestra precisamente cómo hacer
esto -- permite que código PHP capture la altura y el
ancho de la pantalla, algo que normalmente sólo es
posible en el lado del cliente.
<?php if (isset($_GET['ancho']) AND isset($_GET['altura'])) { // imprimir las variables de geometria echo "El ancho de la pantalla es: ". $_GET['ancho'] ."<br />\n"; echo "La altura de la pantalla es: ". $_GET['altura'] ."<br />\n"; } else { // pasar las variables de geometria // (preservar la cadena query original // -- las variables post deberan ser pasadas de otra forma)
Atención técnica y comercial: (54)-11-5031-1111 las 24 hs. los 365 días del año. ToWebs, (c) 2008
Virtucom Networks S.A Av. Belgrano 1586, piso 10 (C1093AAQ) Cap. Fed. Bs. As, Argentina.