Gestion des modules avec $request (liste de modules et vérification que le fichier existe)

3/5 (16 avis)

Vue 3 658 fois - Téléchargée 217 fois

Description

On récupère la valeur de la variable "module" qui est envoyée à la page par $_REQUEST. La source est assez simple et bien expliquée. Il vérifie si le nom de module récupéré fait parti d'une liste de modules possibles. Il vérifie aussi que le fichier correspondant au module existe bien dans le dossiers modules ou renvoi une page d'erreur pour n'importe quelle erreur de module.
Aidez moi à améliorer cette source en ajoutant vos commentaires, vis suggestions ou ajouts possibles.

Source / Exemple :


<?
$module = "";		//on initialise $module
if (isset($_REQUEST["module"])) {		//si la variable module est déclarée
	$module = trim($_REQUEST["module"]," ~._\t");		//on donne la valeur de module à $module en retirant le superflux de la valeur
	if (empty($module)) $module = "home";		//si la valeur du module est vide, on renvoi le module home
	}
else $module = "home";		//si module n'est pas déclaré, on renvoi le module home

$module_liste = array("about","admin","download","error","home");		//on défini la liste des modules
if (!in_array($module, $module_liste) || !file_exists("modules/$module.php"))		//si le module fait parti de la liste et que son fichier existe
	$module = "error";		//on renvoi le module error
require("modules/$module.php");		//on inclu la page du module

/*
vous deviez avoir cet arbre de fichiers :
	+ modules
		- .htaccess (Deny from all)
		- about.php
		- admin.php
		- download.php
		- error.php (page d'erreur de module)
		- home.php
	+ images (si vous avez des images)
	- index.php (cette page là)
la source en zip sera bientot disponible sur cette page

  • /
?>

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
14 nov. 2004 à 11:12
" ~._\t" c les caractères qu'il retire au début et à la fin de la valeur ;) tien si tu veux l'essayer... mais vite parce que je suis pas toujours ouvert : http://cygratis.ath.cx/tmp/modules
pour strip ou strstrip, je verrai ça ce soir, là j'ai pas trop le temps. Bonne journée ;)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
14 nov. 2004 à 01:44
il doit exister une fonction strip ou qq ch ds le genre (strstrip peut-être).


" ~._\t" c'est quoi ça ??
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
14 nov. 2004 à 01:28
Voila c'est corrigé pour le tableau, je voulais le mettre dans la liste, c'était juste une erreur d'attention de ma part. J'ai fais le zip, tu peux l'essayer si tu veux, regarder la source des mes pages.

Et pour empty(trim()) il ne marche pas:
3) if (isset($_REQUEST["module"]) && !empty(trim($_REQUEST["module"]," ~._\t")))
4) $module = trim($_REQUEST["module"]," ~._\t");
5) else $module = "home";
Fatal error: Can't use function return value in write context in D:\wamp\website\alias\tmp\modules\index.php on line 3
Si tu as une autre formulation, ça serai bien :) ou sinon, j'ai tout simplement fais une erreur. Il se fait tard et je commence à flancher :p donc là je vais me coucher dés que le zip et la source sont prèts ;)

Di tu pourrais me donner une fonction que je pourrais utiliser à la place de trim() pour virer tous les caractères que je souhaite d'une valeur ? trim() ne fait le trie qu'au début et à la fin de la valeur.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 nov. 2004 à 23:30
$module_liste = array('about','admin','download','home');
if (!in_array($module, $module_liste)) {
$module = 'error';
}

je rajouterai uniquement que j'aurais mis error dans le tableau $module_liste, parce que tu peux éventuellement vouloir rediriger vers cette page par script, via un fichier de configuration serveur http etc... ceci dit, s'il n'est pas dans la liste, ce sera remplacé par error donc ça n'a pas vrmtn d'impact, je te l'accorde.

c'est tout ce que j'ai à dire, si ce n'est que tu as laissé le empty() au lieu de faire une combi de isset + empty(trim())
cymoud Messages postés 21 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 15 septembre 2007
13 nov. 2004 à 22:57
je te remercie pour les infos, le lien aurai suffit, merci... en fait je n'y ai pas passé assez de temps... je n'ai même pas lu l'erreur, je ne savais tout simplement pas l'utiliser. Je sais pas si tu vas aimer la nouvelle source, j'ai casiment tout reformulé plus simplement, plus compacte et logique... enfin c'était le but en tout cas. J'attend avec impatience ton avis sur la source :) une chose à modifier encore ? ne te gène surtout pas pour le moindre détail, je suis perfectionniste en général en programmation.
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.