diving-seller Posté 13 Février 2009 Posté 13 Février 2009 Bonjour , J'ai une page qui est intégrée dans une autre . la page description.php comporte une include de la page maire.php . j'aimerais interdire aux visiteurs d'acceder directement à maire.php ou s'il tente de la faire de le renvoyer vers description-maire.php Merci de votre aide
LiFi Posté 13 Février 2009 Posté 13 Février 2009 Tu n'as qu'à placer la page mairie.php dans un dossier en dehors du dossier WWW ou public_html, enfin le dossier qui est la base de ton site web. Tu places mairie.php en dehors de ce dossier, tu peux toujours faire un include mais les visiteurs ne peuvent plus y accèder. c'est le plus simple je crois, sinon il y aurait d'autres solutions j'imagine, mais pourquoi y réfléchir, celle là est très simple.
diving-seller Posté 13 Février 2009 Auteur Posté 13 Février 2009 je n'y avais pas pensé ... c'est vrai que mettre maire.php dans un dossier serai l'ideal . Mais malheureusement meme si dans l'absolue c'est la solution simple , pour moi c'est limite la voie compliquée . J'ai du rewrite d'URL , de l'include par paramètre d'url et je suis pas trop à l'aise dedans . voila : RewriteEngine onRewriteRule ^description-([a-z]+)\.php$ description.php?page=$1 [L] <?php$page = 'defaut';if(isset($_GET['page'])) // si la variable n'est pas definie $page = $_GET['page'];$tab = array( 'defaut' => 'riou.php', 'radedemarseille' => 'radedemarseille.php', 'frioul' => 'frioul.php', 'cotebleue' => 'cotebleue.php', 'planier' => 'planier.php', 'maire' => 'maire.php', 'jarrejarron' => 'jarrejarron.php', 'plane' => 'plane.php', 'riou' => 'riou.php');if(array_key_exists($page, $tab)) { include($tab[$page]);}?> Un code en php en tete de la page maire.php pourrai marcher , opérant une redirection : if(eregi('maire.(html|php)', $_SERVER['REQUEST_URI']) ) { header ('HTTP/1.1 301 Moved Permanently'); header('Location: http://www.pixel-plongee.fr/description-maire.php'); Mais la j'ai une boucle infinie ... ce qui est logique
LiFi Posté 13 Février 2009 Posté 13 Février 2009 Ben deux solutions très simple, soit tu fais comme je t'ai dis, donc tu les met dans un répertoire en dehors du WWW, et dans ce cas il n'y a qu'à changer : 'maire' => 'maire.php', par 'maire' => '../autrerepertoire/maire.php', .. voulant dire un répertoire en arrière sinon si tu veux continuer a faire comme tu as fait, avec ton redirect qui fait une boucle, pour pas qu'il fasse de boucle il suffit de renommer tes pages, par exemple mairie.php tu l'appelle motclemairie.php et tu fais : if(eregi('motclemaire.(html|php)', $_SERVER['REQUEST_URI']) ) { comme ca il ne bouclera pas a cause du description-mairie.php
Leonick Posté 14 Février 2009 Posté 14 Février 2009 ou tu joues avec le htaccess en interdisant l'appel à ce fichier
diving-seller Posté 16 Février 2009 Auteur Posté 16 Février 2009 en interdisant avec le htaccess , j'interdis l'include aussi , non ?
petit-ourson Posté 16 Février 2009 Posté 16 Février 2009 Tu interdits l'include à partir d'un autre site distant - include('http://www..................monfichier.php') - mais tu n'interdis pas d'y accéder à partir de ton site - include('/tonfichier.php') -.
Leonick Posté 16 Février 2009 Posté 16 Février 2009 en fait ton htaccess restreint l'accès en mode web, alors que tes scripts travaillent, eux, en linux (ou windows) et donc les accès se règlent dans ce cas là par le système d'exploitation et non apache
devorigin Posté 18 Février 2009 Posté 18 Février 2009 Une solution simple à mettre en oeuvre mais qui marche très bien aussi est un simple define dans ta page qui inclut les autres. tu fais un define de ce style : <?phpdefine('INCLUSION_AUTORISEE',1);php?> puis en haut de tes pages que tu ne veux voir incluses que par cette page : <?phpif (INCLUSION_AUTORISEE != 1) {//fais ce que tu veux ici exit;}?>
b0b0 Posté 18 Février 2009 Posté 18 Février 2009 Bonjour, je mettrais juste cela au début du fichier : if (basename($_SERVER['PHP_SELF'])==__FILE__) die(); Si le nom du script appelé dans l'url (basename($_SERVER['PHP_SELF'])) est identique à celui du fichier PHP en cours (__FILE__), alors on n'affiche rien. en espérant aider b0b0
Leonick Posté 18 Février 2009 Posté 18 Février 2009 Une solution simple à mettre en oeuvrele plus simple reste quand même le fichier htaccess : rien à modifier dans les autres fichiers
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant