Jump to content
Sign in to follow this  
diving-seller

empecher l'acces direct à une page mais autoriser l'include

Rate this topic

Recommended Posts

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 on
RewriteRule ^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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 :

<?php
define('INCLUSION_AUTORISEE',1);
php?>

puis en haut de tes pages que tu ne veux voir incluses que par cette page :

<?php
if (INCLUSION_AUTORISEE != 1) {
//fais ce que tu veux ici
exit;
}
?>

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Une solution simple à mettre en oeuvre
le plus simple reste quand même le fichier htaccess : rien à modifier dans les autres fichiers

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...