2009-12-06 5 views
1

OK, je crée une application de questionnaire qui est gérée par un seul utilisateur sur/gérer. Là, il peut créer plusieurs questionnaires, chacun avec un nom différent et un ensemble de paramètres (utilisateurs enregistrés, questions, données, etc.). Actuellement, les utilisateurs non-administrateurs (les preneurs du test) accèdent aux différents tests en se rendant à /index.php?t=Questionnaire%20Name. Évidemment, ce n'est pas la meilleure interface à donner aux utilisateurs. Je voudrais que les utilisateurs puissent accéder à ce test en allant dans/QuestonnaireName. Je pense que cela pourrait être fait avec mod-rewrite, mais je ne sais pas comment l'utiliser ou par où commencer. J'ai codé le tout dans JS, PHP et MySQL. Toute aide est appréciée. Merci.Utilisation du contenu de l'URL pour envoyer des données (post ou get) à une page PHP

Répondre

1

Voici un exemple pour vous y aller:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 

Mettez ceci dans un fichier appelé .htaccess dans le même répertoire que index.php. Maintenant tout ce que vous appelez sera routé vers index.php, et vous pouvez obtenir l'URL avec $_SERVER['QUERY_STRING']. Alors vous êtes libre de faire tout ce que vous voulez avec.

manière alternative, pour vous sauver de faire des modifications à index.php:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?t=$1 

Notez le t= après la index.php?. Maintenant tout peut être trouvé à partir de $_GET['t'], mais je ne peux pas garantir que ce sera infaillible car je n'ai pas utilisé cette méthode moi-même. Testez-le et voyez si cela fonctionne pour vous.

EDIT

Edité pour permettre l'accès aux répertoires physiques.

+0

Merci, cela a fonctionné presque exactement comme je le voulais aussi. Vraiment cool. Cependant, lorsque vous essayez d'accéder/gérer, évidemment mod_rewrite l'attrape et vous envoie juste à index.php. Existe-t-il un moyen de mettre une instruction if dans? – fishman

+0

En outre, lorsque j'essaie d'accéder à/manager, la barre d'URL signale/manager /? T = manager. Cela ne se produit pas pour tout ce que j'ai essayé, et/manager est le seul sous-répertoire. – fishman

+0

J'ai découvert comment accomplir ceci. Tout ce qu'il faut, c'est un autre RewriteCond, exactement le même que l'autre, mais avec -d, au lieu de -f. – fishman

Questions connexes