obtenir un supprimer une variable PHP
Si je publie un HTTP SUPPRIMER, comment puis-je accéder au PHP corps/variable? Je sais que si vous êtes à la délivrance de la POSTE, vous pouvez y accéder via $_POST['varname']
, mais comment y accéder si c'est une SUPPRIMER les POST? Dire la varname ici est ID.
- C'est un double de la stackoverflow.com/questions/1405505/... mais je ne sais pas si les réponses vous aider.
- Vérifié que, ne m'aide pas
- Vous pouvez obtenir de variable dans
$_GET
. Si la méthode n'est pasGET
etPOST
demande sera envoyéeGET
méthode - J'étais à moitié à droite avec le
parse_str
idée, voir ma réponse pour un moyen facile d'analyser laPUT
etDELETE
les variables de la requête HTTP du corps. Il y a des limites toutefois.
Vous devez vous connecter pour publier un commentaire.
Vous pourriez avoir à regarder à lire les données directement à partir de la
php://input
flux.Je connait c'est de cette façon que vous avez à faire pour
PUT
demandes et rapide recherche sur google indique que la méthode fonctionne pourDELETE
ainsi.Voir ici pour un exemple. Le commentaire ici dit que cette méthode fonctionne pour
DELETE
aussi.Voici un intéressant exemple de code qui va l'aider (à partir de sfWebRequest.class.php symfony 1.4.9 cadre modifié légèrement par souci de concision):
Cet exemple de code met le
PUT
ouDELETE
paramètres de la requête dans le$request_vars
tableau. Une limitation semble être que la forme (si vous utilisez un autre le header content-type) doit être "application/x-www-form-urlencoded', certains rapide recherche sur google confirme ce.file_get_contents('php://input')
doit toujours donner le corps de la requête. Notez qu'il peut être lisible qu'une seule fois. La grande question est de savoir si une demande de SUPPRESSION peut contenir un corps, qui semble être quelque chose d'un question sans réponse, mais probablement travail.Je dirais que l'envoi de l'id dans le corps est un peu Agité mais. L'entité en question doit être visée par l'URL que
example.com/foo/42
, donc une demande de SUPPRESSION doit direDELETE /foo/42
, pasDELETE /foo
avec l'id dans le corps de la requête.Comme indiqué par les personnes ci-dessus, PHP ne pas avoir une variable globale pour accéder rapidement à des données dans un
DELETE
demande. Pourquoi, je ne sais pas; il n'a probablement pas été aussi utilisé commeGET
etPOST
historiquement.Vous devez vérifier le type de demande à l'aide de
$_SERVER['REQUEST_METHOD']
et ensuite récupérer la totalité du corps à l'aide de laphp://input
flux et extraire vos données à partir de ce. Vous pouvez créer une fonction qui fait cela à chaque demande et l'enregistre dans une variable globale nommée$_DELETE
si vous voulez garder un look similaire à votre code (en supposant que vous utilisez$_POST
et$_GET
). Vous pourriez même faire un patch sur votre PHP pour faire cela, et de compiler votre propre version de PHP, mais ce serait bien sûr confondre les gens qui essaient d'exécuter votre code sur une autre installation de PHP 🙂Je ne pense pas que vous pouvez accéder en un disponible dans le monde entier tableau, mais vous pouvez déterminer la demande typer, voir ici: Détecter le type de la requête en PHP (GET, POST, PUT ou DELETE)