Page 1 sur 1
redirection des pages en index.php?page=accueil
Posté : 28 nov. 2012, 15:22
par lapinou8431
Bonjour, à tous
tout d'abord merci de me lire, je suis débutant en php et j'aimerai pouvoir rendre accessible toutes mes pages php comme ceci: index.php?page=accueil etc...
avez-vous un code php à me proposer ou tuto ?
cordialement
Re: redirection des pages en index.php?page=accueil
Posté : 28 nov. 2012, 16:47
par Saian
Si les pages existes et qu'elles sont dans le même répertoire que index.php, dans index.php :
include($_GET['page'].'.php')
Modération : Ce code n'est pas sécurisé et ne doit pas être utilisé en l'état. Voir ici pour + d'infos
Re: redirection des pages en index.php?page=accueil
Posté : 28 nov. 2012, 19:48
par dix2
Bonjour, à tous
tout d'abord merci de me lire, je suis débutant en php et j'aimerai pouvoir rendre accessible toutes mes pages php comme ceci: index.php?page=accueil etc...
avez-vous un code php à me proposer ou tuto ?
cordialement
salut,
ce que tu cherches à faire correspond à la partie Controller du modèle MVC
tu trouveras pleins de tutoriels sur le modèle MVC sur le net
@+
dix2
Re: redirection des pages en index.php?page=accueil
Posté : 28 nov. 2012, 22:29
par two3d
Bonsoir,
je pense que cette personne étant débutante, le mieux serai de le diriger vers la fonction
switch
Dans ton cas:
if(isset($_GET['page'])) { // si la page est appelée
switch ($_GET['page']) {
case 'accueil':
include("texte_daccueil.php");
break;
case 'infos':
include("informations.php");
break;
case 'infos2':
include("infos2.php");
break;
default: // par défaut, si la page (get "page") n'a pas été trouvé
include("texte_daccueil.php");
}
} else {
include("texte_daccueil.php"); // si aucune page est appelée
}
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 01:29
par @rthur
Si les pages existes et qu'elles sont dans le même répertoire que index.php, dans index.php :
include($_GET['page'].'.php')
IMPORTANT : Il ne faut jamais faire cela.
Ce simple morceau de code ouvre une faille béante de sécurité sur le site qui le comporte !
Toute variable envoyée par l'utilisateur doit être filtrée et validée avant d'être utilisée.
Soit par un switch comme indiqué ci dessus, soit manuellement en vérifiant la validité des infos attendues. PHP dispose d'ailleurs de plusieurs fonctions permettant d'effectuer cela facilement. Voici un tuto là dessus :
http://www.siteduzero.com/tutoriel-3-42 ... ateur.html
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 13:16
par Saian
Oui oui c'est pas sécurisé, je reconnais.
Étant donné le niveau de lapinou je me suis dis que c'était mieux d'y aller par étape.
Je comptais aborder le sujet de la sécurité par la suite. Mais ça ne sera pas la peine. ^^
J'aurai simplement rajouté un système d'indexation des pages, plutôt que d’alourdir le code avec du switch à gogo et des tests compliqués :
$pages = array(
'default_page' => 'nom_fichier.php',
'nom_page' => 'nom_fichier.php',
//...
);
$page = isset($pages[$_GET['page']]) ? $pages[$_GET['page']] : $pages['default_page'];
include($page);
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 14:44
par two3d
J'aime bien ton idée avec le array, ceci dit, si tu doit mettre du code, genre des header ou rajouter des variable au dessus de ton include pour qu'ils soit justement pris en compte dans ton include, tu ne pourra pas.
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 14:58
par Saian
Pour faire des choses simples genre $title = 'titre'; on peut complexifier le tableau. Par exemple :
$pages = array(
'default_page' => array(
'file' => 'nom_fichier.php',
'title' => 'titre page'
),
'nom_page' => array(
'file' => 'nom_fichier.php',
'title' => 'titre page'
),
//...
);
$page = isset($pages[$_GET['page']]) ? $pages[$_GET['page']] : $pages['default_page'];
$title = $page['title'];
include($page['file']);
Par contre, si on veut faire des choses plus complexes, le tableau ne sera en effet pas suffisant.
Mais avant d'en arriver la, il faut se poser la question : ce bout de code ne pourrait-il/devrait-il pas aller dans nom_fichier.php ?
En l'occurence $title n'est pas utilisée entre sa déclaration et l'include, la variable pourrait donc tout à fait être déclarée dans nom_fichier.php.
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 15:19
par two3d
Oui bien sur mais si par exemple c'est une page que seul des membre connecté peuvent accéder ? il fautdra rajouter un header(Location: connexion.php"); (exemple)
et là avec les array ce n'est pas possible.
PS: à défaut du détail, c'est $title = $page['file']['title']; pour le titre

Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 15:25
par Saian
Dans mon exemple $title = $page['title']; est la bonne écriture. $page['file']['title'] n'existe pas.
Et, dans mon exemple toujours, le test de session et la fonction header pourrait tout à fait être dans le fichier inclus (voir dans un fichier de test de la session qui serait inclus dans toutes les pages de l'accès membre).
Ou on pourrait ajouter un index 'member_space' => true et ajouter un test avant l'include pour faire la redirection si c'est une page de l'espace membre et que l'utilisateur n'est pas connecté.
$pages = array(
'default_page' => array(
'file' => 'nom_fichier.php',
'title' => 'titre page'
),
'nom_page' => array(
'file' => 'nom_fichier.php',
'title' => 'titre page'
),
'une_page_membre' => array(
'file' => 'nom_fichier.php',
'title' => 'titre page',
'member_space' => true
),
//...
);
$page = isset($pages[$_GET['page']]) ? $pages[$_GET['page']] : $pages['default_page'];
if(isset($page['member_space']) && $page['member_space'] && /* utilisateur non connecté */)
header('Location: index.php?page=login');
exit();
}
$title = $page['title'];
include($page['file']);
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 15:28
par lapinou8431
Bonjour,
merci de m'avoir répondu au mieux, je vous remercie par avance
cordialement
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 15:57
par lapinou8431
if(isset($_GET['page'])) { // si la page est appelée
switch ($_GET['page']) {
case 'accueil':
include("texte_daccueil.php");
break;
case 'infos':
include("informations.php");
break;
case 'infos2':
include("infos2.php");
break;
default: // par défaut, si la page (get "page") n'a pas été trouvé
include("texte_daccueil.php");
}
} else {
include("texte_daccueil.php"); // si aucune page est appelée
}
quand j'utilise ce code la page est blanche.
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 15:59
par two3d
C'est certainement parce que tu na pas les pages incluses...
essaye ceci:
if(isset($_GET['page'])) { // si la page est appelée
switch ($_GET['page']) {
case 'accueil':
//include("texte_daccueil.php");
echo "inclusion texte d'accueil";
break;
case 'infos':
//include("informations.php");
echo "inclusion informations";
break;
case 'infos2':
//include("infos2.php");
echo "inclusion infos2";
break;
default: // par défaut, si la page (get "page") n'a pas été trouvé
// include("texte_daccueil.php");
echo "inclusion texte d'accueil (page non trouvée)";
}
} else {
//include("texte_daccueil.php"); // si aucune page est appelée
echo "inclusion texte d'accueil (pas d'isset)";
}
Re: redirection des pages en index.php?page=accueil
Posté : 29 nov. 2012, 22:42
par lapinou8431
salut,
le code que tu m'as donné fonctionne bien ! merci.
Re: redirection des pages en index.php?page=accueil
Posté : 30 nov. 2012, 00:22
par two3d
avec plaisir, tu peut mettre résolu
