Salida de datos enviados por el formulario en php. formularios HTML

Para organizar la transferencia de datos al servidor mediante un formulario, deberá implementar un formulario HTML en el que los visitantes del sitio ingresarán su información y código PHP, cuyo propósito es aceptar y procesar los datos recibidos en el servidor.

Formulario de envío de datos HTML

El formulario de la página está formado por etiquetas.

...
, dentro del cual se colocan etiquetas para campos para ingresar información de texto, etiquetas para componentes especiales (por ejemplo, un cuadro combinado), etiquetas para un campo de selección y carga de archivos.

* Para HTML5 también es posible colocar etiquetas de campos de formulario no dentro de las etiquetas de formulario, sino en cualquier lugar de la página. En este caso, para cada uno de estos campos debe especificar el atributo "formulario" para determinar con qué formulario de envío debe interactuar.

Entonces, el formulario de envío más simple puede contener el siguiente código:


Valor A:
Valor B:

Elementos de formulario y sus parámetros:

acción="miformulario.php"– el atributo “acción” determina qué archivo php procesará los datos enviados. En este ejemplo, los datos se enviarán al archivo "myform.php", ubicado en el mismo directorio que la página con el formulario. Si este atributo no se especifica explícitamente, los datos del formulario se enviarán a la dirección de la página del formulario.

método = "publicar"– el parámetro del método determina el método de transferencia de datos POST o GET. Más detalles sobre esto en el artículo "Diferencias entre los métodos POST y GET". Si no especifica el atributo explícitamente, el método GET se utilizará de forma predeterminada.

Texto "Valor A:" Y "Valor B:" agregado únicamente con fines de diseño y claridad del formulario para el usuario. No es necesario agregar esto para transferir datos, pero para dejar claro al usuario qué ingresar, vale la pena indicarlo.

Etiquetas se utilizan para formar varios elementos de control de formulario.

tipo="texto"– el atributo "tipo" determina el tipo de campo. Dependiendo del tipo que se especifique, tanto la apariencia del elemento como su propósito cambian. El valor del atributo "texto" indica que el elemento se mostrará en el navegador como un campo de texto de una sola línea donde el usuario puede ingresar su propia cadena.

nombre="datos1"– el atributo “nombre” indica el nombre, o más bien el índice de los datos en la matriz recibida por el servidor. Este es un parámetro obligatorio, mediante el cual el controlador PHP puede acceder al valor pasado. El nombre se puede elegir arbitrariamente, pero es más conveniente cuando este valor tiene un significado claro.

tipo="enviar"- etiqueta con este valor del parámetro "tipo" se mostrará en la página como un botón. De hecho, puedes prescindir de un botón en el formulario. Si, por ejemplo, el formulario tiene campos de texto, el envío se puede realizar simplemente presionando "Entrar" en el teclado. Pero tener un botón hace que el formulario sea más comprensible.

valor="Enviar" !}– en este caso (para tipo="enviar") define solo la etiqueta en el botón. Para type="text", por ejemplo, este será el texto que se mostrará en el campo de texto.

Como resultado, en la página este código se verá así:

Valor A:
Valor B:

Al hacer clic en el botón, los datos se enviarán a la página especificada, y si existe y funciona correctamente, se procesarán los datos.

Procesamiento de datos enviados por formulario HTML en PHP

Los datos enviados de la forma descrita se colocan en los arrays superglobales $_POST, $_GET y $_REQUEST. $_POST o $_GET contendrán datos dependiendo del método utilizado para enviarlos. $_REQUEST contiene datos enviados por cualquiera de los métodos especificados.

$_POST, $_GET y $_REQUEST son arrays asociativos cuyos campos de índice coinciden con los atributos “nombre” de las etiquetas . En consecuencia, para trabajar con datos en el archivo myform.php, puede asignar los valores de los elementos de dicha matriz a variables especificando el nombre del campo como índice:

// para el método GET
$a = $_GET[ "datos1" ];
$b = $_GET[ "datos2" ];

// para el método POST
$a = $_POST[ "datos1" ];
$b = $_POST[ "datos2" ];

// para cualquier método
$a = $_REQUEST[ "datos1" ];
$b = $_SOLICITUD[ "datos2" ];

Comprobar la finalización de los campos del formulario

A veces, al recibir datos, es necesario comprobar si el usuario ha enviado un formulario vacío. Puede utilizar la función vacía para esto.

si (vacío ($_REQUEST["datos1" ])) (
eco "El campo no está lleno";
} demás(
eco "El campo se ha llenado";
$a = $_REQUEST[ "datos1" ];
}

Normalmente esta solución es suficiente. Si necesita ingresar texto, quedará claro si se ha ingresado o no. Sin embargo, si el usuario ingresa intencionalmente cero para fines de cálculo, la función vacía mostrará que no hay ningún valor. Por lo tanto, para tales situaciones es mejor utilizar la función isset. Verificará explícitamente si el valor se proporciona o no.

si (isset ($_REQUEST["datos1" ])) (
eco "El campo se ha llenado";
$a = $_REQUEST[ "datos1" ];
} demás(
eco "El campo no está lleno";
}

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

Ver la matriz $GLOBALS $valor) echo "\$GLOBALS[\"$clave\"] == $valor
"; ?>

Como resultado, aparecerá en la pantalla una lista de todas las variables globales, incluidas las variables de entorno. Los más utilizados son:

VariableDescripciónContenido
$_SERVER["HTTP_USER_AGENT"]Nombre y versión del clienteMozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
$_SERVER["REMOTE_ADDR"]dirección IP144.76.94.14
getenv("HTTP_X_FORWARDED_FOR")Dirección IP interna del cliente
$_SERVER["REQUEST_METHOD"]Método de solicitud (GET o POST)CONSEGUIR
$_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"]Dominiositio 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

Ejemplo de procesamiento de entrada

"método="publicación">

Número de tarjeta:



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

Lista



RESULTADO DEL EJEMPLO 3.1:

Té Café Leche Jamón Queso

Ejemplo 3.2

Procesando una lista del archivo ex1.htm

    "; 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.
"; } } ?>
"method="post">¿Qué lenguajes de programación conoces?
PHP
perla

RESULTADO DEL EJEMPLO 4:

¿Qué lenguajes de programación conoces? PHP perla

Ejemplo 5

"; ?>
"método="publicación">

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

Manejar entradas arbitrarias independientemente del método de transmisión $valor) echo "$clave == $valor
"; ?>

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:

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:

"método="publicación">

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

Procesando el archivo transferido "; echo "nombre: ".$_FILES["archivo de usuario"]["nombre"]."
"; echo "tamaño: ".$_FILES["userfile"]["tamaño"]."
"; echo "tipo: ".$_FILES["archivo de usuario"]["tipo"]."
"; } ?>
"método="publicación">



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.

CharsetRecodeMultipartForms desactivado

No es ningún secreto que la forma más común en que una página HTML interactúa con un sitio web es mediante un formulario. El formulario (es decir, el elemento HTML formado por la etiqueta del formulario) también lo utilizan servicios de correo electrónico gratuitos, tiendas de electrónica y muchos otros tipos de sitios.

Procesar formularios simples usando PHP es fácil. Sin embargo, de vez en cuando surge la necesidad de procesar un formulario que contiene varios campos del mismo tipo, a pesar de que su número puede variar en un amplio rango y su número no se conoce de antemano. Para tales casos, PHP permite procesar campos del mismo tipo como una matriz de valores.

Echemos un vistazo más de cerca a las opciones para diferentes tipos de campos.

Campos de texto

En este artículo, los campos de texto se refieren a elementos creados por etiquetas de entrada con un valor de parámetro de tipo de texto y una etiqueta de área de texto. La forma más sencilla de organizar el procesamiento de un formulario que consta de varios campos de este tipo. La siguiente lista muestra el formato HTML para dicho formulario.






Como puede ver en la lista, los nombres de los elementos del formulario, desde el punto de vista de PHP, son elementos de matriz. Por lo tanto, el script PHP que procesará este formulario tratará todos los campos de texto de este formulario como una sola matriz. Se puede acceder a los elementos individuales por índice o enumerarlos usando la lista y cada comando, como en el siguiente ejemplo.

norte"; ?>

interruptores

En este artículo, las casillas de verificación son elementos creados en etiquetas de entrada con el parámetro de tipo establecido en casilla de verificación. El formulario para utilizar un número variable de "interruptores" se construye exactamente de la misma manera. Tenga en cuenta que la elección del valor del botón de opción específico (es decir, el valor de la propiedad de valor) no es importante. En el siguiente listado se muestra un ejemplo:






Sin embargo, el procesamiento de un formulario de este tipo difiere del procesamiento descrito para los campos de texto. En este caso, es necesario determinar si un visitante del sitio ha activado tal o cual interruptor. Si está habilitado, entonces el elemento de matriz correspondiente existe; si no, falta. La siguiente lista es un script PHP de ejemplo que imprime los botones de opción habilitados:

Botones de opción

Antes de describir el procesamiento de los botones de opción, es necesario recordar cómo funcionan. La esencia de los botones de opción (elementos creados por etiquetas de entrada con el valor del parámetro de tipo igual a radio) es que al seleccionar un botón, el usuario deselecciona automáticamente otro botón del mismo conjunto. Los botones se combinan en un conjunto de forma muy sencilla: todos los botones del conjunto tienen el mismo nombre.

Pero los valores (es decir, los parámetros de valor) de los botones del conjunto son diferentes. Y el valor del botón seleccionado con el nombre del conjunto se enviará al sitio. Al igual que con los campos de texto y los botones de opción, los nombres de los conjuntos de botones de opción deben formatearse como nombres de elementos de matriz en PHP. Un ejemplo de dicho formulario se proporciona en la siguiente lista:

// primer conjunto de botones
// segundo conjunto de botones
// tercer conjunto de botones

El procesamiento de botones de opción combina las ideas de utilizar campos de texto y botones de opción en el procesamiento. Si el autor de la página html no ha establecido un valor predeterminado y el usuario no ha seleccionado un botón específico en el conjunto de botones de opción, entonces este elemento no estará en la matriz (como ocurre con los botones de opción).

Si se selecciona el botón, el elemento de matriz correspondiente contendrá su valor (como en los campos de texto). A continuación se muestra una lista de ejemplo que procesa un formulario con múltiples conjuntos de botones de opción.

norte"; ?>

Por tanto, no hay nada complicado en el procesamiento de formas complejas.

Esta lección de PHP cubre los conceptos básicos del lenguaje: procesamiento de formularios con el envío de una solicitud a páginas web, construcciones básicas de control de PHP al procesar formularios, escritura de datos de un formulario PHP en un archivo, la función de fecha en PHP date().

1. Te recordamos que todos los archivos php se prueban sólo cuando se ejecuta Denver y sólo desde la barra de direcciones del navegador. ¡No puedes ejecutar archivos php haciendo doble clic!

2. Inicie Denver.

Ejercicio 1: Procesamiento de un formulario simple

En esta lección de PHP veremos cómo procesar un formulario en una página HTML y crear variables PHP para los campos del formulario.

1. Cree una forma como se muestra en la Fig. 3.1. Se entiende que al hacer clic en el botón Enviar pedido, los datos del formulario se transferirán al administrador y el cliente verá la respuesta en pantalla. Pedido procesado. Si le resulta difícil escribir el formulario, implemente el código debajo de la figura y guárdelo en la carpeta php_2 bajo el nombre forma_bob.html Te recordamos que la dirección del manejador del formulario está escrita en el atributo acción etiqueta forma.

Figura 3.1

2. Para que el usuario reciba una respuesta después de enviar los datos, es necesario crear un controlador de formulario en PHP. Cree el siguiente código y guárdelo en una carpeta. php_2 bajo el nombre zakaz.php

3. Verifique la funcionalidad del controlador. Para hacer esto, ejecute el archivo forma_bob.html a través de un navegador escribiendo la dirección en la barra de direcciones del navegador http://localhost/php_2/forma_bob.html

4. Ingrese los números en los campos del formulario y haga clic en el botón Enviar un pedido. El resultado en la Fig. 3.2.

Figura 3.2

Variables de formulario

El objetivo de utilizar un formulario de pedido es obtener la información del pedido del cliente que ingresó en el teclado. Dentro de un script PHP, se puede acceder a cada uno de los campos del formulario como una variable que tiene el mismo nombre que el campo del formulario. En PHP, las variables son fáciles de reconocer porque comienzan con un signo de dólar. $ .

Puedes acceder al contenido del campo cantidad de neumáticos de las siguientes maneras:

$cantidad de neumáticos//estilo corto

$_POST['cantidad de neumáticos']//estilo medio

$HTTP_POST_VARS['cantidad de neumáticos']//estilo largo

Usaremos el estilo largo para hacer referencia a variables de formulario, pero para facilitar su uso crearemos versiones cortas de la aplicación. Esta es una forma cómoda y segura de manipular datos que funciona de forma eficaz en todos los sistemas, independientemente de las versiones y configuraciones seleccionadas.

Al copiar el contenido de una variable a otra, utilizamos el operador de asignación, que en PHP se indica con el signo igual ( = ). La siguiente línea de código crea una nueva variable llamada $cantidad de neumáticos y transfiere el contenido $_POST['cantidad de neumáticos'] a esta nueva variable:

$cantidad de neumáticos=$_POST['cantidad de neumáticos']

Dado que este script no genera ningún resultado, no hay diferencia si se coloca encima o debajo del identificador. . Normalmente este bloque se coloca al principio del guión.

5. En el archivo zakaz.php cambie el código de la siguiente manera y verifique la funcionalidad del formulario. El resultado en la Fig. 3.3. Los números pueden diferir según los datos que ingresó.

Figura 3.3

Ejercicio 2: Cree una calculadora para el formulario Bob's Auto Parts

En este tutorial de PHP, veremos las funciones aritméticas básicas de PHP para cálculos.

1. Archivo forma_bob.html guardar bajo nombre forma_bob_2.html

2. Archivo zakaz.php guardar bajo nombre zakaz_2.php

3. En archivo forma_bob_2.html Cambie el formulario "Auto Parts from Bob" para que se vea como en la Fig. 3.4. No olvide cambiar el nombre del controlador a zakaz_2.php. Si no sabe cómo hacerlo, puede implementar el siguiente código.

Figura 3.4

4. Cree un nuevo procesamiento de formulario en el archivo. zakaz_2.php utilizando los conocimientos adquiridos en lecciones anteriores. El procesamiento debe contener los siguientes datos y condiciones de salida:

1. El costo de cada producto está determinado por una constante. Una constante en PHP se especifica mediante la función de definición. Ejemplo define("POKRPRICE",10); El primer parámetro de la función es el nombre de la constante, que está escrito en letras mayúsculas, el segundo parámetro es el valor de la constante.

2. Operación lógica O denotado por ||

3. Operación lógica Y denotado por && .

4. Operaciones de comparación: más > , menos < , mayor o igual a >=, menor o igual <=

5. Función que lee la hora desde la computadora. fecha("H:i, jF")

6. Función que formatea el número de decimales. formato_número. Ejemplo formato_número($sumnalog,2). El primer parámetro es la variable cuyos caracteres formateamos, el segundo parámetro es el número de decimales.

7. Si le resulta difícil crear un procesamiento de formulario, puede utilizar el siguiente código (Fig. 3.8):

Figura 3.8

Ejercicio 3: escribir datos de formulario en un archivo de texto

En nuestra lección de PHP también veremos cómo escribir datos de formulario en un archivo de texto y la función de fecha date() al procesar el formulario.

1. En el archivo de controlador de formulario “Bob's Auto Parts”, después de la última llave de cierre, agregue el código.

Figura 3.9

2. Verificar el funcionamiento del programa. archivo de texto pedidos.txt se crea automáticamente, vea su contenido.

TAREA DE CONTROL

Después de estudiar esta lección de PHP, se le pedirá que complete una tarea de prueba para consolidar los conocimientos adquiridos.

Figura 3.10

1. Cree un formulario como en la Fig. 3.10.

2. Cree un procesamiento de formulario que mostrará los resultados del pedido, como en la Fig. 3.11 (los resultados variarán dependiendo de los datos ingresados ​​en el formulario.

3. Los resultados del pedido deben escribirse en un archivo de texto separado.

La lista de pedidos debe reflejar lo siguiente:

  • Tipo de producto.
  • Cuesta 1 pieza. bienes.
  • Número de artículos pedidos.
  • Costo total del pedido excluyendo envío, impuestos sobre las ventas y descuentos.
  • Costo de entrega.
  • El monto del impuesto sobre las ventas.
  • Descuento en porcentaje y rublos.
  • El precio del pedido incluye envío, impuestos sobre las ventas y descuento.
  • Dirección de entrega.

Condiciones del problema:

  1. Costo de los bienes:
    • bolígrafos - 10 frotar.
    • libros - 100 frotar.
    • recuerdo - 1000 frotar.
    • computadora - 10.000 rublos.
  2. Impuesto sobre las ventas: 18%. El impuesto se añade al precio total de todos los artículos sujetos a descuento.
  3. Costo de entrega - 500 rublos. Los costos de envío se agregan al precio total de todos los artículos para incluir descuentos e impuestos sobre las ventas.
  4. Descuentos:
    • Al pedir bolígrafos o libros de menos de 5 unidades. descuento - 5%, de 5 a 10 uds. - 10%, más de 10 uds. - 20%;
    • Al realizar pedidos de souvenirs o computadoras de 10 a 20 unidades. descuento - 10%, de 20 a 30 uds. - 20%, por encima de 30 uds. - 40%.

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.

usuario los datos se envían así: El atributo de nombre está en esta etiqueta. Pero el atributo de valor no está en la etiqueta.

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