(résolu) Protection de données d'un repertoire, probleme de loading

Protection de données d'un repertoire, probleme de loading (résolu) - PHP - Programmation

Marsh Posté le 29-04-2011 à 10:08:42    

Bonjour, après plusieurs heures de manip sans succès je vous confie mon probleme.
 
J'ai un serveur avec des images dans un répertoire './photos' protégé par un .htacess en "denny all"
 
Pour visualiser les images, des users dans une session ouverte vont appeler ce script :
 
img.php :

Code :
  1. <?php
  2. session_start();
  3. if (!isset($_SESSION['login'])) {header('location: index.php'); exit();}
  4. if ( isset($img) )
  5. {
  6. header("Cache-Control: no-cache, must-revalidate" );
  7. header('Content-type: image/jpeg');
  8. header("Content-Length: ".filesize($img)."; " );
  9. header("Expires: Sat, 26 Jul 1997 05:00:00 GMT" );
  10. header("Content-Length: ".filesize($img)."; " );
  11. readfile("$img" );
  12. }
  13. ?>


 
Ce script est appelé depuis des pages classiques en php comme ceci :
 

Code :
  1. echo '<img src="img.php?img=/photos/toto.jpg">';


 
cela fonctionne très bien s'il n'y a qu'une image, mais dès qu'une page appelle plusieurs fois img.php alors les images ne se chargent pas toutes dans la fenetre de navigateur.
 

Code :
  1. echo '<img src="img.php?img=/photos/toto1.jpg">';
  2. echo '<img src="img.php?img=/photos/toto2.jpg">';
  3. echo '<img src="img.php?img=/photos/toto3.jpg">';
  4. echo '<img src="img.php?img=/photos/toto4.jpg">';
  5. echo '<img src="img.php?img=/photos/toto5.jpg">';


 
le chargement est aléatoire. des fois il y en a deux qui s'affichent, des fois trois, quand on refresh, c pareil, elles s'affichent aléatoirement.
 
Une idée ?
 
Merci à vous,
 
reng.


Message édité par rengzehn le 09-05-2011 à 11:16:56
Reply

Marsh Posté le 29-04-2011 à 10:08:42   

Reply

Marsh Posté le 29-04-2011 à 13:44:20    

Cette protection est illusoire. A partir du moment, où les données sont transmises à un poste, elles peuvent ensuite y être stockées par l'utilisateur, le plus simple étant un printscreen.
 
Je conseillerais plutôt de mettre un filigrane et de les afficher de manière standard.

Message cité 1 fois
Message édité par olivthill le 29-04-2011 à 13:46:00
Reply

Marsh Posté le 29-04-2011 à 13:52:22    

olivthill a écrit :

Cette protection est illusoire. A partir du moment, où les données sont transmises à un poste, elles peuvent ensuite y être stockées par l'utilisateur, le plus simple étant un printscreen.
 
Je conseillerais plutôt de mettre un filigrane et de les afficher de manière standard.


 
ce n'est pas un probleme. Les utilisateurs loggés peuvent faire ce qu'ils veulent avec les images. Par contre ça a l'avantage d'interdire l'accès à tout autre personne.

Reply

Marsh Posté le 29-04-2011 à 14:15:27    

Elles ont quelle taille tes images?  
Parce que ces effets "aléatoires" ça sent le timeout quelque part dans ton script, ce qui pourrait être causé par trop d'infos à charger dans les buffers PHP


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 29-04-2011 à 14:58:53    

Elles font moins de 300ko.

 

Dans img.php j'ai essayé un

 

readfile("$img" );

 

et

 

$s = file_get_contents($img);
echo $s;

 

et le résultat est le même, chargement aléatoire au niveau du client, sur plusieurs navigateurs.

 

Le site est sur les pages perso de free.

 

j'ai essayé en rajoutant des onload=alert"plop" dans la balise image. Seulement celles qui se chargent font poper l'alerte et pourtant elles apparaissent bien toutes dans le code source de la page.

 

J'hésite entre

 

- probleme de cache des navigateurs (puisque ces images n'en sont pas réellement, c'est du contenu envoyé avec un header pour signifier le type au navigateur)

 

- le serveur qui ne traite pas toutes les demandes.

 

Mais je ne sais pas comment vérifier ça.


Message édité par rengzehn le 29-04-2011 à 15:10:45
Reply

Marsh Posté le 29-04-2011 à 17:41:56    

j'ai une idée de faire un test:
au lieu d'écrire echo "<img .... />";
peux-tu écrire en javascript comme:
dans un boucle : ajouter un élément img, mais avec time()+10s
On va voir le problème peut-être.

Reply

Marsh Posté le 09-05-2011 à 11:17:17    

résolu, ça fonction bien chez OVH en mutualisé

Reply

Sujets relatifs:

Leave a Replay

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