Función PHP al cambiar un campo de formulario. PHP _SELF en el atributo de acción del formulario
Uno de los temas anteriores ya trataba sobre la obtención de datos de un formulario. En este tema, le contaré con más detalle cómo enviar correctamente un formulario al servidor, así como cómo procesar el formulario en PHP.
Enviar un formulario
Campo de entrada. Los elementos de formulario más comunes son varios campos de entrada. Se crean usando la etiqueta.
1 |
|
usuario
12 |
No importa, sólo se utiliza el atributo. Agregar una etiqueta al formulario |
Literatura
Botón de radio.
Todos los botones de opción del mismo grupo deben tener el mismo atributo de nombre. Este valor no solo establece el nombre del parámetro, sino que también agrupa los botones de opción en un grupo del cual solo se puede seleccionar un botón de opción. El atributo de valor se establece de manera diferente. Agreguemos botones de opción al formulario:
En el ejemplo propuesto se ha creado un formulario que envía datos a un script llamado takeform.php. Por lo tanto, es necesario crear este script. Este no será solo un programa, sino una página que se generará en función de los datos recibidos del formulario. El formulario se envía mediante el método POST. El script toma estos datos de la matriz superglobal $_POST. Los elementos de la matriz se pueden usar simplemente en un script, pero si necesita trabajar mucho con ellos, escribir el nombre del elemento cada vez es un inconveniente. Es más fácil escribir el valor en una variable y acceder a ella. Creemos un archivo takeform.php y escribamos los valores de los dos primeros elementos del formulario en variables:
tomarform.php:
Para etiquetar
13 |
si (!empty($self)) (echo " Sobre mi: "; eco "".$yo." ";
}
|
seleccionar. El texto de los campos de entrada normalmente se utiliza solo. Se escribe en la base de datos o se envía a la página. Pero los datos de otros elementos del formulario se utilizan de forma ligeramente diferente. Habiendo recibido datos del formulario, el script no los muestra, pero en función de ellos determina qué acciones se deben realizar. Formemos parte de la página dependiendo de la selección de un elemento de la lista por parte del usuario:
Tenga en cuenta la etiqueta de apertura.
Viene antes del procesamiento de datos, en la línea 19, y el de cierre, al final, en la línea 28. Por lo tanto, no solo el código HTML, sino también una etiqueta específica se divide en partes. Esta es una práctica común.
Botón de radio.
Todos los botones de opción del mismo grupo tienen el mismo atributo de valor. En consecuencia, se crea un elemento de la matriz $_POST para todo el grupo. El valor del botón de opción que seleccione el usuario se escribirá en él. Agreguemos el resultado de seleccionar un botón de opción a la página:
Así es como los datos de los formularios se envían al servidor y se procesan en scripts PHP. Dependiendo de las diferentes tareas, el trabajo con formularios se lleva a cabo de manera diferente, pero según los ejemplos dados, puede utilizar fácilmente los datos de los formularios de la forma que necesite.
Una de las mejores cosas de PHP es la forma en que funciona con formularios HTML.
Lo principal aquí es que cada elemento del formulario esté disponible automáticamente para sus programas PHP. Para obtener información detallada sobre el uso de formularios en PHP, lea la sección. A continuación se muestra un formulario HTML de ejemplo:
Su edad:
No hay nada especial en este formulario. Este es un formulario HTML normal sin etiquetas especiales. Cuando el usuario complete el formulario y haga clic en el botón enviar, se llamará a la página action.php. Este archivo podría tener algo como:
Ejemplo #2 Mostrar datos de formulario
.
Hola,A usted
años.
Ejemplo de salida de este programa:
Hola sergey. Tienes 30 años. Si no tienes en cuenta los fragmentos de código con html caracteres especiales() Y(int) Si no tienes en cuenta los fragmentos de código con, el principio operativo de este código debe ser simple y comprensible. Garantiza que los caracteres HTML "especiales" estén codificados correctamente para que no se inserte HTML o Javascript malicioso en su página. El campo de edad, que sabemos que debería ser un número, simplemente podemos convertirlo a entero , que eliminará automáticamente los caracteres no deseados. PHP también puede hacer esto automáticamente usando la extensión de filtro. Las variables $_POST["name"] y $_POST["age"] las configura automáticamente PHP. Anteriormente usamos la variable superglobal $_SERVER, pero aquí también usamos la variable superglobal $_POST, que contiene todos los datos POST. Tenga en cuenta que método de envío (método) de nuestro formulario es POST. Si usáramos el método CONSEGUIR
, entonces la información de nuestro formulario estaría en la variable superglobal $_GET.
De acuerdo con la especificación HTTP, debes usar el método POST cuando uses el formulario para cambiar el estado de algo en el servidor. Por ejemplo, si una página tiene un formulario que permite a los usuarios agregar sus propios comentarios, como este página aquí, el formulario debe usar POST. Si hace clic en "Recargar" o "Actualizar" en una página a la que accedió a través de una POST, casi siempre es un error; no debería publicar el mismo comentario dos veces. es por eso que estas páginas no están marcadas ni almacenadas en caché.
Deberías usar el método GET cuando tu formulario, bueno, está obteniendo algo del servidor y en realidad no está cambiando nada. Por ejemplo, el formulario de un motor de búsqueda debería utilizar GET, ya que la búsqueda en un sitio web no debería cambiar nada que pueda interesarle al cliente, y marcar o almacenar en caché los resultados de una consulta de motor de búsqueda es tan útil como marcar o almacenar en caché. una página HTML estática.
hace 1 año
Vale la pena aclarar:
POST no es más seguro que GET.
Las razones para elegir GET o POST implican varios factores, como la intención de la solicitud (¿está "enviando" información?), el tamaño de la solicitud (hay límites en cuanto a la longitud que puede tener una URL y los parámetros GET se envían en la URL) y con qué facilidad desea que la acción se pueda compartir. Por ejemplo, las búsquedas de Google son GET porque facilita copiar y compartir la consulta de búsqueda con otra persona simplemente compartiendo la URL.
La seguridad es sólo una consideración aquí debido al hecho de que un GET es más fácil de compartir que un POST. Ejemplo: no desea que GET envíe una contraseña, porque el usuario podría compartir la URL resultante y exponer su contraseña sin darse cuenta.
Sin embargo, un GET y un POST son igualmente fáciles de interceptar por una persona malintencionada bien ubicada si no implementa TLS/SSL para proteger la conexión de red.
Todos los formularios enviados a través de HTTP (normalmente el puerto 80) son inseguros y, hoy en día (2017), no hay muchas buenas razones para que un sitio web público no utilice HTTPS (que es básicamente HTTP + Seguridad de la capa de transporte).
Como beneficio adicional, si usa TLS, minimiza el riesgo de que a sus usuarios se les inyecte código (AD) en su tráfico que usted no puso allí.
La mayor parte tareas en PHP está asociado al procesamiento de los datos recibidos del usuario. Y en la mayoría de los casos, estos datos se obtienen del formulario, por lo que procesamiento de formularios en PHP es el punto más importante cuando creación de sitios web, del que hablaré en este artículo.
Primero, creemos formulario HTML:
Este es un ejemplo de un clásico. formularios de autorización de usuario, que estoy seguro muchos de ustedes han completado muchas veces en una variedad de sitios. Analicemos ahora un punto importante: ¿cómo se envían los datos? Hay dos métodos (sólo consideraremos dos): este (método) de nuestro formulario es POST. Si usáramos el método Y CORREO. Su principal diferencia es el tipo de envío: abierto ( (método) de nuestro formulario es POST. Si usáramos el método) y cerrado ( CORREO). La mejor manera de entender cuál es la diferencia es abrir este código HTML en el navegador y haga clic en " Acceso". Mire la barra de direcciones y luego coloque otro método, revíselo nuevamente y mire la barra de direcciones nuevamente. La diferencia se notará de inmediato.
En consecuencia, en PHP hay dos matrices: $_GET Y $_POST, que contienen los datos obtenidos por cada uno de estos métodos. También hay matriz $_REQUEST, que contiene datos $_GET Y $_POST simultáneamente. te aconsejo que uses método de publicación Y matriz $_POST, aunque claro, depende de la situación, pero en la mayoría de los casos esto es lo que hacen.
Ahora procesemos los datos. Implementemos un script simple (en el archivo " req.php"):
$iniciar sesión = $_POST["iniciar sesión"];
$pasar = $_POST["pasar"];
si (($login == "Admin") && ($pass == "AdminPass"))
echo "¡Hola, administrador!";
else repite "Acceso denegado";
?>
En este script recibimos datos recibidos del formulario. método de publicación(de matriz $_POST, aunque fácilmente podrían haber obtenido estos datos de $_REQUEST). A continuación verificamos el nombre de usuario y la contraseña y mostramos: "¡Hola, administrador!" o "Acceso denegado". Por supuesto, para crear un sistema de autorización de usuarios en el sitio, también necesita conocer galleta o sobre sesiones(en principio también galleta), pero hablaremos de ellos un poco más adelante, porque todavía tenemos muchos temas importantes por delante.
JavaScript está bloqueado en su navegador. ¡Habilite JavaScript para que el sitio funcione!
Trabajar con formularios
Los formularios HTML se utilizan para transferir datos del usuario de una página web al servidor. PHP proporciona una serie de herramientas especiales para trabajar con formularios.
Variables predefinidas
PHP tiene una serie de variables predefinidas que no cambian en todas las aplicaciones que se ejecutan en un entorno particular. También se les llama variables de entorno o variables de entorno. Reflejan la configuración del entorno del servidor web Apache, así como también solicitan información para ese navegador. Es posible obtener los valores de la URL, cadena de consulta y otros elementos de la solicitud HTTP.
Todas las variables predefinidas están contenidas en la matriz asociativa $GLOBALS. Además de las variables de entorno, esta matriz también contiene variables globales definidas en el programa.
Ejemplo 1
"; ?>
Como resultado, aparecerá en la pantalla una lista de todas las variables globales, incluidas las variables de entorno. Los más utilizados son:
Variable | Descripción | Contenido |
---|---|---|
$_SERVER["HTTP_USER_AGENT"] | Nombre y versión del cliente | Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) |
$_SERVER["REMOTE_ADDR"] | dirección IP | 144.76.94.14 |
getenv("HTTP_X_FORWARDED_FOR") | Dirección IP interna del cliente | |
$_SERVER["REQUEST_METHOD"] | Método de solicitud (GET o POST) | (método) de nuestro formulario es POST. Si usáramos el método |
$_SERVER["QUERY_STRING"] | En una solicitud GET, los datos codificados enviados junto con la URL | |
$_SERVER["REQUEST_URL"] | Dirección completa del cliente, incluida la cadena de consulta | |
$_SERVER["HTTP_REFERER"] | URL de la página desde la que se realizó la solicitud | |
$_SERVER["PHP_SELF"] | Ruta al programa que se está ejecutando. | /index.php |
$_SERVER["SERVIDOR_NOMBRE"] | Dominio | sitio web |
$_SERVER["REQUEST_URI"] | Camino | /php/php_form.php |
Manejo de la entrada del usuario
El programa de procesamiento de entrada PHP se puede separar del texto HTML que contiene los formularios de entrada o se puede colocar en una página.
Ejemplo 2
Aquí no hay ningún botón de transferencia de datos, porque... un formulario que consta de un campo se envía automáticamente cuando se presiona una tecla
Al procesar un elemento con una selección de valores múltiples, debe agregar un par de corchetes al nombre del elemento para acceder a todos los valores seleccionados. Para seleccionar varios elementos, mantenga presionada la tecla Ctrl.
Ejemplo 3.1
RESULTADO DEL EJEMPLO 3.1:
Ejemplo 3.2
- "; foreach ($Artículo como $valor) echo "
- $valor"; eco "
Ejemplo 4. Recibir valores de casillas de verificación
$v) ( if($v) echo "¡Conoces el lenguaje de programación $k!"; else echo "No conoces el lenguaje de programación $k.
"; } } ?>
RESULTADO DEL EJEMPLO 4:
Ejemplo 5
"; ?>Puede procesar formularios sin preocuparse por los nombres de los campos reales.
Para hacer esto, puede usar (dependiendo del método de transferencia) la matriz asociativa $HTTP_GET_VARS o $HTTP_POST_VARS. Estas matrices contienen pares de nombre/valor para cada elemento del formulario enviado. Si no te importa, puedes usar la matriz asociativa $_REQUEST.
Ejemplo 6
"; ?>
Ejemplo 7: Manejo de un clic en un botón usando el operador "@".
Usando la función header(), enviando al navegador un encabezado de "Ubicación", puede redirigir al usuario a una nueva página.
Por ejemplo:
header("Location: ex2.php"); ?>
Transferir un archivo al servidor. Sube el archivo. Subir
PHP le permite transferir archivos al servidor. Un formulario HTML destinado a enviar un archivo debe contener el argumento enctype="multipart/form-data".
Además, en el formulario, antes del campo para copiar un archivo, debe haber un campo oculto llamado max_file_size. En este campo oculto se debe escribir el tamaño máximo del archivo transferido (normalmente no más de 2 MB).
El campo de transferencia de archivos en sí es un elemento INPUT normal con un argumento tipo="archivo".
Por ejemplo:
Una vez que el archivo se transfiere al servidor, se le asigna un nombre único y se almacena en el directorio de archivos temporales. La ruta completa al archivo se escribe en una variable global cuyo nombre coincide con el nombre del campo para transferir este archivo. Además, PHP almacena información adicional sobre el archivo transferido en otras variables globales:
Ejemplo 8
"; echo "tamaño: ".$_FILES["userfile"]["tamaño"]."
"; echo "tipo: ".$_FILES["archivo de usuario"]["tipo"]."
"; } ?>
Ejemplos de carga de archivos al servidor.
Si surgen problemas con la transcodificación del archivo descargado por parte del servidor, aparecerá el símbolo con el código 0x00 reemplazado con un espacio (carácter con código 0x20), agregar al archivo httpd.conf desde el directorio de Apache (/usr/local/apache) las siguientes líneas.