Aller au contenu

limitation d un htacess ou simplifié une fonction.


Sujets conseillés

bonjour,

je vais expliquer d 'abord ma logique. rediriger la page dans certain cas si n existe pas erreur 404.

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]

pour mieux comprendre j ai une fonction qui décrypte l url je passe pas par des get ou post pour afficher une page. dans une page affichage.php.

<?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);

//on compte le nombre de variables et on prends en compte en consequences//
$compte = count ($variable);

//fonction permettant d'afficher les pages selon le module et la page demandée si elle existe//
if($compte ==3) {
$modules = $variable[1];
$pages = $variable[2];
}
if($compte ==4) {
$modules = $variable[1];
$pages = $variable[2];
}
if($compte ==5) {
$modules = $variable[1];
$pages = $variable[2];
}
if($compte ==6) {
$modules = $variable[1];
$pages = $variable[2];
}
?>

je met la page d'index.php mais c est plus technique si la page demandée existe elle s affcihe sinon on retombe sur la page d'accueil.

ca me permet de vérifier qu'il n'y a pas de caractères spéciaux dans l'url, pas de bidouillage en php ou autre. et de construire la page sur le serveur. et de retravailler une page si necessaire.

<?php
session_start();
// 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

?>

Donc dans ce cas la est ce que les quelques lignes que j'ai écris dans le htaccess sont vraiment maléfique?? on m'a parler de limitation de caractères mais je depasse pas les 9 variables.

Lien vers le commentaire
Partager sur d’autres sites

ca me permet de vérifier qu'il n'y a pas de caractères spéciaux dans l'url, pas de bidouillage en php ou autre.

Vérifier la validité des paramètres, et afficher le cas échéant un message d'erreur adéquat, ce n'est pas du "bidouillage", et c'est bel et bien au PHP de le faire...

Pourquoi n'utilises-tu pas une méthode plus classique ? (genre réécriture d'url puis récupération des paramètres dans la variable $_REQUEST)

Lien vers le commentaire
Partager sur d’autres sites

Ton .htaccess actuel pourrait peut-être être simplifié en :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-z-]+).html index.php [L]

Jean-Luc

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Bonjour et merci de vos reponses.

je pense que je vais expliciter mon travail.

tout simplement en lisant un tutoriel sur le MVC http://www.siteduzero.com/tutoriel-3-31452...modele-mvc.html. j' en suis venu au moteur de template et a l'url rewriting.

pour ne pas à apprendre encore un langage "inutile" (j avais appris le spip langage moteur pour rien). j'ai cherché un tutoriel sur le mvc, comment en créer un. j'en ai trouver un et adapter le fichier l'index.php.

voici le tutoriel .

pourquoi l'adaptation du mvc? seulement pour intégrer un moteur de template (qui fonctionne en php sans moteur en fait). voici le tutoriel.

en effet dans le tuto du site du zéro, l'entête et le pied de page sont inclus si je veux 2 design de pages différents par exemple un pour le forum et l autre pour l'accueil je ne peux pas. le même entête est intégrer

en partant du principe qu'il me fallait un outil simple pour gérer les css, les class différents etc, et qu'une url propre serait plus compréhensible au visiteur j'ai regarder du coté de l'url rewriting.

j'ai remarqué ce tutoriel: http://www.urlrewriting.fr/tutoriel-urlrew...eur-rewrite.htm.

seul problème dans les outils de google je n'avais que des erreurs 404. de ce fait je l'ai adapter par 1 le fichier htaccess que vous avez au dessus, et le code de la page affichage.

car sinon ce n'était pas possible de passer des get et des post.

donc pour palier a un éventuel risque d'erreur etc.. j'ai conçu le décryptage de l'url de tel manière que var1 donne la référence de la partie du site, var2 le module concerné var 3 la page demandées et les 3 autres variables à afficher la class , le design et les valeurs demandées.

en finalité je suis content de ce que j'ai, mais je cherche à savoir si c'est pas hors norme pour les navigateurs.

un exemple voici le sommaire des pages sur mon site, c est mon cahier des charges en fait.

ou je vais écrire tous les liens directement.

soit quand le module sera présent le module demandée s'affichera, sinon page d'accueil. cela me permet de construire mon site simplement et si j ai des rectifications à faire plus tard à ne pas avoir d'erreur404 a tout bout de champs.

donc voila je vous ai exposé ma logique par rapport à un contrôleur si je me trompe pas de nom.

avez vous des suggestions pour l'améliorer? en fait c'est simple c'est faire comme un moteur de template mais en gardant la programmation php sans bibliothèque ni rien d'autre. je désire rester maitre des fonctions, comprendre pourquoi comment et ou va une fonction. mais surtout être conscient des risques encouru. j'ai abandonné l'intégration de script tout fait au vue des trous dans la sécurité.

merci de m'avoir lu

p.s j'ai appris le php de manière empirique en étudiant les scripts et avec le site du zéro. Donc si dans le script il y a des fonctions qui vous paraissent illogique dites le moi. Par ailleurs c'est bien un sujet sur l'url rewriting puisque le script repose sur le fichier htacess.

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...