Page 1 sur 1

gestion de 'modules' (recherche,news,agenda)?

Posté : 07 juil. 2006, 08:00
par iruka
Bonjour,

je developpe un site php ou il y aura les fonctions suivantes : agenda, recherche, news, etc.

J'aimerais pouvoir mettre chaque element dans un dossier principal 'appli'. ce dossier contiendrait chaque sous-dossier des applications (dossier agenda, dossier recherche,etc).

ainsi je voudrais pouvoir developper des modules independemment puis les mettres dans le dossier appli pour qu il soit pris en compte (comme php-nuke en fait je pense)

j aurais une url : index.php?dossier=agenda
ce qui chargerait la page index.php du dossier agenda
ou index.php?dossier=forum&page=affich_commentaire

par exemple.

je ne sais pas comment faire pour declarer un dossier dans une url (pour une page, c est bon) et authoriser tous les sous dossiers se trouvant dans le 'appli.

bon c est pas tres clair, je suis desole..

j ai regarde un peu nuked-klan, php-nuked mais c est trop fourni, je ne comprends pas comment faire...

si quelqu un peut me renseigner sur la methode d extraction de sous-dossier dans un dossier principal et passage en url, ca serait le top !
merci d avance

(ps: je sais pas si je suis au bon endroit??)

Posté : 07 juil. 2006, 09:10
par Devether
Salut,

Il faut récupérer les paramètres passés en URL et les tester pour pouvoir rediriger.
<?php

if (isset($_GET['dossier'])) {

$target = $_GET['dossier'];
header('location: '.$target.'/index.php');

}

?>
Je ne sais pas si c'est la meilleur methode mais ça devrait fonctionner.

Posté : 07 juil. 2006, 10:27
par iruka
Salut Devether!

merci pour ta reponse.

en fait, j ai essaye comme ca, ca a l air de marcher :
$folder=(isset($_GET["folder"]))? $folder = trim($_GET["folder"])  : $folder = require("home.php"); 
$page=(isset($_GET["page"]))? $page=trim($_GET["page"]): $page='';

if(is_dir("mods/$folder") && is_file("mods/$folder/$page.php"))
  {
  $chemin="mods/$folder/$page.php";
   if (file_exists($chemin))
   {
   require("mods/$folder/$page.php");    
   } 
 } 
en revanche, je test pas les donnees rentrees dans les GET donc faut que je fasse des verifications quand meme pour eviter qu on mette n importe quoi

(creer un array avec la liste des fichiers et page pourrait tout a fait le faire mais mon but, etant faineant, est d avoir un script general qui ne fonctionne que lorsque tout semble ok sans que je precise les dossiers et fichiers...)

Posté : 07 juil. 2006, 12:32
par iruka
bon, j ai modifie parce qu il y avait des trucs moyens :
// une fonction pour controler les GET
// remplacer des ../../hack.php par hack.php 
//pas d espace. 
//Pas de chiffre non plus mais bon, ca depend des noms que vous donnez a vos fichiers et dossiers^^
function securite_request($value)
{
$value=trim(preg_replace('/[\.*]|[\/*]| |[0-9]|/','',$value));
return $value;
}

//on effectue l acces a la page que si les variables folder et page sont declarees
//si les variables ne sont pas passees on initialise folder a vide et page a index
//il faudra donc toujours avoir un fichier index.php dans les sous dossiers
//pour que index.php?folder=news fonctionne et renvoie la page index.php du dossier news

$folder=(isset($_GET["folder"]))? $folder = securite_request($_GET["folder"]) : $folder=''; 
$page=(isset($_GET["page"]))? $page=securite_request($_GET["page"]): $page='index';

// si on a envoye par get le folder et que la page vaut bien quelque chose
//(la valeur de get sinon la valeur 'index')
if(isset($_GET["folder"]) && isset($page))
{
//on cree le chemin d acces a la page
// le dossier principal s appelle mods 
  $chemin="mods/$folder/$page.php";
// si le sous dossier existe, si le fichier .php existe et si le chemin complet existe...
  if(is_dir("mods/$folder") && is_file("mods/$folder/$page.php") && file_exists($chemin))
//on incorpore la page appelee
    {
     require("mods/$folder/$page.php");    
    }
//sinon (si ni le dossier, ni la page n existe)
	  else
// on inclue la page d error
	  {
       require("mods/404/index.php");
	  }
 }  
//sinon (si on a pas appele folder par get)
 else
// on insere la page d accueil du site
 require("home.php")
 
bon je pense que je vais me rendre compte qu il y a encore des trucs qui ne marchent comme je voudrais donc vos conseils sont les bienvenus!
merci d avance^^