Si estoy emitiendo un HTTP DELETE, ¿cómo puedo acceder al cuerpo/variable de PHP? Sé que si está emitiendo POST, puede acceder a él a través del $_POST['varname']
, pero ¿cómo puede acceder a él si se trata de un DELETE no POST? Digamos que el nombre var aquí es ID.obtener una variable de eliminación PHP
Respuesta
Puede que tenga que leer los datos directamente desde la secuencia php://input
.
I knwo esta es la forma en que tiene que hacerlo para PUT
solicitudes y algunos rápidos de google indican que el método también funciona para DELETE
.
Ver here y here para ejemplos. El comentario here dice que este método también funciona para DELETE
.
Aquí es un ejemplo de código interesante que ayudará (de sfWebRequest.class.php del framework Symfony 1.4.9 alterado ligeramente por razones de brevedad):
public function initialize(...)
{
... code ...
$request_vars = array();
if (isset($_SERVER['REQUEST_METHOD']))
{
switch ($_SERVER['REQUEST_METHOD'])
{
case 'PUT':
if ('application/x-www-form-urlencoded' === $this->getContentType())
{
parse_str($this->getContent(), $request_vars);
}
break;
case 'DELETE':
if ('application/x-www-form-urlencoded' === $this->getContentType())
{
parse_str($this->getContent(), $request_vars);
}
break;
}
... more code ...
}
public function getContent()
{
if (null === $this->content)
{
if (0 === strlen(trim($this->content = file_get_contents('php://input'))))
{
$this->content = false;
}
}
return $this->content;
}
este ejemplo de código pone los parámetros de la petición o DELETE
PUT
en la matriz $request_vars
. Una limitación parece ser que el formulario (si está utilizando otro encabezado de tipo de contenido) debe ser 'application/x-www-form-urlencoded', algo que Google lo confirma rápidamente.
¿Y entonces, después de hacer esto, puedo acceder a él a través de $ request_vars ['id']? – aherlambang
Sí, esencialmente. No podrá usar el código tal como es porque es parte de una clase grande, pero es la plantilla que busca. – xzyfer
no creo que se puede acceder a él a nivel mundial en una gama disponible, pero se puede determinar la petición Typer, ver aquí: Detecting request type in PHP (GET, POST, PUT or DELETE)
Puedo detectarlo bien, quiero obtener la var. – aherlambang
file_get_contents('php://input')
siempre te dará el cuerpo de la petición completa. Tenga en cuenta que puede ser legible solo una vez. La pregunta más importante es si una solicitud DELETE puede contener un cuerpo, que parece ser algo así como unanswered question, pero funcionará probablemente.
Yo diría que enviar el ID en el cuerpo es algo RESTless sin embargo. La entidad en cuestión debe ser referida por la URL como example.com/foo/42
, por lo que una solicitud DELETE debe decir DELETE /foo/42
, no DELETE /foo
con la identificación en el cuerpo de la solicitud.
¿cómo obtengo el nombre de la variable específica? ¿Tengo que string analizarlo? – aherlambang
@Equ [Sí] (http://php.net/parse_str). – deceze
Según lo expresado por las personas de arriba, PHP hace no tiene una variable global para acceder rápidamente a los datos en una solicitud DELETE
. Por qué, no sé; probablemente no ha sido tan usado como GET
y POST
históricamente.
Debería verificar el tipo de solicitud usando $_SERVER['REQUEST_METHOD']
y luego recuperar todo el cuerpo utilizando la corriente php://input
y extraer sus datos de eso. Puede crear una función que haga esto en cada solicitud y guardarla en una variable global llamada $_DELETE
si desea mantener un aspecto similar a su código (suponiendo que usa $_POST
y $_GET
). Incluso puedes parchar tu PHP para hacer esto y compilar tu propia versión de PHP, pero eso por supuesto confundiría a las personas que intentan ejecutar tu código en otra instalación de PHP :)
- 1. PHP Obtener variable al mismo valor de
- 2. Obtener una variable POST
- 3. Cuándo usar una variable variable en PHP?
- 4. ¿Una función de directorio de eliminación recursiva para PHP?
- 5. Creando una función de eliminación recursiva (en php)
- 6. PHP eliminación de un carácter en una cadena
- 7. Función de eliminación recursiva de PHP
- 8. eliminación de personajes extraños de PHP cadena
- 9. PHP eliminar "referencia" de una variable.
- 10. PHP incluye dentro de una variable
- 11. Eliminación de enlaces simbólicos en PHP
- 12. ¿Cómo obtener anotaciones de una variable miembro?
- 13. Obtener el nombre de una variable local
- 14. Nombre de variable de variable de objeto PHP?
- 15. ¿Hay alguna manera de obtener el tamaño de una variable de PHP en bytes?
- 16. PHP - Variable dentro de la variable?
- 17. Usar una variable PHP en JQuery
- 18. Completando dinámicamente una variable estática en PHP
- 19. Cómo obtener los datos de función de JavaScript en una variable PHP
- 20. Eliminación segura con PHP 5.3.x
- 21. PHP: hacer una copia de una variable de referencia
- 22. ¿Cómo eliminar una variable de una matriz sesión de PHP
- 23. Cómo mostrar una variable php en html
- 24. php - elementos de la eliminación de una matriz que tener valores duplicados en una clave especificada
- 25. variable de acceso PHP en JavaScript
- 26. Reemplazo de variable de PHP
- 27. ¿Cómo ejecutar y obtener el contenido de un archivo .php en una variable?
- 28. PHP cómo obtener el valor de la matriz si la clave está en una variable
- 29. cómo obtener el tamaño del contenido de una variable en PHP
- 30. Detectando si una variable de PHP es una referencia/referencia
Es un duplicado de http: // stackoverflow. com/questions/1405505/accessing-delete-from-jquery-in-php, pero no sé si las respuestas lo ayudan. –
Revisado, no me ayuda – aherlambang
Puede obtener la variable en '$ _GET'. Si el método no es 'GET' y' POST' la solicitud se enviará como método 'GET' –