Que se passe-t-il si vous accédez à une URL de style GET avec une demande POST?
Question
Supposons que j'ai une page appelée display.php
et que l'utilisateur visualise display.php? page = 3
. Je souhaite autoriser l'utilisateur à effectuer une action telle que voter via une demande POST, puis à le ramener à la page où il se trouvait. Donc, si je fais une demande POST à ?? display.php? Page = 3
, les informations de page seront-elles également disponibles pour le script?
La solution
La réponse simple est "oui". Vous pouvez utiliser une URL de style GET en tant qu'URL de soumission pour un formulaire POST. PHP disposera des informations POST et GET de la manière habituelle lors de l'envoi du formulaire.
Cela ne veut pas dire que vous devriez le faire, mais que cela fonctionnera.
Autres conseils
En PHP, vous pouvez obtenir des variables de requête à partir des tableaux globaux spéciaux:
En PHP, vous pouvez obtenir des variables de requête à partir des tableaux globaux spéciaux:
<?php
//vote.php
$page_number = (int) En PHP, vous pouvez obtenir des variables de requête à partir des tableaux globaux spéciaux:
En PHP, vous pouvez obtenir des variables de requête à partir des tableaux globaux spéciaux:
<*>
On dirait que vous recherchez "Rediriger après le message", je vous suggère de séparer display.php et vote.php en fichiers séparés. Vote ressemble à ceci:
<*>
Notez que le fait d'accepter aveuglément des données de formulaire non authentifiées peut être dangereux pour votre application.
Modifier: Certaines personnes considèrent qu'il est mauvais d'utiliser $ _REQUEST pour gérer les deux cas. Le risque est que vous souhaitiez signaler une erreur si vous recevez un message GET alors que vous vous attendez à un POST. En règle générale, GET est réservé à l'affichage et POST à ??la modification (opérations de création / mise à jour / suppression). Que cela soit vraiment un problème dépend de votre application.
GET['page'] (for GET requests)
En PHP, vous pouvez obtenir des variables de requête à partir des tableaux globaux spéciaux:
<*>
On dirait que vous recherchez "Rediriger après le message", je vous suggère de séparer display.php et vote.php en fichiers séparés. Vote ressemble à ceci:
<*>
Notez que le fait d'accepter aveuglément des données de formulaire non authentifiées peut être dangereux pour votre application.
Modifier: Certaines personnes considèrent qu'il est mauvais d'utiliser $ _REQUEST pour gérer les deux cas. Le risque est que vous souhaitiez signaler une erreur si vous recevez un message GET alors que vous vous attendez à un POST. En règle générale, GET est réservé à l'affichage et POST à ??la modification (opérations de création / mise à jour / suppression). Que cela soit vraiment un problème dépend de votre application.
POST['page'] (for POST requests)
En PHP, vous pouvez obtenir des variables de requête à partir des tableaux globaux spéciaux:
<*>
On dirait que vous recherchez "Rediriger après le message", je vous suggère de séparer display.php et vote.php en fichiers séparés. Vote ressemble à ceci:
<*>
Notez que le fait d'accepter aveuglément des données de formulaire non authentifiées peut être dangereux pour votre application.
Modifier: Certaines personnes considèrent qu'il est mauvais d'utiliser $ _REQUEST pour gérer les deux cas. Le risque est que vous souhaitiez signaler une erreur si vous recevez un message GET alors que vous vous attendez à un POST. En règle générale, GET est réservé à l'affichage et POST à ??la modification (opérations de création / mise à jour / suppression). Que cela soit vraiment un problème dépend de votre application.
REQUEST['page'] (for either)
On dirait que vous recherchez "Rediriger après le message", je vous suggère de séparer display.php et vote.php en fichiers séparés. Vote ressemble à ceci:
<*>
Notez que le fait d'accepter aveuglément des données de formulaire non authentifiées peut être dangereux pour votre application.
Modifier: Certaines personnes considèrent qu'il est mauvais d'utiliser $ _REQUEST pour gérer les deux cas. Le risque est que vous souhaitiez signaler une erreur si vous recevez un message GET alors que vous vous attendez à un POST. En règle générale, GET est réservé à l'affichage et POST à ??la modification (opérations de création / mise à jour / suppression). Que cela soit vraiment un problème dépend de votre application.
REQUEST['page'];
vote_for_page($page_number); //your voting logic
header('Location: display.php?page=' . $page_number); //return to display.php
On dirait que vous recherchez "Rediriger après le message", je vous suggère de séparer display.php et vote.php en fichiers séparés. Vote ressemble à ceci:
<*>
Notez que le fait d'accepter aveuglément des données de formulaire non authentifiées peut être dangereux pour votre application.
Modifier: Certaines personnes considèrent qu'il est mauvais d'utiliser $ _REQUEST pour gérer les deux cas. Le risque est que vous souhaitiez signaler une erreur si vous recevez un message GET alors que vous vous attendez à un POST. En règle générale, GET est réservé à l'affichage et POST à ??la modification (opérations de création / mise à jour / suppression). Que cela soit vraiment un problème dépend de votre application.
GET['page'] (for GET requests)
En PHP, vous pouvez obtenir des variables de requête à partir des tableaux globaux spéciaux:
<*>
On dirait que vous recherchez "Rediriger après le message", je vous suggère de séparer display.php et vote.php en fichiers séparés. Vote ressemble à ceci:
<*>
Notez que le fait d'accepter aveuglément des données de formulaire non authentifiées peut être dangereux pour votre application.
Modifier: Certaines personnes considèrent qu'il est mauvais d'utiliser $ _REQUEST pour gérer les deux cas. Le risque est que vous souhaitiez signaler une erreur si vous recevez un message GET alors que vous vous attendez à un POST. En règle générale, GET est réservé à l'affichage et POST à ??la modification (opérations de création / mise à jour / suppression). Que cela soit vraiment un problème dépend de votre application.
POST['page'] (for POST requests)
En PHP, vous pouvez obtenir des variables de requête à partir des tableaux globaux spéciaux:
<*>
On dirait que vous recherchez "Rediriger après le message", je vous suggère de séparer display.php et vote.php en fichiers séparés. Vote ressemble à ceci:
<*>
Notez que le fait d'accepter aveuglément des données de formulaire non authentifiées peut être dangereux pour votre application.
Modifier: Certaines personnes considèrent qu'il est mauvais d'utiliser $ _REQUEST pour gérer les deux cas. Le risque est que vous souhaitiez signaler une erreur si vous recevez un message GET alors que vous vous attendez à un POST. En règle générale, GET est réservé à l'affichage et POST à ??la modification (opérations de création / mise à jour / suppression). Que cela soit vraiment un problème dépend de votre application.
REQUEST['page'] (for either)
On dirait que vous recherchez "Rediriger après le message", je vous suggère de séparer display.php et vote.php en fichiers séparés. Vote ressemble à ceci:
<*>Notez que le fait d'accepter aveuglément des données de formulaire non authentifiées peut être dangereux pour votre application.
Modifier: Certaines personnes considèrent qu'il est mauvais d'utiliser $ _REQUEST pour gérer les deux cas. Le risque est que vous souhaitiez signaler une erreur si vous recevez un message GET alors que vous vous attendez à un POST. En règle générale, GET est réservé à l'affichage et POST à ??la modification (opérations de création / mise à jour / suppression). Que cela soit vraiment un problème dépend de votre application.
Oui, le tableau GET est toujours rempli avec les paramètres d'URL, quelle que soit la méthode de requête. Vous pouvez l'essayer avec une simple page comme celle-ci:
<form action="test.php?a=b" method="post">
<input name="a"/>
<input type="submit"/>
</form>
<pre>
POST:
<?php print_r( Oui, le tableau GET est toujours rempli avec les paramètres d'URL, quelle que soit la méthode de requête. Vous pouvez l'essayer avec une simple page comme celle-ci:
<*>POST); ?>
GET:
<?php print_r( Oui, le tableau GET est toujours rempli avec les paramètres d'URL, quelle que soit la méthode de requête. Vous pouvez l'essayer avec une simple page comme celle-ci:
<*>GET); ?>
</pre>