¿Qué método se debe utilizar? Cómo transferir datos a otro archivo directamente desde el cuerpo de un programa PHP usando los métodos GET y POST

Estoy creando un sitio web donde mis usuarios pueden calificar las imágenes cargadas. Actualmente estoy usando botones de opción y el botón de enviar para obtener la calificación del usuario y guardarla en el sistema. Me gustaría cambiar esto para que el código utilice clics en imágenes para obtener calificaciones de los usuarios. Hasta ahora tengo el siguiente código pero solo funciona para un botón de imagen. ¿Hay alguna manera de cambiar esto para obtener el resultado dependiendo de en qué imagen se hizo clic?

If (isset($_POST["flag_submit_x"])) ( //Realizar el proceso de calificación. )

¿Hay alguna manera de crear varios botones de imagen y en el código PHP detectar en qué botón de imagen se hace clic?

5 respuestas

Cambie el nombre al nombre de la matriz name="flag_submit" . Asigna un valor diferente a cada imagen y ahí lo tienes.

Léalo como una matriz en el lado de php: if (isset($_POST["flag_submit"])) .

O mejor sería recorrer if $_POST["flag_submit"] y encontrar todos los valores:

Foreach ($_POST["flag_submit"] as $valor) ( ​​echo $valor . " ha sido hecho clic."; ) T T T T

En su caso, no le importa el valor que envíe, todo lo que necesita es la clave que se utilizó para enviar el formulario porque solo habrá un conjunto de claves.

El primer código funciona bien para mí, cambie el nombre a nombre de matriz = "flag_submit". Asigna un valor diferente a cada imagen y ahí lo tienes.

Léelo como una matriz en el lado de php:

Si (isset($_POST["flag_submit"]))

Aquí tienes un truco que podría ayudar:

Creé una página de formulario HTML:

El script que presenta el formulario, show_post.php, dice:

Cuando hago clic en la primera imagen me sale:

Matriz ( => Matriz ( => 21))

Cuando hago clic en la segunda imagen me sale:

Matriz ( => Matriz ( => 15))

Funciona con Opera, IE y Mozilla.

Puede tener varios elementos con el mismo nombre, pero con diferentes significados, que puede contener imágenes, solo se enviará el valor de aquella en la que se hizo clic.

por conseguir información adicional ver especificación:

Los métodos POST y GET se utilizan principalmente para transferir parámetros de fuerzas. La principal diferencia entre los métodos POST y GET es la forma en que se transfiere la información. En el método GET, los parámetros se pasan a través de la barra de direcciones (URL), es decir. en el encabezado de la solicitud HTTP, mientras que en el método POST los parámetros se transmiten a través del cuerpo de la solicitud HTTP y no se reflejan de ninguna manera en Barra de dirección.

1. Botones - Etiqueta

La etiqueta crea botones en una página web y su acción se asemeja al resultado obtenido usando la etiqueta (con el parámetro tipo="botón | restablecer | enviar"). A diferencia de esta etiqueta, ofrece opciones avanzadas para crear botones. Por ejemplo, en dicho botón puede colocar cualquier elementos HTML, incluidas imágenes. Usando estilos, puedes definir la apariencia de un botón cambiando la fuente, el color de fondo, el tamaño y otros parámetros.

En teoría, la etiqueta debería ubicarse dentro del formulario establecido por el elemento. Sin embargo, los navegadores no muestran un mensaje de error y funcionan correctamente con la etiqueta si se encuentra sola. Sin embargo, si necesita enviar el resultado de hacer clic en el botón al servidor, debe colocarlo en un contenedor. La etiqueta de cierre es obligatoria.

Opciones:

deshabilitado: bloquea el acceso y la modificación del elemento.

tipo - tipo de botón

valor: el valor del botón que se enviará al servidor o se leerá mediante sprips.

Botón con texto

Parámetro DISABLED Bloquea el acceso y modificación del botón. En este caso, se muestra en gris y el usuario no puede activarlo. Además, dicho botón no puede enfocarse presionando la tecla Tab, usando el mouse o de otra manera. Sin embargo, el estado de este botón se puede cambiar mediante scripts.

Botón activo Botón inactivo

Parámetro TIPO Especifica el tipo de botón, que establece su comportamiento en el formulario. Por apariencia botones diferentes tipos no difieren en nada, pero cada uno de estos botones tiene sus propias funciones. Valor predeterminado: botón.

Argumentos:

botón - Botón normal.

restablecer: un botón para borrar los datos ingresados ​​​​del formulario y devolver los valores a su estado original.

Enviar: botón para enviar datos del formulario al servidor.

Borrar formulario Enviar formulario

Parámetro VALOR Especifica el valor del botón que se enviará al servidor. Se envía un par “nombre=valor” al servidor, donde el nombre se especifica mediante el parámetro nombre de etiqueta y el valor es el parámetro de valor. El significado puede coincidir con el texto del botón o ser independiente. El parámetro de valor también se utiliza para acceder a datos a través de scripts.

Enviar formulario

1.1. Botón (tipo de entrada=botón) 1.2. Botón con una imagen (tipo de entrada=imagen) Botón con una imagen

Los botones con imágenes son similares en acción al botón Enviar, pero representan una imagen. Para hacer esto, configure type=image y src="image.gif" .

Cuando el usuario hace clic en cualquier parte de la imagen, el formulario correspondiente se enviará al servidor con dos variables adicionales: sub_x y sub_y. Contienen las coordenadas del usuario que hace clic en la imagen. Programadores experimentados Puede notar que los nombres de las variables enviadas por el navegador en realidad contienen un punto en lugar de un guión bajo, pero PHP convierte automáticamente el punto en un guión bajo.

1.3. Botón de envío de formulario (tipo de entrada=enviar)

Sirve para enviar el formulario al script. Al crear un botón para enviar un formulario, debe especificar 2 atributos: tipo="enviar" y valor="Texto del botón" . Атрибут name необходим, если кнопка не одна, а несколько и все они созданы для !} diferentes operaciones, por ejemplo, los botones "Guardar", "Eliminar", "Editar", etc. Después de hacer clic en el botón, al script se le pasa la cadena nombre=texto del botón.

No se requiere script PHP.

1.4. Una serie de botones (enviar) para seleccionar la opción de acción 2. Botón de reinicio de formulario (Restablecer)

Cuando hace clic en el botón Restablecer, todos los elementos del formulario se establecerán en el estado especificado en los atributos predeterminados y el formulario no se enviará.

No se requiere script PHP.

3. Casilla de verificación

Las casillas de verificación presentan al usuario una serie de opciones y permiten una selección arbitraria (ninguna, una o más de ellas).

Blanco
Verde
Azul
Rojo
Negro

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

5. Campo de texto (texto)

Al crear un campo de texto normal tamaño tamaño y la longitud máxima permitida maxlength de caracteres, atributo de tipo toma el valor text . Si se especifica el parámetro de valor, el campo mostrará el valor especificado en la variable. Al crear un campo, no olvide especificar el nombre del campo, porque... este atributo es obligatorio.

6. Campo de contraseña

Exactamente igual que un campo de texto, excepto que los caracteres escritos por el usuario no se mostrarán en la pantalla.

7. Campo de texto oculto (oculto)

Le permite pasar cierta información de servicio al script sin mostrarla en la página.

8. Lista desplegable (seleccionar)

Una etiqueta es una lista desplegable o expandida y se pueden seleccionar una o más filas al mismo tiempo. Pero el valor se pasará al último botón seleccionado.

La lista comienza con etiquetas emparejadas. Las etiquetas le permiten definir el contenido de la lista y el parámetro de valor define el valor de la cadena. Si el parámetro seleccionado se especifica en la etiqueta, la fila se seleccionará inicialmente. El parámetro de tamaño especifica cuántas líneas ocupará la lista. Si el tamaño es 1, la lista será un menú desplegable. Si se especifica el atributo múltiple, se pueden seleccionar varios elementos de la lista. Pero este esquema prácticamente no se utiliza y con tamaño = 1 no tiene sentido.

Blanco Verde Azul Rojo Negro

Si necesita crear un menú desplegable con una secuencia predecible. Por ejemplo, una lista con años del 2000 al 2050. Luego se utiliza la siguiente técnica.

9. Campo de entrada de texto de varias líneas (área de texto)

Un campo de entrada de texto de varias líneas le permite enviar no solo una línea, sino varias a la vez. Si es necesario, puede especificar el atributo de solo lectura, que prohíbe editar, eliminar y cambiar el texto, es decir. el texto será de sólo lectura. Si es necesario que el texto se muestre inicialmente en un campo de entrada de varias líneas, debe colocarse entre las etiquetas.

Hay un parámetro de ajuste: configurar el ajuste de línea. Valores posibles:

off: desactiva el ajuste de línea;

virtuales: muestra saltos de línea, pero envía el texto tal como se ingresó;

físico: los saltos de línea se dejan en su forma original.

De forma predeterminada, la etiqueta crea un campo en blanco de 20 caracteres de ancho y 2 líneas.


Para que un campo de texto de varias líneas cumpla con el formato html (ajuste de línea usando la etiqueta
o
), luego use la función nl2br():

Línea 1 insertada originalmente Línea 2 insertada originalmente Línea 3 insertada originalmente

10. Botón para subir archivos (examinar)

Sirve para implementar la carga de archivos al servidor. Al crear un campo de texto, también debe especificar el tipo tipo de campos como "archivo".

Subir archivo:

FORMAS DE COMUNICAR EL NAVEGADOR CON EL SERVIDOR

Métodos proporcionados protocolo HTTP, Un poco. Este información importante. No hay otras maneras. En la práctica, se utilizan dos: GET es cuando se transfieren datos en la barra de direcciones, por ejemplo, cuando el usuario hace clic en un enlace. PUBLICAR: cuando hace clic en un botón del formulario.

OBTENER método

Para transferir datos OBTENER método no necesita crear un formulario en una página HTML (nadie le prohíbe usar formularios para solicitudes usando el método GET, pero esto es una estupidez), solo un enlace al documento con la adición de una cadena de consulta que puede verse como Los pares de variable = valor se combinan usando el símbolo & a para URL de la página a la línea se le añade un signo de interrogación "? "

Pero no es necesario utilizar pares clave=valor si necesita pasar solo una variable; para ello, debe escribir el VALOR (no el nombre) de la variable después del signo de interrogación.

La ventaja de pasar parámetros de esta manera es que los clientes que no pueden usar el método POST (por ejemplo, los motores de búsqueda) aún podrá simplemente pasar los parámetros al script siguiendo el enlace y recibir el contenido.

La desventaja es que simplemente cambiando los parámetros en la barra de direcciones el usuario puede cambiar el script de manera impredecible, esto crea un enorme agujero de seguridad cuando se combina con variables no definidas y Register_globals activado o alguien podría descubrir el valor de una variable importante. (como el ID de la sesión) con solo mirar en la pantalla del monitor.

Para acceder a páginas públicas pasando parámetros (funcionalidad aumentada)

Transferencia de información que no afecta el nivel de seguridad.

Para acceder a páginas protegidas con parámetros pasados

Para transmitir información que afecta el nivel de seguridad.

Para transmitir información que no puede ser modificada por el usuario (algunos transmiten el texto de consultas SQL).

método de publicación

Transferir datos método de publicación sólo es posible utilizando el formulario en página HTML. La principal diferencia entre POST y GET es que los datos no se transmiten en el encabezado de la solicitud sino en el cuerpo, por lo que el usuario no los ve. Sólo se puede modificar cambiando el propio formulario.

Ventaja :

Mayor seguridad y funcionalidad para solicitudes mediante formularios POST.

Defecto :

Menos disponibilidad.

¿Para qué deberías usarlo?

Transmitir una gran cantidad de información (texto, archivos...);

Para transmitir cualquier información importante;

Para restringir el acceso (por ejemplo, utilice sólo el formulario de navegación, una opción que no está disponible para todos los programas robóticos o capturadores de contenido).

Para qué no se debe utilizar:

Sin restricciones.

Subir archivos usando el método POST

PHP es capaz de aceptar un archivo descargado usando cualquier navegador. Esto hace posible descargar tanto texto como archivos binarios. Junto con la autenticación PHP y funciones para trabajar con sistema de archivos Te estás poniendo control total sobre quién puede cargar archivos y qué hacer con el archivo una vez cargado.

Se puede implementar una página de carga de archivos usando forma especial, que se parece a esto:

//Formulario para subir archivos Envía este archivo:

En el ejemplo anterior, "_URL_" debe reemplazarse con un enlace al script PHP. El campo oculto MAX_FILE_SIZE (el valor debe especificarse en bytes) debe preceder al campo de selección de archivo y su valor es el máximo tamaño permitido archivo recibido. También debe asegurarse de especificar enctype="multipart/form-data" en los atributos del formulario; de lo contrario, los archivos no se cargarán en el servidor.

Atención

La opción MAX_FILE_SIZE es una recomendación del navegador, incluso si PHP también verificara esta condición. Evitar esta limitación del navegador es bastante fácil, por lo que no debes confiar en todos los archivos. tamaño más grande será bloqueado usando esta característica. Sin embargo, Limitación de PHP acerca de talla máxima imposible moverse. Debe agregar una variable del formato MAX_FILE_SIZE de todos modos, ya que evita que los usuarios esperen ansiosamente mientras transfieren archivos grandes, sólo para descubrir que el archivo es demasiado grande y la transferencia realmente falló.

¿Cómo definir un método de solicitud?

Directamente:

Getenv("REQUEST_METHOD");

devolverá GET o POST.

¿Qué método se debe utilizar?

Si el formulario se utiliza para solicitar alguna información, por ejemplo durante una búsqueda, entonces se debe enviar mediante el método GET. Para poder actualizar la página, puede marcarla como favorita o enviar el enlace a un amigo.

Si, como resultado del envío de un formulario, los datos se registran o modifican en el servidor, entonces se deben enviar mediante el método POST y, después de procesar el formulario, es imperativo redirigir el navegador mediante el método GET. Además, es posible que necesite POST si necesita realizar una transferencia gran volumen datos (para GET es muy limitado), y también si no debe "brillar" los datos transmitidos en la barra de direcciones (al ingresar su nombre de usuario y contraseña, por ejemplo).

En cualquier caso, después de procesar el POST, siempre se debe redirigir el navegador a alguna página, incluso a la misma, pero sin los datos del formulario, para que cuando se actualice la página no se vuelvan a registrar.

¿Cómo transferir datos a otro archivo directamente desde el cuerpo de un programa PHP usando los métodos GET y POST? Un ejemplo para demostrar el envío de datos utilizando los métodos POST y GET simultáneamente y recibiendo una respuesta del servidor.

Última actualización: 1/11/2015

Una de las principales formas en que un sitio web transmite datos es mediante el procesamiento de formularios. Las formas representan elementos especiales Marcado HTML que contiene varios elementos aporte - campos de texto, botones, etc Y con la ayuda de estos formularios podemos ingresar algunos datos y enviarlos al servidor. Y el servidor ya está procesando estos datos.

La creación de formularios consta de los siguientes aspectos:

    Crear un elemento en el marcado HTML

    Agregue uno o más campos de entrada a este elemento

    Configuración del método de transferencia de datos: GET o POST

    Configuración de la dirección a la que se enviarán los datos introducidos

Entonces vamos a crear nuevo uniforme. Para ello definimos archivo nuevo form.php, en el cual colocaremos el siguiente contenido:

Iniciar sesión en el sitio Iniciar sesión:

Contraseña:

Atributo acción="login.php" elemento de formulario indica que los datos del formulario serán procesados ​​por el script iniciar sesión.php, que se ubicará con el archivo formulario.php en una carpeta. Y el atributo método="POST" indica que el método POST se utilizará como método de transferencia de datos.

Ahora creemos un archivo. iniciar sesión.php, que tendrá el siguiente contenido:

Para obtener los datos del formulario, se utiliza la variable global $_POST. ella representa matriz asociativa datos transferidos mediante el método POST. Usando las claves podemos obtener los valores enviados. Las claves de esta matriz son los valores de los atributos de nombre de los campos de entrada del formulario.

Porque atributo de nombre el campo de entrada de inicio de sesión tiene el valor login(), luego en la matriz $_POST el valor de este campo representará la clave de "iniciar sesión": $_POST["login"]

Y dado que puede haber situaciones en las que el campo de entrada no se configurará, por ejemplo, al acceder directamente al script: http://localhost:8080/login.php. En este caso, es recomendable comprobar la disponibilidad de los datos utilizando la función isset() antes de procesarlos. Y si la variable está configurada, entonces la función isset() devolverá verdadero.

Ahora podemos acceder al formulario:

Y cuando se presiona el botón, los datos ingresados ​​se enviarán al script mediante el método POST. iniciar sesión.php:

No es necesario enviar los datos del formulario a otro script; puede procesar los datos del formulario en el mismo archivo de formulario. Para hacer esto, cambiemos el archivo. formulario.php de la siguiente manera:

Iniciar sesión en el sitio Iniciar sesión:

Contraseña:

Seguridad de datos

La seguridad de los datos es de gran importancia en PHP. Veamos algunos mecanismos simples que pueden mejorar la seguridad de nuestro sitio web.

Pero primero, tomemos el formulario del tema anterior e intentemos ingresar algunos datos en él. Por ejemplo, ingresemos "alerta (hola);" en el campo de inicio de sesión y "contraseña" en el campo de contraseña:

Después de enviar los datos a marcado html voluntad código implementado javascript que muestra un cuadro de mensaje.

Para evitar problemas similares Para estar seguro, debes usar la función htmlentities():

If(isset($_POST["iniciar sesión"]) && isset($_POST["contraseña"]))( $iniciar sesión=htmlentities($_POST["iniciar sesión"]); $contraseña = htmlentities($_POST["contraseña" ]); echo "Su inicio de sesión: $iniciar sesión
Su contraseña: $contraseña"; )

E incluso después de entrar código HTML o javascript, se escaparán todas las etiquetas y obtendremos el siguiente resultado:

Otra función: la función strip_tags() le permite excluir completamente las etiquetas html:

If(isset($_POST["iniciar sesión"]) && isset($_POST["contraseña"]))( $iniciar sesión=strip_tags($_POST["iniciar sesión"]); $contraseña = strip_tags($_POST["contraseña" ]); echo "Su inicio de sesión: $iniciar sesión
Su contraseña: $contraseña"; )

El resultado de su operación con la misma entrada será la siguiente salida.




Arriba