method ejemplo _request _post php request

ejemplo - Detección del tipo de solicitud en PHP(GET, POST, PUT o DELETE)



php request method (11)

¿Cómo puedo detectar qué tipo de solicitud se utilizó (GET, POST, PUT o DELETE) en PHP?


Es muy simple, simplemente use $ _SERVER [''REQUEST_METHOD''];

Ejemplo:

<?php $method = $_SERVER[''REQUEST_METHOD'']; switch ($method) { case ''GET'': //Here Handle GET Request break; case ''POST'': //Here Handle POST Request break; case ''DELETE'': //Here Handle DELETE Request break; case ''PUT'': //Here Handle PUT Request break; } ?>


Cuando se solicita un método, tendrá una array . Así que simplemente consulte con count() .

$m=[''GET''=>$_GET,''POST''=>$_POST]; foreach($m as$k=>$v){ echo count($v)? $k.'' was requested.'':null; }

3v4l.org/U51TE


Dado que se trata de REST, solo obtener el método de solicitud del servidor no es suficiente. También necesita recibir parámetros de ruta RESTful. La razón para separar los parámetros RESTful y los parámetros GET / POST / PUT es que un recurso debe tener su propia URL única para la identificación.

Aquí hay una forma de implementar rutas RESTful en PHP usando Slim:

https://github.com/codeguy/Slim

$app = new /Slim/Slim(); $app->get(''/hello/:name'', function ($name) { echo "Hello, $name"; }); $app->run();

Y configurar el servidor en consecuencia.

Aquí hay otro ejemplo usando AltoRouter:

https://github.com/dannyvankooten/AltoRouter

$router = new AltoRouter(); $router->setBasePath(''/AltoRouter''); // (optional) the subdir AltoRouter lives in // mapping routes $router->map(''GET|POST'',''/'', ''home#index'', ''home''); $router->map(''GET'',''/users'', array(''c'' => ''UserController'', ''a'' => ''ListAction'')); $router->map(''GET'',''/users/[i:id]'', ''users#show'', ''users_show''); $router->map(''POST'',''/users/[i:id]/[delete|update:action]'', ''usersController#doAction'', ''users_do'');


En core php puedes hacer esto:

<?php $method = $_SERVER[''REQUEST_METHOD'']; switch ($method) { case ''GET'': //Here Handle GET Request echo ''You are using ''.$method.'' Method''; break; case ''POST'': //Here Handle POST Request echo ''You are using ''.$method.'' Method''; break; case ''PUT'': //Here Handle PUT Request echo ''You are using ''.$method.'' Method''; break; case ''PATCH'': //Here Handle PATCH Request echo ''You are using ''.$method.'' Method''; break; case ''DELETE'': //Here Handle DELETE Request echo ''You are using ''.$method.'' Method''; break; case ''COPY'': //Here Handle COPY Request echo ''You are using ''.$method.'' Method''; break; case ''OPTIONS'': //Here Handle OPTIONS Request echo ''You are using ''.$method.'' Method''; break; case ''LINK'': //Here Handle LINK Request echo ''You are using ''.$method.'' Method''; break; case ''UNLINK'': //Here Handle UNLINK Request echo ''You are using ''.$method.'' Method''; break; case ''PURGE'': //Here Handle PURGE Request echo ''You are using ''.$method.'' Method''; break; case ''LOCK'': //Here Handle LOCK Request echo ''You are using ''.$method.'' Method''; break; case ''UNLOCK'': //Here Handle UNLOCK Request echo ''You are using ''.$method.'' Method''; break; case ''PROPFIND'': //Here Handle PROPFIND Request echo ''You are using ''.$method.'' Method''; break; case ''VIEW'': //Here Handle VIEW Request echo ''You are using ''.$method.'' Method''; break; Default: echo ''You are using ''.$method.'' Method''; break; } ?>


La detección del método HTTP o el llamado REQUEST METHOD se puede hacer usando el siguiente fragmento de código.

$method = $_SERVER[''REQUEST_METHOD''] if ($method == ''POST'') { // Method is POST } elseif ($method == ''GET'') { // Method is GET } elseif ($method == ''PUT'') { // Method is PUT } elseif ($method == ''DELETE'') { // Method is DELETE } else { // Method unknown }

También puede hacerlo usando un switch si lo prefiere sobre la instrucción if-else .

Si se requiere un método distinto de GET o POST en un formulario html, a menudo se resuelve utilizando un campo oculto en el formulario.

<!-- DELETE method --> <form action='''' method=''POST''> <input type="hidden" name''_METHOD'' value="DELETE"> </form> <!-- PUT method --> <form action='''' method=''POST''> <input type="hidden" name''_METHOD'' value="PUT"> </form>

Para obtener más información sobre los métodos HTTP, quisiera referirme a la siguiente pregunta de :

El protocolo HTTP PUT y DELETE y su uso en PHP


Mediante el uso

$_SERVER[''REQUEST_METHOD'']

Ejemplo

if ($_SERVER[''REQUEST_METHOD''] === ''POST'') { // The request is using the POST method }

Para más detalles, consulte la documentación de la variable $ _SERVER .


Puede obtener cualquier dato de cadena de consulta, por ejemplo, www.example.com?id=2&name=r

Debe obtener datos utilizando $_GET[''id''] o $_REQUEST[''id''] .

Los datos de publicación se refieren a la forma <form action='''' method=''POST''> debe usar $_POST o $_REQUEST .



REST en PHP se puede hacer bastante simple. Cree http://example.com/test.php (descrito a continuación). Use esto para llamadas REST, por ejemplo, http://example.com/test.php/testing/123/hello . Esto funciona con Apache y Lighttpd fuera de la caja, y no se necesitan reglas de reescritura.

<?php $method = $_SERVER[''REQUEST_METHOD'']; $request = explode("/", substr(@$_SERVER[''PATH_INFO''], 1)); switch ($method) { case ''PUT'': do_something_with_put($request); break; case ''POST'': do_something_with_post($request); break; case ''GET'': do_something_with_get($request); break; default: handle_error($request); break; }


También podemos usar el input_filter para detectar el método de solicitud y al mismo tiempo proporcionar seguridad a través del saneamiento de entrada.

$request = filter_input(INPUT_SERVER, ''REQUEST_METHOD'', FILTER_SANITIZE_ENCODED);


$request = new /Zend/Http/PhpEnvironment/Request(); $httpMethod = $request->getMethod();

De esta manera también puede lograr en zend framework 2 también. Gracias.