2010-01-06 10 views
0

im faire un petit siteindex get var comprennent

Et au lieu d'avoir un header.php et un footer.php avec des informations neccesarry (fonctions, DbConnection, tête html) et inclure sur chaque page que je voudrais tout avoir dans index.php. Mais ensuite je dois ajouter des pages à une liste blanche et tout ça. Je voudrais juste être en mesure de le déposer dans les pages/et ensuite y accéder avec index.php? Page = test

Comment est-ce que j'inclurais des pages sans avoir à faire une grande liste blanche? Que diriez-vous d'utiliser preg_match et checcking cette variable de page contient seulement a-z. pas de points maléfiques. si elle contient seulement la lettre a-z> include? ou peut-être utiliser glob et numériser des pages /, les ajouter à la matrice donc je ne dois modifier index.php chaque fois

s'il vous plaît, dites-moi vos pensées et vos idées

<html> 
<head> 
<title>SindACC</title> 
</head> 
<body> 

<?php include($page) ?> 

</body> 
</html> 

Répondre

1

Si vous ne souhaitez pas utiliser une liste blanche, utilisez basename sur la variable $page pour éliminer toute dir mère exploiter, puis d'inclure le fichier dans le répertoire pages/. Tant que vous ne mettez pas de fichiers qui ne devraient pas être vu dans ce répertoire, tout va bien.

+0

+1 - bon point pour éviter les exploits de type "..". –

1

Il suffit de mettre vos pages dans un dossier (dites "/ pages"). Ensuite, avant de faire l'inclure, vous vérifiez pour voir si le fichier existe dans le dossier pages.

+0

La partie cruciale est la "vérifier pour voir si le fichier est dans le répertoire des pages". Sinon, vous aurez un énorme code de sécurité sur votre page. –

1

Je serais certainement faire la vérification regex ou même santize flat-out (dépouillent quoi que ce soit par exemple pas alpha-numérique), vous pouvez faire un file_exists() vérifier et si cela réussit, alors inclure

0

Avez un répertoire pour les pages, nettoyer les caractères non valides du chemin de la page et inclure uniquement les fichiers du répertoire des pages. Je pense que tu as la bonne idée.

0

Comme les autres ont dit, assurez-vous de désinfecter la variable. Voici une façon possible, mais Theres comme 20 façons dont vous pouvez faire:

function sanitizeAlpha($string) 
{ 
    if (preg_match_all('/([A-Z]|[a-z]/', $string, $matches) > 0) 
    { 
     return implode($matches[0]); 
    } else { 
     die('Invalid Page Name'); 
    } 
}