htaccess et acces par les scripts impossible?

htaccess et acces par les scripts impossible? - PHP - Programmation

Marsh Posté le 06-03-2004 à 17:54:46    

Bonjour,  
 
J'ai un problème que je ne parviens pas à résoudre et je n'arrive pas à trouver suffisamment de renseignements là dessus.  
J'ai un répèrtoire protégé par un .htaccess de base (Deny from all).
 
J'ai un script qui a besoin de lire un fichier texte de ce repertoire en utilisant la fonction file(). Le chemin d'accès est en url et en local. En effet, le script teste les deux méthodes.
 
Un fopen teste si le fichier existe. J'utilise cette fonction car file_exists() ne fonctionne qu'en local et j'ai besoin d'accéder à plusieurs de mes sites.
 
Mais le .htaccess bloque tout evidemment.... J'ai beau mettre le nom de mon site en acces autorises dans htaccess, rien n'y fait.  
 
Ma question est la suivante : comment faire pour proteger un répèrtoire de visiteurs peu scrupuleux, tout en laissant mes scripts passer et lire ce dont ils ont besoin? pourquoi le script y parvient-il en local et pas en utilisant l'url?
 
Car normalement mes scripts devraient pouvoir lire ces fichiers textes sans problèmes il me semble ?! Or il est impossible d'acceder à ces fichiers en passant l'url alors que la partie du script qui lit en local le même script, dans le même repertoire, y arrive parfaitement.
 
On m'a parlé de droits d'accès: j'ai beau tester en local avec easyphp ou en serveur, le problème est exactement le même. Pourtant windows ne possede pas de chmod ?!
Ca fait un moment que je suis là dessus et j'ai vraiment besoin de votre aide. Je ne sais plus quoi faire.
 
Je ne cherche pas à ce qu'on m'écrive le script, mais j'ai besoin de bonnes directions (urls, conseils) car je VEUX SAVOIR le faire ;-) C'est une question d'honneur entre mon pc et moi :-)))
 
 
 
Merci pour votre aide.
 
Voici le code :
 
<?
 
class lecture_fichier {
var $repertoire;
var $fichier_a_ouvrir;
var $contenu;
var $temp;
function ouvrir_fichier ($rep,$fich)
{//debut fonction
 
$this->repertoire=$rep;
$this->fichier_a_ouvrir=$fich;
 
$this->source=$this->repertoire.$this->fichier_a_ouvrir;
 
if ($F=@fopen($this->source,"r" )) // on teste si le fichier existe
{
//$this->temp = file($this->source);
$this->contenu=implode ('',file($this->source));
 
}
else
{
$this->contenu ="Cette page ne peut pas être affichée";
 
}
return $this->contenu;
}//fin fonction
 
 
}

$repertoire="http://www.google.com/";
$fichier="index.html";
$fichier_lol2 = new lecture_fichier ;
$fichier_lol2 ->ouvrir_fichier($repertoire,$fichier);
echo $fichier_lol2->contenu;
echo "<br>";
 
echo "SUR MON SERVEUR DISTANT: <BR>";
$repertoire="http://www.monsite.com/design/modele/";
$fichier="design.txt";
$fichier_lol3 = new lecture_fichier ;
$fichier_lol3 ->ouvrir_fichier($repertoire,$fichier);
echo $fichier_lol3->contenu;
echo "<br><BR>";
 
echo "SUR LOCAL AVEC URL: <BR>";
$repertoire="http://localhost/design/modele/";
$fichier="design.txt";
$fichier_lol4 = new lecture_fichier ;
$fichier_lol4 ->ouvrir_fichier($repertoire,$fichier);
echo $fichier_lol4->contenu;
 
echo "<br><BR>";
echo "SUR LOCAL SANS URL: <BR>";
$repertoire="modele/";
$fichier="design.txt";
$fichier_lol5 = new lecture_fichier ;
$fichier_lol5 ->ouvrir_fichier($repertoire,$fichier);
echo $fichier_lol5->contenu;
 
?>


---------------
Il n'y a rien de plus ridicule qu'un médecin qui ne meurt pas de vieillesse.Voltaire.
Reply

Marsh Posté le 06-03-2004 à 17:54:46   

Reply

Marsh Posté le 06-03-2004 à 21:03:21    

Un .htaccess ne protège que pour accès par HTTP donc la fonction file en accès local (par le système de fichier) fonctionne sans problème

Reply

Marsh Posté le 06-03-2004 à 21:55:13    

Merci pour ta réponse. Cette fois je comprend mieux pourquoi ça ne fonctionnait pas.
Maintenant, j'ai deux questions :
- est-t-il possible d'autoriser un site et un seul pour avoir acces via HTTP à un repertoire ?
-Si non, comment peut-on autoriser un site défini avoir acces à un repertoire d'un autre site? Existe-til une fonction de PHP que je ne connaitrais pas ou que je ne comprendais pas?
 
Merci encore pour vos lumières ;-)

Reply

Marsh Posté le 06-03-2004 à 22:00:25    

dans les .htaccess tu peux autoriser

  • un utilisateur
  • un groupe d'utilisateur
  • une IP
  • un groupe IP
  • ...


en fait tu utilises 2 modules d'Apache


Message édité par ratibus le 06-03-2004 à 22:05:53
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed