[Résolu]Cherche façon plus simple de créer un site ? -> MVC

Cherche façon plus simple de créer un site ? -> MVC [Résolu] - PHP - Programmation

Marsh Posté le 26-06-2007 à 15:43:07    

Bonjour,
jusqu'à maintenant lorsque je créais un site j'utilisais le système suivant :
un fichier index.php qui sert de squelette de mes pages web
dans lequel on inclus une page variable
cette page correspond en fait à une variable renvoyée par un switch du genre si la variable $page vaut "exemple" il renvoi la page exemple.php qui inclus celle-ci dans le index.php
 
Je sais pas si je suis clair ^^
En tout cas, c'est un système intéressant mais qui atteint vite sa limite. Si on posséde une centaine de page, il faut alors les recenser dans le switch à chaque fois, ce qui est assez rébarbatif...
 
Donc voilà je sais pas si vous utilisez un autre système que cleui-là plus simple et plus léger. Utilisant le PHP (donc pas de frame html svp ;) ) ou alors du javascript sachant que je connais pas trop trop).


Message édité par elojar le 26-06-2007 à 16:33:50
Reply

Marsh Posté le 26-06-2007 à 15:43:07   

Reply

Marsh Posté le 26-06-2007 à 15:59:59    

Moi j'utilise plutôt une petite astuce pour palier cette faille include, je fais un file_exists() comme ceci:

Code :
  1. if (file_exists($_GET["page"] .".php" ))
  2. {
  3.     include ($_GET["page"] .".php" );
  4. }
  5. else
  6. {
  7.     // Erreur 404, etc...
  8. }


Ca n'inclut la page que si elle existe sur le serveur. Si tes pages sont stockées dans un répertoire différent ou ne portent pas le même nom que la variable $_GET["page"] demandée, tu peux toujours faire des exceptions avec else if.


---------------
.:: Kmeleon ::.
Reply

Marsh Posté le 26-06-2007 à 16:19:09    

Tu peux faire un peu plus compliqué et te lancer dans les design patterns comme le MVC.

 

http://forum.hardware.fr/hfr/Progr [...] 7425_1.htm


Message édité par AlphaZone le 26-06-2007 à 16:21:49

---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 26-06-2007 à 16:22:21    

Une autre approche :
http://forum.hardware.fr/hfr/Progr [...] 7425_1.htm

 

edit: grilled :x


Message édité par c0wb0y le 26-06-2007 à 16:22:41
Reply

Marsh Posté le 26-06-2007 à 16:32:52    

Intéressant =) Merci les gars.
Sinon j'ai vu un module type MVC qui s'apelle symfony un collégue m'avait conseillé ça. Vu que ce nom "MVC" revient je crois que cette méthode commence à se généraliser et donc il me semble inévitable de me lancer là dedans :p
 
Le topic a l'air plutôt bien foutu en plus.

Reply

Marsh Posté le 26-06-2007 à 17:00:12    

elojar a écrit :

Le topic a l'air plutôt bien foutu en plus.


Mais il l'est :D

 

J'y ai appris pas mal de chose intéressante ;)

 


[:al zheimer]


Message édité par AlphaZone le 26-06-2007 à 17:01:31

---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 27-06-2007 à 09:12:47    

   Sujet résolu, mais j'en profite pour poursuivre la discussion sur l'architecture d'un site php...
 
    Le framework (modèle de conception) MVC est très prisé dans la plupart des langages (personnellement utilisé en java et jsp [oui il y aussi du java mais pas seulement]). Il s'agit d'un pattern "relativement" simple à comprendre et à mettre en oeuvre.
 
    Question : En php l'architecture à page variable avec des includes pose des soucis de sécurité => vérification du nom de la page, par structure switch ou file_exists() (+1 kmeleon1) mais avec différents répertoires c'est encore réalisable mais ça se complique un peu.
                   Que pensez vous de procéder à l'envers ce n'est pas le contenu de la page qui est variable, mais l'en-tête, le menu, etc. . Ce n'est pas mon idée, mais elle est proposée la plupart du temps... Alors oui si on veux refaire la conception du site ça oblige à reprendre chaque page (et encore si on a un css commun peut être pas). Mais que pensez vous de cette solution? (J'accepte les c'est nul, t'es fou toi si il y une raison derrière...)
     

Reply

Marsh Posté le 27-06-2007 à 10:13:35    

C4O2 a écrit :

Sujet résolu, mais j'en profite pour poursuivre la discussion sur l'architecture d'un site php...

 

   Le framework (modèle de conception) MVC est très prisé dans la plupart des langages (personnellement utilisé en java et jsp [oui il y aussi du java mais pas seulement]). Il s'agit d'un pattern "relativement" simple à comprendre et à mettre en oeuvre.

 

   Question : En php l'architecture à page variable avec des includes pose des soucis de sécurité => vérification du nom de la page, par structure switch ou file_exists() (+1 kmeleon1) mais avec différents répertoires c'est encore réalisable mais ça se complique un peu.
                   Que pensez vous de procéder à l'envers ce n'est pas le contenu de la page qui est variable, mais l'en-tête, le menu, etc. . Ce n'est pas mon idée, mais elle est proposée la plupart du temps... Alors oui si on veux refaire la conception du site ça oblige à reprendre chaque page (et encore si on a un css commun peut être pas). Mais que pensez vous de cette solution? (J'accepte les c'est nul, t'es fou toi si il y une raison derrière...)

 

Pas besoin d'utiliser un switch. Tu peux très bien utiliser un tableau.
Exemple :
pages.php

Code :
  1. $pages = array('Home', 'Contact', ...);
 

FrontController.php

Code :
  1. $i = (integer)$_GET['p'];
  2. if (array_key_exists($i, $pages)) {
  3.    $page = $pages[$i];
  4.    include_once('controller/'.$page.'php');
  5.    $ctrl = new $page();
  6.    $ctrl->run();
  7. } else {
  8.    // Appel de la page par défault ou de la page erreur
  9. }
 

Bon j'ai zappé quelques tests sur le $_GET, je veux juste que tu comprenne bien l'idée qu'il est possible d'éviter d'avoir un switch.

 

Il aurait été intéressant que ton message soit dans le topic MVC pour tout regrouper.


Message édité par AlphaZone le 27-06-2007 à 10:14:49

---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 27-06-2007 à 10:29:27    

   L'idée du tableau me plaît assez. Du coup il me paraît impossible (bien plus difficile ^^) d'afficher une page différente.
 
    C'est vrai que mon post avait sa place dans le topic MVC, mais j'étais tombé sur ce topic et j'en ai profité pour poser une question.
 
    J'en déduis qu'on oublie l'idée des pages ayant tout de variable (en-tête, menu, ...) sauf le contenu... ^^

Reply

Marsh Posté le 27-06-2007 à 11:00:40    

C4O2 a écrit :

L'idée du tableau me plaît assez. Du coup il me paraît impossible (bien plus difficile ^^) d'afficher une page différente.


Comment ca "page différente" ? Je ne vois pas trop ce que tu veux dire.


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 27-06-2007 à 11:00:40   

Reply

Marsh Posté le 27-06-2007 à 11:10:21    

L'utilité de faire une vérification sur le nom de la page est de vérifier que la page que l'on désire afficher est bien une de celle prévue (ie : créée par l'administrateur du site), par page différente j'entends, si pour une raison ou pour une autre une personne avait la possibilité de transmettre une autre page avec pour contenu un gros titre "Coucou, je suis un incruste!", c'est le contenu de cette page qui serait affichée. La vérification sert justement à éviter ceci.
    Mais avec ton système de tableau, ce n'est pas possible, puisque tu es forcé de passer par une page contenue dans ton tableau, ce qui est très bien.

Reply

Marsh Posté le 27-06-2007 à 12:54:08    

Ah oui, je comprend mieux :D


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 27-06-2007 à 22:25:24    

pas moi :p
 
je vois pas trop comment on peut avoir des pages différentes avec le meme contenu (meme si les en-tetes menu sont différents).
 
sinon y'a toujours d'autres solutions, la meilleure reste celle du MVC, mais sinon pour un site standards, on générale on a des parties fixes (entete, menus, footer etc.) ben il suffit de les séparer, et les inclure dans les différentes pages appelées par l'utilisateur, il n'appelle que ce qui existe déjà, et les parties communes sont factorisées, donc pas de répétitions. mais bon, ça ne vaut pas un bon MVC bien pensé (c'est dingue je ne vois plus que ça maintenant :D)

Message cité 2 fois
Message édité par naeh le 27-06-2007 à 22:26:35
Reply

Marsh Posté le 28-06-2007 à 09:15:23    

Code :
  1. Que pensez vous de procéder à l'envers ce n'est pas le contenu de la page qui est variable, mais l'en-tête, le menu, etc. . Ce n'est pas mon idée, mais elle est proposée la plupart du temps... Alors oui si on veux refaire la conception du site ça oblige à reprendre chaque page (et encore si on a un css commun peut être pas). Mais que pensez vous de cette solution? (J'accepte les c'est nul, t'es fou toi si il y une raison derrière...)
 
naeh a écrit :

pas moi :p
sinon y'a toujours d'autres solutions, la meilleure reste celle du MVC, mais sinon pour un site standards, on générale on a des parties fixes (entete, menus, footer etc.) ben il suffit de les séparer, et les inclure dans les différentes pages appelées par l'utilisateur

 

   J'avais soulevé le problème... mais apparement cette solution ne choque personne. Je pense qu'il s'agit des éternelles discussions sur la meilleure façon de programmer...

 
Code :
  1. Comment ca "page différente" ? Je ne vois pas trop ce que tu veux dire.


    Je te renvoie ici (site bien pratique pour commencer surtout pour un total newbee, savoir lire en diagonal pour les autres).
        http://www.siteduzero.com/tuto-3-1 [...] #ss_part_2
    Sinon MVC ça déchire ^^, c'est bien pratique, surtout en cas d'évolution du site... et tu peux reprendre la vue pour d'autres sites...

 

   edit : ajout du lien

Message cité 1 fois
Message édité par C4O2 le 28-06-2007 à 10:53:06
Reply

Marsh Posté le 28-06-2007 à 10:18:29    

C4O2 a écrit :

Je te renvoie ici (site bien pratique pour commencer surtout pour un total newbee, savoir lire en diagonal pour les autres).


Tu me renvoie où ?? Y'a pas de lien...


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 28-06-2007 à 10:55:15    

AlphaZone a écrit :

Tu me renvoie où ?? Y'a pas de lien...


Lien ajouté ^^
 
http://www.siteduzero.com/tuto-3-1 [...] #ss_part_2

Reply

Marsh Posté le 28-06-2007 à 11:41:23    

Oui enfin tu me prends par les sentiments là.
 
J'suis peut être pas très futfut mais j'suis pas né de la dernière pluie. Je sais comment fonctionne un include (enfin presque :D)


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 28-06-2007 à 14:20:45    

naeh a écrit :

pas moi :p
je vois pas trop comment on peut avoir des pages différentes avec le meme contenu (meme si les en-tetes menu sont différents).


    Je répondais à naeh ^^. Et j'ai bien précisé qu'il s'agissait d'un site pour totals newbee... ^^ Mais très bien fait tout de même ^^

Reply

Marsh Posté le 28-06-2007 à 15:55:13    

T'avais repris mon texte, s'pour ca :D


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed