10
votes

PHP parse demande_uri dans le tableau

Je suis en train d'analyser la request_uri dans une matrice.

En ce moment, j'ai le code suivant: xxx

existe-t-il des préoccupations de sécurité en le faisant de cette façon? Est-ce un bon moyen de l'analyser?

EDIT: Langue


6 commentaires

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.


4 Réponses :



19
votes

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);


2 commentaires

+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



8
votes

2 commentaires

Merci. Eu aucune idée parse_str a fait ça: D


Cela crée un "avis" si request_uri ne contient pas de ?



1
votes
$the_array = explode('/', trim($_SERVER['REQUEST_URI'], '/'));

0 commentaires