php - valor - Entre $_REQUEST, $_GET y $_POST, ¿cuál es el más rápido?
recibir variables get php (14)
$ _GET recupera variables de la cadena de consulta o su URL.>
$ _POST recupera variables de un método POST, como (generalmente) formularios.
$ _REQUEST es una fusión de $ _GET y $ _POST donde $ _POST anula $ _GET. Es bueno usar $ _REQUEST en formularios autofuentes para validaciones.
¿Cuál de estos códigos será más rápido?
$temp = $_REQUEST[''s''];
o
if (isset($_GET[''s''])) {
$temp = $_GET[''s''];
}
else {
$temp = $_POST[''s''];
}
$ _GET recupera variables de la cadena de consulta o su URL.>
$ _POST recupera variables de un método POST, como (generalmente) formularios.
$ _REQUEST es una fusión de $ _GET y $ _POST donde $ _POST anula $ _GET. Es bueno usar $ _REQUEST en formularios autofuentes para validaciones.
Estás optimizando prematuramente. Además, realmente debe pensar si GET debe usarse para las cosas que está PUBLICANDO, por razones de seguridad.
No te preocupes Pero aún debe usar la segunda solución (más una comprobación adicional para ninguna de esas variables existentes), porque hay problemas de seguridad con $_REQUEST
(ya que $_GET
y $_POST
no son las únicas fuentes para esa matriz).
Hubo una publicación sobre los problemas con $_REQUEST
ayer, creo. Déjame ir a buscarlo.
EDITAR : Oh, bueno, no directamente una publicación, pero aquí está de todos modos: http://kuza55.blogspot.com/2006/03/request-variable-fixation.html
Solo uso _GET o _POST. Prefiero tener el control
Lo que no me gusta de cualquier fragmento de código en el OP es que descartan la información sobre qué método HTTP se utilizó. Y esa información es importante para la desinfección de la entrada.
Por ejemplo, si una secuencia de comandos acepta datos de un formulario que se va a ingresar en la base de datos, entonces es mejor usar POST ( use GET solo para acciones idempotentes ). Pero si el script recibe los datos de entrada a través del método GET, entonces debería (normalmente) rechazarse. Para mí, tal situación podría justificar la escritura de una violación de seguridad en el registro de errores, ya que es una señal de que alguien está probando algo.
Con cualquier fragmento de código en el OP, esta desinfección no sería posible.
Sugeriría usar $_POST
y $_GET
explícitamente.
El uso de $ _REQUEST debería ser innecesario con el diseño del sitio adecuado de todos modos, y viene con algunas desventajas, como dejarlo abierto a ataques CSRF/XSS
más sencillos y otras tonterías que provienen del almacenamiento de datos en la URL.
La diferencia de velocidad debe ser mínima en ambos sentidos.
Usaría el segundo método ya que es más explícito. De lo contrario, no sabrá de dónde provienen las variables.
¿Por qué necesita comprobar tanto GET como POST de todos modos? Sin duda, usar uno u otro solo tiene más sentido.
Use SOLICITUD. A nadie le importa la velocidad de una operación tan simple, y es un código mucho más limpio.
Yo usaría $_POST
, y $_GET
porque de manera diferente a $_REQUEST
su contenido no está influenciado por variables_order
.
Cuándo usar $_POST
y $_GET
depende del tipo de operación que se esté ejecutando. Una operación que cambia los datos manejados desde el servidor debe hacerse a través de una solicitud POST, mientras que las otras operaciones deben realizarse a través de una solicitud GET. Para dar un ejemplo, una operación que borre una cuenta de usuario no se debe ejecutar directamente después de que el usuario haga clic en un enlace, mientras que ver una imagen se puede hacer a través de un enlace.
Yo uso esto,
$request = (count($_REQUEST) > 1)?$_REQUEST:$_GET;
la declaración valida si $ _REQUEST tiene más de un parámetro (el primer parámetro en $ _REQUEST será la solicitud uri que se puede usar cuando sea necesario, algunos paquetes PHP no devolverán $ _GET así que verifique si es más de 1 para $ _GET, By por defecto, será $ _POST.
no importa la velocidad cuando recuperas datos usando $ _GET, $ _ POST o $ _REQUEST
pero importa que no se puede usar $_GET
alternativa de $_POST
en algún caso.
Cuando ??
- cuando quieras subir un archivo
- cuando no lo haga, no mostrará los datos en url.
GET
también tiene límites en la cantidad de información para enviar. La limitación es de aproximadamente 2000 caracteres.
Otra cosa es que hay pocos casos cuando no puede recuperar datos usando $_POST
Cuando ?
- cuando los datos se pasan en URL.
Para el servicio de descanso
`GET` - Provides a read only access to a resource.
`PUT` - Used to create a new resource.
no hay nada de malo en usar $_REQUEST
.
Pero la manera de hacerlo es comprobar $ _SERVER [''REQUEST_METHOD''] explícitamente, no confiar en que $ _POST esté vacío para un GET.
$_REQUEST
, de forma predeterminada, contiene los contenidos de $_GET
, $_POST
y $_COOKIE
.
Pero solo es un valor predeterminado, que depende de variables_order
; y no estoy seguro de que quiera trabajar con cookies.
Si tuviera que elegir, probablemente no usaría $_REQUEST
, y elegiría $_GET
o $_POST
, dependiendo de lo que mi aplicación debería hacer (es decir, una u otra, pero no ambas) : en términos generales:
- Debería usar
$_GET
cuando alguien está solicitando datos de su aplicación. - Y debe usar
$_POST
cuando alguien está presionando (insertando, actualizando o eliminando) datos en su aplicación.
De cualquier manera, no habrá mucha diferencia en las actuaciones: la diferencia será insignificante, en comparación con lo que hará el resto del guión.
GET vs. POST
1) Tanto GET como POST crean una matriz (por ejemplo, matriz (clave => valor, clave2 => valor2, clave3 => valor3, ...)). Esta matriz contiene pares de clave / valor, donde las claves son los nombres de los controles de formulario y los valores son los datos de entrada del usuario.
2) Tanto GET como POST se tratan como $ _GET y $ _POST. Estos son superglobales, lo que significa que siempre son accesibles, independientemente del alcance, y puede acceder a ellos desde cualquier función, clase o archivo sin tener que hacer nada especial.
3) $ _GET es una matriz de variables pasadas al script actual a través de los parámetros de URL.
4) $ _POST es una matriz de variables pasadas al script actual a través del método HTTP POST.
Cuándo usar GET?
La información enviada desde un formulario con el método GET es visible para todos (todos los nombres y valores de variables se muestran en la URL). GET también tiene límites en la cantidad de información para enviar. La limitación es de aproximadamente 2000 caracteres. Sin embargo, debido a que las variables se muestran en la URL, es posible marcar la página. Esto puede ser útil en algunos casos.
GET se puede usar para enviar datos no confidenciales.
Nota: ¡GET NUNCA se debe usar para enviar contraseñas u otra información sensible!
Cuándo usar POST?
La información enviada desde un formulario con el método POST es invisible para otros (todos los nombres / valores están incrustados en el cuerpo de la solicitud HTTP) y no tiene límites en la cantidad de información para enviar.
Además, POST admite funcionalidades avanzadas, como compatibilidad con entradas binarias de varias partes, mientras se cargan archivos en el servidor.
Sin embargo, como las variables no se muestran en la URL, no es posible marcar la página.
if (isset($_GET[''s''])) {
$temp = $_GET[''s''];
}
else {
$temp = $_POST[''s''];
}
Úselo porque es más seguro y no hará una diferencia de velocidad notable