8791 sujets

Développement web côté serveur, CMS

Bonjour, je vous explique,
j'ai suivi une formation très générale, de deux ans, permettant d'apprendre à créer un site internet.
J'ai choisis de travailler directement en tant que web développeuse, car c'est une chose qui m'a beaucoup plu durant mes études.
Sauf que j'ai beaucoup de lacune, j'aurais mieux fait de me spécialiser en faisant une 3ème année, car là, je dois créer un site internet pour une petite entreprise et j'ai quelques difficultés (je suis seule sur le projet, donc personne pour m'aider, pour ça que je viens à vous)

Pour créer ce site (qui ne contiens pas beaucoup de pages, mais qui demande un travail sur la mise en page, les animations ect, ...), j'ai choisis de partir de rien, de coder à la main les pages.
(pas un enorme backoffice derrière)
Et pour cela, je structure mon site autour de controller (on m'a appris à coder comme ça, et je trouve cette structure assez sécurisé, je me trompe peut-être, mais le code me semble plus cohérent, plus structuré, et les accès aux différents fichiers, plus sécurisé)

Mon soucis: Le routage du site, faire en sorte que mon adresse:
http://www.monsite.com/index.php?app=adm apparaisse comme ceci:
http://www.monsite.com/adm


Pour vous faire une idée de la structure du site:

Répertoire / du site:

/lib
/model (dans lequel se situe mes fonctions)
/www (mon site pointe sur www)
config.inc

dans /www :

index.php (mon controller)
/adm
/blog
/home
/medias

Dans chaque sous dossier de /www, il y a un petit controller qui va appeller les fichiers nécessaire à la page.



Le soucis est donc l'index.php de /www il contient:

<?php
//Controleur principal
	require_once '../config.inc.php';
		$nom = 'app';
		$valeur='home';
	if (isset($_REQUEST[$nom])) {
		$valeur = $_REQUEST[$nom];
	
	}
	
require_once $valeur . DIRECTORY_SEPARATOR . "index.php";  
?>

Donc, quand je tape l'adresse de mon site, il charge ce controleur, si il n'y a pas de requête de type 'app', il charge par défaut la page index de mon dossier 'home'.

Pour allez dans mes autres dossier, autre que home, je dois faire une requête en passant par ce controlleur, l'idée que toutes les actions du site passe par ce fichier, est intéressante, seulement, c'est pas très beau, alors j'ai pensé à faire une réécriture url via un .htaccess, sauf que, les controllers de mes sous-dossier n'inclu pas le fichier de config, et d'ailleurs, même si je voulais l'inclure, je ne pense pas pouvoir, et ça m'embête de ne plus passer par le controleur principal pour faire afficher mes pages.

Serait il possible de faire en sorte, de réécrire l'url de mon site, avec la structure actuelle du site, tout en tapant dans l'index.php?
ou de faire un autre type de routage qui permettrais d'arriver à la même chose? ou bien la structure actuelle de mon site m'en empêche?

Bref, si une bonne âme veut bien passer pour m'éclairer. ( et me traiter de noob ne m'aidera pas, hein ^^ )
Modifié par CamilleM (24 Jan 2012 - 13:46)
De manière général pour ce genre de structure on redirige toutes les requêtes vers le fichier index.php où l'on va parser la requête pour en extraire le contrôleur (et éventuellement action, paramètres...).
De cette manière ta configuration se présente sur chaque page. Tu peux ajouter à cela un système de templating pour l'habillage du site.

Tu peux aller voir ce tutoriel vidéo qui explique assez bien comment s'y prendre : http://www.youtube.com/watch?v=CGiIVQPaOJQ&feature=player_embedded
Je vois à peu près ce que c'est que du MVC, j'ai construit un site en utilisant le framework codeigniter. Mais la structure de mon site n'est pas toute à fait la même (je n'utilise pas de template, disons que j'ai mon controler principal qui va charger le controler du sous dossier qu'il lui faut, selon l'url qui lui ai donné. Et chaque petit controller va charger les différents bouts d'html qu'il lui faut, dont le header et footer principal, qui sont rangé dans un coin et qui ne change jamais ou presque. et le header va charger les quelques feuilles de style dont le site à besoin.
Je me sens pas assez à l'aise avec le système de MVC (codage avec les class, -> ect, tout le tralala, ça me dépasse encore, même si je m'en sort bien avec codeigniter, j'avais plus l'impression que c'était le même codage employé, enfin bon, j'aurais besoin d'un approfondissement au niveau de mes notions, avec une formation pour dépatouillé tout ça, car avec quelques tuto par ci par là, et vu la complexité (pour moi c'est complexe) de tout ce petit monde, je ne m'en sors pas, donc je réutilise ce que je sais faire et j'approfondis mes notions, j’élargirais mes notions avec des formations plus avancés en php, mais pas toute seule et plus tard, car là pas le temps)

Donc, ma config est bien chargée à chaque page grâce à mon controller principal. Donc, serait il possible, sans devoir changer toute ma structure/ tout mon code, de charger mon controller.
En gros de faire tout de même la requête, mais de la cacher.
(ou de faire passer les informations autrement que par ma requête)

Des idées? ou bien la structure MVC est la seule qui me permettrais de faire ça?

(merci pour ton aide moust, c'est une solution, mais qui me fait retaper tout mon code, encore ça c'est pas un drâme, ce que je n'aime pas c'est de construire un site sur quelque chose que je ne maîtrise pas du tout, déjà qu'avec la structure actuelle de mon site, j'ai des lacunes mais que je comble de jour en jour,mais alors je raconte même pas si j'optais pour cette solution là Smiley decu )




Edit: Après quelques tests, j'ai réussi à faire de l'url rewritting (je pensais avoir bien suivi les tuto correctement, mais après quelques tests, me suis apperçut qu'en local, ça ne fonctionne pas de la même façon qu'en site hébergé.)
Donc l'url rewriting fonctionne à merveille seulement si l'url que j'appelle ne porte pas le nom du dossier, sinon ça ne passe pas, il va directement dans le dossier demandé, au lieu de regarder le htaccess de /www

Bref, petit problème résolut ^^
Modifié par CamilleM (24 Jan 2012 - 11:40)