2009-11-18 3 views
0

J'utilise un index.php pour contrôler l'accès aux pages.Autorisation d'accès et chemin de fichier dans php

Voici le mécanisme:

index.php redirige la page search.php; Code: index.php/?page=search le chemin de search.php est: pages/search.php, search.php comprend header.html, body.html etc.

Maintenant en body.html nous appelons search.php à l'aide: paramètre index.php/?page=search et body.html inclut ce code: index.php/?page=search?query='.quote_replace(addmarks($query)). Vous pouvez voir qu'il y a deux '?'. Et c'est juste ce problème.

Lorsque j'examine search.php, il affiche l'adresse URL: example.com/?page=search.

Lorsque je clique sur le bouton dans search.php alors que dans body.html, il affiche dans l'URL example.com/index.php/?query=&search=1. De cette manière, le navigateur affiche simplement la page index.php. Mais je veux afficher le résultat de la recherche dans search.php, et il devrait afficher example.com/?page=search/?query=&search=1. Mais vous pouvez voir /?page=search disparaît et apparaît ici.

Je suis désolé, la condition est complexe et je ne le décris pas très bien. Si vous ne comprenez pas très bien, je vais vous expliquer.

Alors, avez-vous des conseils à ce sujet? Merci beaucoup.

Répondre

2

Si vous souhaitez utiliser une chaîne (comme search/?query=&search=1) comme argument d'URL, vous devez encoder afin qu'il ne contient plus charachters spéciaux tels que ? et &. Utilisez le urlencode() PHP function pour cela:

urlencode("search/?query=findme&search=1") 

Cela donnera la chaîne suivante, qui peut être dangereuse comme argument URL:

search%2F%3Fquery%3Dfindme%26search%3D1 

Pour construire la première chaîne vous devez donc quelque chose de similaire, à savoir encoder tous les arguments. Ici, la fonction http_build_query() peut être utile, ce qui prend un tableau avec les touches et les valeurs, code pour tous et ajoute les = et & caractères en cas de besoin:

http_build_query(array("query" => "find&me", "search" => "1")) 

qui donne

query=find%26me&search=1 
+0

@thanks Wim, mais je n'ai pas utilisé cette fonction. Je vais essayer. –

+0

@Wim, Votre conseil est si bon. Ai-je besoin d'utiliser urlencode et http_build_query ensemble? Je suis désolé, je ne l'ai jamais utilisé auparavant. Et je n'ai aucune idée maintenant. –

+0

Vous pouvez également utiliser 'urlencode' pour le second cas et construire vous-même la chaîne de requête, mais' http_build_query' est beaucoup plus simple. Et dans tous les cas, vous devrez faire deux jeux de codage sur les mêmes données, car il sera également * décodé * deux fois (une fois que la valeur de * page * est lue, et une fois de nouveau lorsque * requête * et * recherche * sont lus). – Wim

Questions connexes