Je suis en train d'analyser la request_uri dans une matrice.
En ce moment, j'ai le code suivant: p> existe-t-il des préoccupations de sécurité en le faisant de cette façon? Est-ce un bon moyen de l'analyser? P> EDIT: Langue P> P>
4 Réponses :
Pourquoi ne pas simplement utiliser le $ _ obtenir code> Dictionnaire < / a>? p>
Parce que j'utilise mod_rewrite
Si vous utilisez de jolies URL, souvent, toute la querystring est compactée dans les niveaux de répertoire; ceci / is / iRi / chemin code> plutôt que ceci? is = the & uri = chemin code>. Dans le cas du premier, en ce que vous avez réécrit pour la beauté, vous pouvez simplement exploser ('/', $ URI) code> le request_uri
Tomcatexodus: Je fais les deux. Mes URL sont / contrôleur / méthode / ID, puis tous les Vares supplémentaires comme étant? Var = quelque chose
Vous pouvez passer des chaînes de requête avec mod_rewrite à l'aide du drapeau QSA
Je suis venu ici parce que pour une raison quelconque $ _GET et $ _Request où vide sur mon wordpress tandis que $ _Server ['demande_uri] contenant les variables requises.
Vous pouvez également faire avec PHP dans des fonctions construites. Qui sera une manière efficace.
$urlArr=parse_url($_SERVER['REQUEST_URI']); parse_str($urlArr['query'], $output); print_r($output);
+1 probablement plus utile pour la plupart de la réponse acceptée. Chemin par rapport à la racine en $ urlarr [0] et une matrice NEAT avec chemin, requête entières et paramètres de requête séparés en $ Sortie. Fonctionne bien avec la redirection des non-fichiers et des non-répertoires vers Index.php ou similaire avec .htaccess.
La réponse la plus simple et de bien meilleure, considérant que la réponse acceptée jettera un avertissement, s'il n'y a pas de rôle de requête dans l'URI
Il n'y a pas de préoccupation de sécurité, mais votre solution est assez fidèle. Il est déjà possible d'accomplir avec parse_str code> (et parse_url code> pour diviser le chemin). Ou dans votre cas juste:
Merci. Eu aucune idée parse_str a fait ça: D
Cela crée un "avis" si request_uri code> ne contient pas de ? code>
$the_array = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
Il n'y a pas de problèmes de sécurité, mais vous obtenez déjà tout cela dans _GET SUPERGLOBAL, alors quel est le point de votre code?
Lorsque vous utilisez mod_rewrite, il est préférable de l'analyser dans PHP, que dans .htaccess
J'ai lu tous les commentaires actuels et vous avez tort de votre idée. Peu importe si vous utilisez mod_rewrite ou non, même si votre URL ressemble à / contrôleur / méthode / ID / ID /? Quelqu'un_long_text = Certain_variable - Vous les aurez disponible sous $ _GET TRAY, tant qu'il y a une query à former correctement. analysé dans $ _GET. Testez-le avant d'essayer de le réparer.
J'ai testé cela avant même de faire ce post. Ceci est le var_dump ($ _ obtenir) pour "/ home / index /? Test = willitwork": tableau (2) {["contrôleur"] => chaîne (4) "Accueil" ["Méthode"] => String (5 ) "index"}
PHP analyse l'URL que MOD_REWRITE a fait, pas celui qui a été envoyé de l'utilisateur.
Ensuite, apparemment, votre REGEXP pour les règles de réécriture fonctionne de manière à réécrire les chaînes délimitées avec / en $ _get, ce qui est apparemment faux. J'utilise un schéma similaire à la vôtre, où j'ai "jolie" URL, mais mon _GET $ fonctionne comme prévu.