Aller au contenu

Creer une page html inexitante se servant de la base mysql


ayendail

Sujets conseillés

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 +FollowSymlinks
RewriteEngine on
RewriteRule ^([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 variable
if($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é par ayendail
Lien vers le commentaire
Partager sur d’autres sites

Posté (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

// Initialisation
require_once "configuration/configuration.php";
require_once "libs/affichage.php";

// Début de la tamporisation de sortie
ob_start();

// Si un module est specifié, on regarde s'il existe
if (!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

<?php

class 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é par ayendail
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...