2009-03-25 9 views
5

Si j'entrez les informations suivantes dans le navigateur:php obtenir des variables comme clé sans valeur assignée

http://domain.com/script.php?1234 

Et script.php a le script suivant:

$key=array_keys($_GET); 
    echo $key[0]; 

La sortie sera:

1234 

(je suis en train de faire disparaître le laid? r = 1234 et si cela fonctionne, ce sera parfait.)

Ma question est, est-ce officiellement correct ou c'est une mauvaise programmation?

Répondre

4

Vous pouvez aussi bien faire

echo $_SERVER['QUERY_STRING'] 

En ce qui concerne la création d'URL amicales, il y a de meilleures façons de fais le.

Voir .: par exemple $_GET and URL Rewriting for PHP

1

Rien ne peut être officiellement correct, si cela fonctionne pour vous, alors par tous les moyens l'utiliser. Btw le problème avec cela correspond à quelle valeur est quoi.

Lorsque vous avez example.com?1234&4567 Ensuite, vous aurez deux valeurs sans nom de clé pour vous dire quoi faire.

Mais si vous voulez en finir avec url laide de, vous devriez regarder dans mod_rewrite

Beginners guide

Another beginners guide

1

Vous ne devriez pas utiliser cette approche. Si vous ne souhaitez pas que vos variables s'affichent, vous pouvez utiliser URL rewrite pour que l'URL soit correcte. Aussi, n'oubliez pas de désinfecter votre $ _GET :)

En fait, dans votre exemple, 1234 est la variable que vous envoyez via GET, sans valeur, si vous voulez le voir de cette façon.

1

Ceci est correct. La variable s'appelle 1234 et n'a aucune valeur. Cela signifie

GET['1234'] == ''; 

Vous pouvez aussi bien écrire http://example.com?1234=10 Ensuite, le résultat serait

GET['1234'] == '10'; 
+0

mieux utiliser le http://example.com officiel la prochaine fois, voir http://tools.ietf.org/html/rfc2606#section-3. –

+0

Merci, je ne savais pas qu'il y avait un RFC pour ça – soulmerge

0

Ma question est, est-ce officiellement correct ou il est une mauvaise programmation?

Query-parameter-without-value n'est pas documenté pour fonctionner, mais il continuera probablement à fonctionner.

Si vous voulez juste saisir toute la chaîne de requête sans l'analyser en tant que paramètres, la meilleure chose à faire serait de le dire directement:

echo $_SERVER['QUERY_STRING'] 

(Quoi que vous fassiez, ne fait pas écho directement Cependant, soit désinfectez la valeur par exemple.convertissez-le en nombre entier, ou, si vous voulez autoriser une chaîne arbitraire, affichez-la correctement pour JavaScript, par des guillemets et des backslashes qui s'échappent par backslash.)

Questions connexes