htaccess

php, asp, html, c++ ...

htaccess

Messagede Casea le Sam Juin 11, 2005 08:01

Bon je refais vite fait ce sujet qui a disparu.

Je ne sais pas si tu as eu le temps de lire ma réponse Aigle, alors je la refait rapido :
Je disais que j'étais déçue de ne pas trouver de solution lol

Pour le click droit ça ne protège pas la hotlink directement mais ne pas donner l'accès à l'URL en un simple click est quand même décourageant pour une bonne partie : je veux mettre une image sur un forum, il devient alors plus rapide d'héberger son image sur imageshack par exemple :)

Alors je refais mon sujet, desfois que qqun ait une idée, une astuce.

Mes images sont stockées sur un hébergeur qui ne gère pas php ou htaccess.
Mon site est hébergé sur un qui gère tout ça.
Je voulais savoir s'il existait un truc pour protéger mes images de la hotlink, qu'il s'affiche la croix rouge par exemple. Un truc qui ne passerait pas par htaccess, ou par celui de mon autre hébergeur (donc avec des codes et mots de passe, enfin une protection, comme tu le soulignais Aigle).

Gros bisous d'ailleurs au passage toi ! :bis:
Avatar de l'utilisateur
Casea
Elfe au dragon
Elfe au dragon
 
Messages: 4318
Inscription: Dim Fév 22, 2004 19:03
Localisation: Soleil

Messagede CrazyCat le Mer Aoû 10, 2005 17:35

Je ne comprend pas tout à la question, mais grosso-modo tu voudrais que les images ne puissent être affichées que depuis ton site, c'est cela?
Si oui, il y a un moyen de le faire en PHP, qui va en fait cacher l'url de tes images et les afficher "on the fly".

Si c'est bien ce que tu veux, confirme et je te fais le code.
Image
Avatar de l'utilisateur
CrazyCat
Beau parleur
Beau parleur
 
Messages: 535
Inscription: Mar Avr 13, 2004 14:25
Localisation: Middle of nowhere

Messagede Casea le Mer Aoû 10, 2005 17:59

Coucou !

Oui c'est bien ce que je veux, enfin ça pourrait être une solution !
Du moment qu'on ne puisse pas simplement faire "click droit / Url" pour la copier sur un forum et faire de la hotlink ça me va ! Il y aurait déjà un grand nombre de personnes qui s'en découragerait ! :)
Le soucis :
Mes images sont stockées sur un hébergeur qui ne gère pas php ou htaccess


En gros je ne peux que faire du html ou java sur cet "hébergeur" (c'est en fait le FTP offert par mon FAI, qui me donne 600Mo d'espace ...)

J'ai aussi un hébergeur que je paye, qui peut donc executer du php ou un htaccess, mais je n'y stocke pas mes images ! J'y ai peu d'espace. J'y mets uniquement mes pages webs pour justement executer ces scripts php ou htaccess
Avatar de l'utilisateur
Casea
Elfe au dragon
Elfe au dragon
 
Messages: 4318
Inscription: Dim Fév 22, 2004 19:03
Localisation: Soleil

Messagede CrazyCat le Mer Aoû 10, 2005 18:25

OK, donc sur ton hébergeur PHP, il te faut un script que tu appelleras par exemple image.php
Code: Tout sélectionner
<?
$base_url = "http://www.hebergeur.com/images/";
// URL et répertoire ou sont les images

$image = $_GET["image"];
if (!isset($image) || ($image == "")) {
   $image = "error.gif";
   $uimage = $base_url."error.gif";
} else {
   $uimage = $base_url.$image;
   if (!file_exists($uimage)) {
      $image = "error.gif";
      $uimage = $base_url."error.gif";
   }
}

$extension = strtolower(substr($image, -4));
switch($extension) {
   case ".gif":
      $contype = "image/gif";
      break;
   case ".jpg":
   case "jpeg":
   case ".jpe":
      $contype = "image/jpeg";
      break;
   case ".png":
      $contype = "image/x-png";
      break;
   default:
      $image = "error.gif";
      $uimage = $base_url."error.gif";
      $contype = "image/gif";
      break;
}
header("Content-type: ".$contype);
header("Content-Disposition: inline; filename=\"$image\"");
header("Content-Transfer-Encoding: binary");
readfile($uimage);
?>

Bien entendu, il faut que ton hébergeur payant accepte de lire les fichiers distants, sinon il faut un peu modifier.

Utilisation
Tes images seront appelées de la manière suivante:
<img src="image.php?image=essai.gif"> pour afficher l'image essai.gif.
Image
Avatar de l'utilisateur
CrazyCat
Beau parleur
Beau parleur
 
Messages: 535
Inscription: Mar Avr 13, 2004 14:25
Localisation: Middle of nowhere

Messagede Casea le Jeu Aoû 11, 2005 20:03

Hum ... je ne saisie pas le principe ?

Qu'est ce qui lance l'execution du script si je mets ce fichier php de façon isolée sur mon hébergeur ? Il s'execute tout seul ?
Que veut dire : "lire les fichiers distants" ?
Mon hébergeur lit les images et autres java qui sont sur noos oui !

Je suis niveau débutante ----; j'en suis à commencer à lire les scritps, surtout pas les éditer (ou seulement pour des ti détails graphiques lol)
Ca m'interesse et m'amuse bcp à la fois. Je suis donc curieuse de comprendre le principe.

J'ai donc fait bêtement ce fichier image.php en modifiant la seule ligne à modifier (? Pas d'erreur ?)

Code: Tout sélectionner
<?
$base_url = "http://mapage.noos.fr/caseadivers2/";
// URL et répertoire ou sont les images

$image = $_GET["image"];
if (!isset($image) || ($image == "")) {
   $image = "error.gif";
   $uimage = $base_url."error.gif";
} else {
   $uimage = $base_url.$image;
   if (!file_exists($uimage)) {
      $image = "error.gif";
      $uimage = $base_url."error.gif";
   }
}

$extension = strtolower(substr($image, -4));
switch($extension) {
   case ".gif":
      $contype = "image/gif";
      break;
   case ".jpg":
   case "jpeg":
   case ".jpe":
      $contype = "image/jpeg";
      break;
   case ".png":
      $contype = "image/x-png";
      break;
   default:
      $image = "error.gif";
      $uimage = $base_url."error.gif";
      $contype = "image/gif";
      break;
}
header("Content-type: ".$contype);
header("Content-Disposition: inline; filename=\"$image\"");
header("Content-Transfer-Encoding: binary");
readfile($uimage);
?>


Voilà, je vais donc faire de la hotlink :colere: pour tester, mais je pense que j'ai loupé un truc et que ça marche pas comme ça :lol:

[center]Image[/center]

Merci pour ton aide !
Et oui, il va falloir encore tout détailler pour les newb' :D
Avatar de l'utilisateur
Casea
Elfe au dragon
Elfe au dragon
 
Messages: 4318
Inscription: Dim Fév 22, 2004 19:03
Localisation: Soleil

Messagede CrazyCat le Jeu Aoû 11, 2005 21:01

Si je comprend bien, tes images sont sur http://mapage.noos.fr/caseadivers2/
Et ton "petit" site qui accepte le PHP est ailleurs?

Si oui, tu as bien modifié le script que je vais maintenant expliquer.

Lorsque le script est appelé (à priori dans chaque balise img), il commence par vérifier que tu lui as donné un nom d'image et que cet image existe sur le serveur (sinon il choisit l'image error.gif que je te conseille de créer).
Ensuite, en fonction du type d'image, il va créer les entêtes pour qu'elle soit correctement affichée par le navigateur.
Et finalement, il lit l'image et renvoit les données au navigateur.

Exemple:
tu met <img src="./image.php?image=essai.jpg">, le script va afficher http://mapage.noos.fr/caseadivers2/essai.jpg
Image
Avatar de l'utilisateur
CrazyCat
Beau parleur
Beau parleur
 
Messages: 535
Inscription: Mar Avr 13, 2004 14:25
Localisation: Middle of nowhere

Messagede Gattaca le Jeu Aoû 11, 2005 22:05

hi hi hi hi hi... :D

je ne fais que passer :fou: :D :fou: :D :fou: :D
Image
Avatar de l'utilisateur
Gattaca
Météor spirituel
Météor spirituel
 
Messages: 5839
Inscription: Lun Avr 19, 2004 16:41
Localisation: courge le jour, courge toujours

Messagede Casea le Jeu Aoû 11, 2005 22:18

Ha ok, je crois mieux voir ;.. il faut donc que je change toutes mes insertions d'images !

Alors j'ai fait une page de test, toujours sur cette 1ere image et elle ne s'afiche pas :
http://casea.nuxit.net/tagvte.php

J'ai essayé avec ce code
<img src="./image.php?image=feeglobe.gif" border=0 width=290 height=406 alt="D&eacute;claration d'Amiti&eacute; &agrave; Lylli &quot;La nuit des temps&quot;">


ou celui là :

<img src="image.php?image=feeglobe.gif" border=0 width=290 height=406 alt="D&eacute;claration d'Amiti&eacute; &agrave; Lylli &quot;La nuit des temps&quot;">


Même résultat

Et mon fichier image.php est donc bien sur nuxit, à cette adresse précisément :
http://casea.nuxit.net/image.php
Le message d'erreur te parlera surement plus qu'à moi :lol:
Il faut que je crée cet "error.gif" ? Ce serait le seul roblème ?

Que n'ai je pas compris ? :D
Avatar de l'utilisateur
Casea
Elfe au dragon
Elfe au dragon
 
Messages: 4318
Inscription: Dim Fév 22, 2004 19:03
Localisation: Soleil

Messagede CrazyCat le Jeu Aoû 11, 2005 22:40

A priori, c'est bien parce que error.gif n'existe pas...
Mais il y a un autre problème, c'est que nuxit n'aime pas ouvrir les fichiers distants (je le craignais).
Il va donc falloir remplacer
Code: Tout sélectionner
readfile($uimage);
par ceci:
Code: Tout sélectionner
$inF = fopen($uimage,"r");
while (!eof($inF) {
   echo fgets($inF);
}
fclose($inF);

Si tu as toujours l'image "error.gif" qui s'affiche, c'est qu'il y a un autre petit soucis, je tacherais de voir ça
Image
Avatar de l'utilisateur
CrazyCat
Beau parleur
Beau parleur
 
Messages: 535
Inscription: Mar Avr 13, 2004 14:25
Localisation: Middle of nowhere

Messagede CrazyCat le Jeu Aoû 11, 2005 22:54

Version bien testée:
Code: Tout sélectionner
<?
$base_url = "http://mapage.noos.fr/caseadivers2/";
// URL et répertoire ou sont les images

$image = $_GET["image"];
if (!isset($image) || ($image == "")) {
   $image = "error.gif";
   $uimage = $base_url."error.gif";
} else {
   $uimage = $base_url.$image;
}
if (!($inF = fopen($uimage,"r"))) {
   $image = "error.gif";
   $uimage = $base_url."error.gif";
   $inF = fopen($uimage, "r");
}

$extension = strtolower(substr($image, -4));
switch($extension) {
   case ".gif":
      $contype = "image/gif";
      break;
   case ".jpg":
   case "jpeg":
   case ".jpe":
      $contype = "image/jpeg";
      break;
   case ".png":
      $contype = "image/x-png";
      break;
   default:
      $image = "error.gif";
      $uimage = $base_url."error.gif";
      $contype = "image/gif";
      break;
}
header("Content-type: ".$contype);
header("Content-Disposition: inline; filename=\"$image\"");
header("Content-Transfer-Encoding: binary");
while (!feof($inF)) {
   echo fgets($inF);
}
fclose($inF);
?>

Test: http://crazycat.homelinux.org/casea.php ... eglobe.gif

Bon, ce script cache la véritable url de l'image mais n'empèche pas le click droit et sauvegarde.
Image
Avatar de l'utilisateur
CrazyCat
Beau parleur
Beau parleur
 
Messages: 535
Inscription: Mar Avr 13, 2004 14:25
Localisation: Middle of nowhere

Messagede Casea le Jeu Aoû 11, 2005 22:58

J'ai mis un "error.gif" et modifier ce que tu m'as dit.

Tu peux voir qu'il n'y a pas de changement pour l'image (elle ne s'affiche pas) et pour le fichier image.php :
Code: Tout sélectionner
Parse error: parse error, unexpected '{' in /home2/l/lecoffredecasea/www/image.php on line 48


La ligne 48 c'est cette partie de la modification :
Code: Tout sélectionner
while (!eof($inF) {


Te prends pas la tête pour le ti soucis, c'est déjà très gentil d'y avoir passé ce temps ! :D
Avatar de l'utilisateur
Casea
Elfe au dragon
Elfe au dragon
 
Messages: 4318
Inscription: Dim Fév 22, 2004 19:03
Localisation: Soleil

Messagede CrazyCat le Jeu Aoû 11, 2005 23:03

regarde ma dernière source, il y a un ) en plus :)

Et je viens de vérifier sur l'url que je t'ai donnée: ne met pas d'image en argument et on croit voir les Xmen :)
Image
Avatar de l'utilisateur
CrazyCat
Beau parleur
Beau parleur
 
Messages: 535
Inscription: Mar Avr 13, 2004 14:25
Localisation: Middle of nowhere

Messagede Casea le Jeu Aoû 11, 2005 23:12

Image

Yessssssss !! Et ça ne s'affiche pas avec du bbcode !

Super ! J'ai plus qu'à tout modifier (ouilleeeee lol)

Ha oui et j'ai plusieurs comptes ftp noos.
En fait, ils ont un système des plus lourds, je ne sais pas pourquoi, mais c'est comme ça.
j'ai 600 Mo mais répartis en plusieurs de 20Mo
Je ne peux mettre plus de 20Mo par compte

Donc j'ai plusieurs URL où sont les images
(http://mapage.noos.fr/caseadivers ; http://mapage.noos.fr/caseaimages/ ... etc )
Je peux rajouter simplement autant de
Code: Tout sélectionner
$base_url = "http://mapage.noos.fr/caseadivers2/";

que j'ai d'URL ?

Ou il faut que je fasse plusieurs fichiers script php ?

En tout cas MERCI ! C'est super ! Ca devrait en calmer une bonne partie, la majorité n'y connaissent pas grand chose et ne vont pas chercher plus loin ! :ok:

:bravo:
Avatar de l'utilisateur
Casea
Elfe au dragon
Elfe au dragon
 
Messages: 4318
Inscription: Dim Fév 22, 2004 19:03
Localisation: Soleil

Messagede Casea le Jeu Aoû 11, 2005 23:22

Hum ... il me vient une question ...

Sur le compte noos, je n'ai aucun quota.

Sur nuxit par contre je suis limitée en hits et requêtes.
En passant par image.php, qui est donc sur nuxit, ça va consommer qqs hits et requêtes à chaque affichage d'image non ?


<- La chieuse :D
Avatar de l'utilisateur
Casea
Elfe au dragon
Elfe au dragon
 
Messages: 4318
Inscription: Dim Fév 22, 2004 19:03
Localisation: Soleil

Messagede CrazyCat le Jeu Aoû 11, 2005 23:24

*** Modification de code ***
Code: Tout sélectionner
<?
$base_url = "http://mapage.noos.fr/";

// URL et répertoire ou sont les images
$rep = $_GET["dir"];
$image = $_GET["image"];
if (!isset($image) || ($image == "")) {
   $image = "error.gif";
   $uimage = $base_url."error.gif";
} else {
   $uimage = $base_url.$rep."/".$image;
}
if (!($inF = fopen($uimage,"r"))) {
   $image = "error.gif";
   $uimage = $base_url."error.gif";
}

$extension = strtolower(substr($image, -4));
switch($extension) {
   case ".gif":
      $contype = "image/gif";
      break;
   case ".jpg":
   case "jpeg":
   case ".jpe":
      $contype = "image/jpeg";
      break;
   case ".png":
      $contype = "image/x-png";
      break;
   default:
      $image = "error.gif";
      $uimage = $base_url."error.gif";
      $contype = "image/gif";
      break;
}
header("Content-type: ".$contype);
header("Content-Disposition: inline; filename=\"$image\"");
header("Content-Transfer-Encoding: binary");
while (!feof($inF)) {
   echo fgets($inF);
}
fclose($inF);
?>

Et tu appelles les images en faisant:
image.php?dir=casaedivers2&image=feeglobe.gif

Essaye à http://crazycat.homelinux.org/casea.php ... eglobe.gif
Image
Avatar de l'utilisateur
CrazyCat
Beau parleur
Beau parleur
 
Messages: 535
Inscription: Mar Avr 13, 2004 14:25
Localisation: Middle of nowhere

Suivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités