ayendail Posté 8 Juin 2009 Posté 8 Juin 2009 (modifié) bonjour j ai cherché une solution pour passer des variables pour créer une page rien qu avec des données de la base mysql. soit je n'ai plus besoin de get et de post, en fait le problème qui c'est posé est que je ne peux pas passer de variable en post et get avec mon template la page est réinitialisée à chaque affichage. le résultat est le suivant un fichier .htaccess à la racine du site qui dirige toutes les pages vers un script de récupération de variable avec n'importe qu'elle nom de page etc. Options +FollowSymlinksRewriteEngine onRewriteRule ^([a-z]+).html index.php [L] RewriteRule ^([a-z]+)-([a-z]+).html index.php [L] RewriteRule ^([a-z]+)-([a-z]+)-([a-z]+).html index.php [L] RewriteRule ^([a-z]+)-([a-z]+)-([a-z]+)-([a-z]+).html index.php [L]RewriteRule ^([a-z]+)-([a-z]+)-([a-z]+)-([a-z]+)-([a-z]+).html index.php [L] ensuite le script php <?php//ici je decompose l adresse en variable$requete = trim(str_replace('.html', '', $_SERVER['REQUEST_URI']), '/');//je recupere les variables sachant que l url est unnomdepage-variableun-variabledeux-variabletrois.html$pieces = explode("-", $requete);//ici je compte le nombre de variables:$compte = count ($pieces); si apres unnomdepage j ai une seule entrée de type" -variableun" je recupere cette variableif($compte ==2) {$page = $pieces[1];echo $page;}si apres unnomdepage j ai deux entrées de type" -variableun-variabledeux" je recupere cette variable et la variable suivante.if($compte ==3) {$page = $pieces[1];$id = $pieces[2];echo $page;echo $id;}//etc...?> soit j'ai les variables aprés par exemple afficher la categorie, une sous categorie, un article etc... partir d'un patron qui fera appel a la base de donnes pour recuperer le titre, une decription etc... que pensez vous de cette approche?? Modifié 8 Juin 2009 par ayendail
ayendail Posté 8 Juin 2009 Auteur Posté 8 Juin 2009 (modifié) suite du script la page index.php ou est rediriger toutes les pages fonction 1 descriptage de l url <?php//1-récupération de l'url de la page demandée//$requete = trim(str_replace('.html', '', $_SERVER['REQUEST_URI']), '/');//décomposition de l'url en variables pour acceder au chemin de la page demandées//$variable = explode("-", $requete);$compte = count ($variable); if($compte ==3) {$modules = $variable[1];$pages = $variable[2];}?> page 2 index.php <?php// Initialisationrequire_once "configuration/configuration.php";require_once "libs/affichage.php";// Début de la tamporisation de sortieob_start();// Si un module est specifié, on regarde s'il existeif (!empty($modules)) { $modules = 'modules/'.$modules.'/'; // Si la page est specifiée, on l'utilise, sinon, on tente une action par défaut $fichier = (!empty($pages)) ? $pages.'.php' : 'index.php'; // Si l'action existe, on l'exécute if (is_file($modules.$fichier)) { $modules = $modules; $html = $fichier; // Sinon, on affiche la page d'accueil ! } else { $modules = 'modules/home/'; $html = 'home.php'; }// Module non specifié ou invalide ? On affiche la page d'accueil !} else { $modules = 'modules/home/'; $html = 'home.php';}// Fin de la tamporisation de sortie$contenu = ob_get_clean();//On inclut et on instancie notre classe include("application.class.php"); $application = new application(); $application->buildPage($modules,$html); //On inclut le template qui appel les différents éléments de la page include($application->template); // Fin du code HTML?> la class template <?phpclass application { var $header; var $entete; var $content; var $footer; var $template; //FONCTION CONSTRUCTEUR function application() { $this->template='template.html'; } //FONCTION QUI CREE LE HEADER function getHeader() { $this->header = 'global/header.php'; } //FONCTION QUI CREE LE MENU function getEntete() { $this->entete.='<a href="?action=afficherIndex">Index</a>'; } //FONCTION QUI CREE LE CONTENU function getContent($modules,$pages) { $this->content.= $modules.$pages; } //Sinon on fait afficher la page d'accueil //FONCTION QUI CREE LE PIED DE PAGE function getFooter() { $this->footer = 'contenu du pied de page'; } /*FONCTION QUI APPELLE LES FONCTIONS DE CREATION DES DIFFERENTES PARTIES DE LA PAGE*/ function buildPage($modules,$pages) { $this->getHeader(); $this->getEntete(); $this->getContent($modules,$pages); $this->getFooter(); }} //Fin de la classe application?> le template.html <div id= " divHeader " >1<?php require_once "$application->header"; ?></div ><div id= " divMenu " >2<?php echo($application->entete); ?></div ><div id= " divContent " >3<?php require_once "$application->content"; ?></div ><div id= " divFooter " >4<?php echo($application->footer); ?></div > c'est basé sur 2 tutoriaux site du zero le but est de simplifier les templates juste séparer le code de la mise en page pas de se servir d'un moteur et repassait du temps a apprendre le langage spécifique. est ce que ce systeme vous parait sécurisé?? quelque soit l url le bidouillage de quelqu un sur l url ou autre rien ne se passe si la page n'existe pas etc... de même le fait de pouvoir récupérer les variables dans l url et non dans des posts et get permet de vérifier directement son existence en texte sans aucun symbole etc dans la base de données. ce système est fait pour l affichage d articles simples. la page index devenant le controleur et le repartiteur du site dans son ensemble. Modifié 8 Juin 2009 par ayendail
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant