redirection des pages en index.php?page=accueil

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : redirection des pages en index.php?page=accueil

Re: redirection des pages en index.php?page=accueil

par two3d » 30 nov. 2012, 00:22

avec plaisir, tu peut mettre résolu :wink:

Re: redirection des pages en index.php?page=accueil

par lapinou8431 » 29 nov. 2012, 22:42

salut,

le code que tu m'as donné fonctionne bien ! merci.

Re: redirection des pages en index.php?page=accueil

par two3d » 29 nov. 2012, 15:59

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

par lapinou8431 » 29 nov. 2012, 15:57

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

par lapinou8431 » 29 nov. 2012, 15:28

Bonjour,

merci de m'avoir répondu au mieux, je vous remercie par avance :)

cordialement

Re: redirection des pages en index.php?page=accueil

par Saian » 29 nov. 2012, 15:25

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

par two3d » 29 nov. 2012, 15:19

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 :P

Re: redirection des pages en index.php?page=accueil

par Saian » 29 nov. 2012, 14:58

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

par two3d » 29 nov. 2012, 14:44

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

par Saian » 29 nov. 2012, 13:16

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

par @rthur » 29 nov. 2012, 01:29

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

par two3d » 28 nov. 2012, 22:29

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

par dix2 » 28 nov. 2012, 19:48

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

par Saian » 28 nov. 2012, 16:47

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

redirection des pages en index.php?page=accueil

par lapinou8431 » 28 nov. 2012, 15:22

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