web-dev-qa-db-fra.com

Obtenir les valeurs d'URL masquées dans Mediawiki

J'ai réussi à masquer l'URL dans Mediawiki. En utilisant les scripts suivants dans les fichiers . Htaccess et localsettings.php dans Mediawiki, c.-à-d.:

. htaccess:

Options +FollowSymLinks

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/(.*)$ /mediawiki/index.php?title=$1&actions=$2 [L]

Localsettings.php:

$wgScriptPath       = "/lib/mediawiki";
$wgArticlePath      = "/lib/mediawiki/$1/$2";

Cela fonctionne très bien avec l'URL requise. Mais mon problème est que je veux considérer le second paramètre comme une chaîne de requête pour mes pages. Mais je ne pouvais pas obtenir le deuxième paramètre dans mon fichier. J'ai essayé avec la fonction $wgrequest mais elle ne donne que le premier paramètre sous la forme title. J'ai essayé avec $_REQUEST aussi, il est parfois donné la valeur de $_REQUEST['actions']. Mais plusieurs fois non. Je ne peux pas comprendre quel est le problème.

2
Kalai

Je vais commencer par dire que vous ne devez pas utiliser $_REQUEST pour quelque chose comme cela, il récupère non seulement de la chaîne d'URL, mais en fonction de sa configuration, il peut extraire de $_POST data et $_COOKIE données, ce qui signifie qu’il s’agit d’un risque pour la sécurité.

Je vous suggère d'utiliser la variable $_GET ($_GET['actions']) lorsque vous la récupérez à partir de l'URL et de la tester lorsque vous savez que les actions sont définies ou non.

J'imagine que ce qui pourrait se produire, c'est que l'on accède à des URL ne contenant pas ce paramètre. Ceci est basé sur le fait que votre fichier .htaccess semble bien. Dans ce cas, ce que je suggérerais, c’est que vous ayez une sorte d’action par défaut configurée pour les espaces vides.

$actions = isset($_GET['actions']) ? $_GET['actions'] : 'my_default_action';

Vous voudriez également mettre un peu de sécurité dans ceci pour ne pas faire confiance à $_GET tant que vous ne l'avez pas nettoyé ou ajouté à la liste blanche.

2
Toby