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

Soyez le premier à donner votre avis sur cette source.

Vue 3 319 fois - Téléchargée 183 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
-
" ~._\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
-
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
-
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
-
$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
-
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.

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.