Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/03/2009, 11:46
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: diferencia entre $_REQUEST y post y get

Uniendo los dos posts anteriores POST y GET se parecen en que ambos son tipos de request http. REQUEST no lo es. $_POST, $_GET y $_REQUEST son matrices relacionadas con el tipo de request.

POST consiste en datos "ocultos" (porque el cliente no los ve) enviados generalmente por un formulario cuyo method es post. Decir que el método no es de html, sino es el tipo de request http que se hace a X script. La ventaja de usar POSt es que estos datos necesitan un medio para poder ser enviados (no basta con escribir la url del script). Es ideal para formularios. Para recoger estos datos se usa el array superglobal $_POST.

GET es un tipo de request que lleva los datos de forma "visible" al cliente. El medio de envio es la URL. GET es el tipo de request predeterminado. Al escribir una url en la barra de direcciones y pulsar enter, el request hacia esa url es de tipo GET. Para recoger los datos que llegan en la url se usa $_GET.

REQUEST no es un tipo de request. $_REQUEST es una matriz superglobal que resulta de la unión de $_GET, $_POST y $_COOKIE (OJO, de los arreglos, no de los métodos). $_REQUEST siempre estará disponible (cualquiera sea el tipo de request http). Si te das cuenta, las tres matrices que contiene engloba $_REQUEST contienen datos de entrada (datos que se envian del cliente al servidor. Otras matrices como $_SERVER o $_ENV contienen datos que están en el servidor {salida}). De ahí su nombre. En síntesis $_REQUEST son los datos disponibles en el script luego de la petición (request) http.

Algunos puntos importantes son que:
  • $_GET no es exclusiva de un request http tipo GET. Si yo llamo a script.php?foo=var usando un request POST, entonces tendré podré accesar a los datos enviados por post usando $_POST, pero tambiénm podré usar $_GET para extraer la variable de url foo.
  • $_POST sí es exclusiva de los requests http tipo POST.
  • No coincido con Carxl en que $_REQUEST no sea recomendado. Como ya se dijo, contiene datos que el cliente envia al momento de la petición, y hay muchas situaciones en las que sólo importa el dato enviado y no el método de envío usado.
Espero haya aclarado un poco tu duda tomasy, no confundas las matrices $_GET, $_POST y $_REQUEST con los requests http get y post.



P.D.: request http = peticion http