La plus simple et la plus efficace d'obtenir des données à partir de l'URL à l'aide de php?
Solution?
Apparemment il n'y a pas un moyen plus rapide, je suis d'accord avec ça.
Je suis tout juste d'apprendre le php et j'en suis à essayer de comprendre quelques bons conseils et astuces afin que je n'entrez pas dans une mauvaise habitude et une perte de temps.
Je suis de passage à valeurs dans un script php. J'utilise $_GET donc l'URL ressemble à ceci:
/poll_results.php?Sports=tennis&cat=Sports&question=Pick+your+favorite+sports
Maintenant, je sais comment accepter ces valeurs et de les placer dans des variables comme:
$sports = $_GET['Sports'];
$cat = $_GET['cat'];
$question = $_GET['question'];
Super simple pourtant, si je suis de passage 5 - 6 choses, il peut devenir gênant et je n'aime pas taper les choses pour chaque variable, c'est la seule raison. Je sais qu'il existe une meilleure manière de faire ceci. J'ai essayé list($var, $var, $var) = $_GET
mais qui ne fonctionne pas avec un tableau associatif simplement indexé (je pense).
J'ai aussi essayé les variables comme ceci:
foreach($_GET as $value) {
$$values = $value;
echo $$values;
}
Mais cela m'a donné une Notice: Undefined variable: values in poll_results.php on line 14.
la Ligne 14 est la $$values = $value.
je ne sais pas si c'est une grosse affaire ou pas... mais je ne suis pas de désactiver les rapports d'erreurs comme je suis encore dans le processus de construction du script. Il fait ce que je veux faire...
Toutes les réponses seront copiés et collés dans ma question alors, la prochaine personne qui sait 😀
Merci les gars!
- Quel est le problème avec
$_GET
? Voir pourquoi ce genre de register globals variante constitue une menace pour la sécurité. - vous parlez de plus court chemin, pas mieux
- La meilleure façon serait
$var = $_GET['var']
? - il dépend. Idéalement, vous devez définir les chaque variable que vous utilisez dans votre script
Vous devez vous connecter pour publier un commentaire.
Votre deuxième morceau de code est faux. Il devait être comme
si je comprends bien votre intention. Cependant, vous êtes essentiellement en réinventant register_globals, qui....eh. Que vais ya obtenir piraté.
Si vous avez certaines variables que vous souhaitez obtenir, vous pourriez faire comme
qui est moins probable pour remplacer une variable importante (que ce soit par accident ou parce que quelqu'un s'amusait avec les Url).
Utilisation
parse_url()
pour extraire la chaîne de requête à partir d'une URL que vous avez dans une chaîne de caractères, puisparse_str()
pour extraire l'individu arguments de la chaîne de requête.Si vous voulez polluer votre script avec le contenu de la superglobales, alors vous pouvez utiliser
extract()
. cependant, être conscient que c'est essentiellement de la réplication de l'horrible monstre connu comme "register_globals", et s'ouvre à toutes sortes de vulnérabilités de sécurité.Pour l'instant, que faire si l'un de la requête d'origine avait des arguments
_GET=haha
. Vous avez maintenant saccagé la$_GET
superglobale en les remplaçant parextract()
.Ce que vous essayez de le faire, à moins d'être freinée, devenir une mauvaise habitude et même avant est une perte de temps.
Type les variables: vos chiffres comme l'exercice et de votre cerveau peut prendre facilement quand il n'a pas à comprendre quelles sont les variables disponibles (ou pas, ou peut-être; ce qui serait le cas lorsque vous utilisez les variables).
Vous pouvez utiliser
Pour préserver la clé et la valeur d'associativité.
Les variables (les
$$value
) sont une mauvaise idée. Avec la boucle ci-dessus disons que vous avez eu une variable nommée$password
qui est déjà défini à partir d'une autre source. Maintenant, je peux envoyer$_GET['password']
et remplacer votre variable! Toutes sortes de méchanceté peut en résulter. C'est la même raison pourquoi PHP abandonnéregister_globals
qui fait essentiellement la même chose.Mon conseil: utilisez
$_POST
lorsque cela est possible. Il maintient votre Url beaucoup plus propre pour une chose. Deuxièmement, il n'y a pas vraiment de raison d'attribuer le tableau de variables de toute façon, il suffit d'utiliser là où vous en avez besoin dans le programme.Une bonne raison à cela, en particulier dans un programme plus important, c'est que vous aurez instantanément savent d'où ils viennent, et que leurs données ne doit pas être digne de confiance.