Entre le $_REQUEST, $_GET et $_POST lequel est le plus rapide?
Laquelle de ces code sera plus rapide?
$temp = $_REQUEST['s'];
ou
if (isset($_GET['s'])) {
$temp = $_GET['s'];
}
else {
$temp = $_POST['s'];
}
- Il y a un troisième cas, tu sais.
!isset($_REQUEST['s'])
. - Comment est-il important que d'autres personnes de comprendre votre code clairement? POST et GET sont explicites, alors que la DEMANDE peut provenir de différentes sources. Je pense que l'efficacité est négligeable puisque la DEMANDE, de la POSTE, et d'OBTENIR les superglobales sont toujours chargées pour chaque demande.
Vous devez vous connecter pour publier un commentaire.
$_REQUEST
, par défaut, contient le contenu de$_GET
,$_POST
et$_COOKIE
.Mais c'est seulement un défaut, qui dépend de l'
variables_order
; et pas sûr que vous voulez travailler avec des cookies.Si j'avais à choisir, je n'aurais probablement pas utiliser
$_REQUEST
, et je choisirais$_GET
ou$_POST
-- en fonction de ce que mon application doit faire (c'est à dire l'un ou l'autre, mais pas les deux) : d'une manière générale :$_GET
quand quelqu'un demande des données de votre application.$_POST
quand quelqu'un pousse (insertion ou mise à jour ; ou la suppression) données à votre application.De toute façon, il n'y aura pas beaucoup de différence sur les performances : la différence sera négligeable, comparé à ce que le reste de votre script va faire.
OBTENIR vs POST
1) les Deux GET et POST créer un tableau (par exemple, array( clé => valeur, key2 => valeur2, key3 => valeur3, ...)). Ce tableau contient des paires clé/valeur, où les clés sont les noms des contrôles de formulaire et les valeurs sont les données d'entrée de l'utilisateur.
2) les Deux GET et POST sont traités comme des variables $_GET et $_POST. Ce sont les superglobales, ce qui signifie qu'ils sont toujours accessibles, quelle que soit la portée - et vous pouvez y accéder à partir de n'importe quelle fonction, de classe ou d'un fichier sans avoir à faire quelque chose de spécial.
3) $_GET est un tableau de variables passées au script courant via les paramètres de l'URL.
4) $_POST est un tableau de variables passées au script courant via la méthode HTTP POST.
Lors de l'utilisation de l'OBTENIR?
Informations envoyées à partir d'un formulaire avec la méthode GET est visible par tout le monde (tous les noms de variables et les valeurs sont affichées dans l'URL). OBTENIR a également des limites sur la quantité de données à envoyer. La limitation est d'environ 2000 caractères. Cependant, parce que les variables sont affichés dans l'URL, il est possible de créer un signet de la page. Cela peut être utile dans certains cas.
OBTENIR peut être utilisé pour l'envoi de données non sensibles.
Note: OBTENIR ne doit JAMAIS être utilisé pour l'envoi de mots de passe ou d'autres informations sensibles!
Lors de l'utilisation de POST?
Informations envoyées à partir d'un formulaire avec la méthode POST est invisible pour les autres (tous les noms/valeurs sont intégrés dans le corps de la requête HTTP) et n'a pas de limites sur la quantité d'informations à envoyer.
De plus de POSTE prend en charge des fonctionnalités avancées telles que le support du multi-partie de l'entrée binaire tout en téléchargeant des fichiers vers le serveur.
Cependant, car les variables ne sont pas affichés dans l'URL, il n'est pas possible de créer un signet de la page.
GET
de chaîne de requête,POST
de la soumission du formulaire).Je suggérerais à l'aide de
$_POST
et$_GET
explicitement.À l'aide de $_REQUEST devrait être inutile avec une bonne conception de site, de toute façon, et il est livré avec certains inconvénients comme vous laissant ouvert de manière à faciliter le
CSRF/XSS
attaques et autres drôleries qui vient de stocker des données dans l'URL.La différence de vitesse devrait être minime de toute façon.
De DEMANDE d'utilisation. Personne ne se soucie de la vitesse d'une telle opération simple, et c'est beaucoup plus propre code.
$_REQUEST
est une mauvaise conclusion. Voir ma réponse.$_REQUEST
est précaire. J'ai pensé à faire un XMLHttpRequest qui envoie vers une page où$_REQUEST
est utilisé. Puisqu'il faudrait le faire avec OBTENIR le plus probable, il faudrait l'entrée de l'utilisateur à OBTENIR, pas de POST. Ce ne serait pas un problème si une personne l'a fait, mais si someone1 dit someone2 de le faire, someone1 pouvez obtenir someone2 du mot de passe.Ne vous inquiétez pas. Mais vous devriez toujours utiliser la deuxième solution (plus un supplément de vérifier pour aucune de ces deux variables existantes), parce qu'il y a des problèmes de sécurité avec
$_REQUEST
(depuis$_GET
et$_POST
ne sont pas les seules sources de ce tableau).Il y avait un post sur les problèmes de
$_REQUEST
hier, je crois. Permettez-moi d'aller le trouver.MODIFIER: Oh, eh bien, pas directement un post, mais ici, il est de toute façon: http://kuza55.blogspot.com/2006/03/request-variable-fixation.html
L'utiliser car il est plus sûr et il ne sera pas sensiblement la différence de vitesse
$_GET récupère les variables à partir de la chaîne de requête, ou de votre URL.>
$_POST récupère les variables à partir de la méthode POST, tels que (généralement) les formes.
$_REQUEST est une fusion de $_GET et $_POST ou $_POST remplace $_GET. Bon d'utiliser $_REQUEST sur l'auto refrential formes pour les validations.
request_order
et peut contenir des valeurs de cookie trop, c'est pourquoi il n'est pas très bonne, ni très utile.pas question de vitesse quand vous avez récupéré les données à l'aide de $_GET,$_POST ou $_REQUEST
mais la question est que vous ne pouvez pas être utilisés
$_GET
alternative de$_POST
sur certains cas.Quand ??
GET
a également des limites sur la quantité de données à envoyer. La limitation est d'environ 2000 caractères.Autre chose, il existe quelques cas où vous ne pouvez pas récupérer les données à l'aide de
$_POST
Quand ?
Pour Le Repos De Service
il n'y a rien de mal à utiliser
$_REQUEST
.Mais la façon de le faire est de vérifier la valeur de $_SERVER['REQUEST_METHOD'] explicitement, ne pas compter sur $_POST étant vide d'un GET.
Je voudrais utiliser la deuxième méthode est plus explicite. Sinon vous ne savez pas où les variables sont venant de.
Pourquoi avez-vous besoin de vérifier à la fois GET et POST, de toute façon? Sûrement à l'aide de l'un ou de l'autre ne fait plus de sens.
GET
être utilisé que pour un élément (par exemple, déplacer) etPOST
pour plusieurs d'entre eux (un formulaire avec des cases à cocher...).Je n'utilisez jamais _GET ou _POST. Je préfère avoir le contrôle.
Ce que je n'aime pas sur le fragment de code dans l'OP, c'est qu'ils effacer les informations sur qui HTTP méthode a été utilisée. Et cette information est importante pour l'entrée d'assainissement.
Par exemple, si un script accepte des données d'un formulaire qui va être entrés dans la base, alors la forme avait une meilleure utilisation de la POSTE (utiliser OBTENIR seulement pour la quantité d'actions). Mais si le script reçoit les données d'entrée via la méthode GET, alors il devrait (normalement) être rejeté. Pour moi, une telle situation pourrait justifier l'écriture d'une violation de la sécurité dans le journal des erreurs car c'est un signe que quelqu'un est en train d'essayer quelque chose de sur.
Soit avec fragment de code dans l'OP, ce nettoyage ne serait pas possible.
$_POST
est d'empêcher les robots des moteurs de recherche de faire quelque chose comme ceci: thedailywtf.com/Articles/WellIntentioned-Destruction.aspxJe voudrais utiliser
$_POST
, et$_GET
parce que différemment de$_REQUEST
leur contenu n'est pas influencé parvariables_order
.Quand utiliser
$_POST
et$_GET
dépend de ce genre d'opération n'est exécutée. Une opération qui modifie les données traitées sur le serveur devrait être fait par le biais d'une requête POST, tandis que les autres opérations doivent être effectuées via une requête GET. Pour faire un exemple, une opération qui supprime un compte d'utilisateur ne doit pas être directement exécuté lorsque l'utilisateur clique sur un lien, alors que l'affichage d'une image peut être fait par le biais d'un lien.J'utilise cela,
la déclaration valide si $_REQUEST a plus qu'un seul paramètre (le premier paramètre $_REQUEST sera l'uri de la demande qui peut être utilisé en cas de besoin,
certains paquets PHP habitude return $_GET afin de vérifier si ses plus de 1 go pour $_GET, Par défaut, il sera de $_POST.
Vous sont prématurément de l'optimisation. Aussi, vous devriez vraiment mettre une certaine pensée dans si GET devrait être utilisé pour des choses que vous êtes POST-ing, pour des raisons de sécurité.