Remplacer liens directs sur images par 1 autre image

Petit nouveau ! | 1 Messages

23 avr. 2010, 12:14

Bonjour,

Je me permet de vous solliciter parce que malgré mes nombreuses recherches sur le net je ne trouve aucune solution à mon problème et comme je suis vraiment nulle en programmation je suis incapable de le faire moi même. :(
Je suis dans une impasse.

Je souhaiterais empêcher les internautes de faire des liens directs sur mes images (par liens directs, j'entends copier/coller leurs url pour les afficher sur divers forums) mais sans les empêcher de les prendre (enregistrer sous ...)
J'ai mis en place des messages sur mon site, même en clic droit pour les avertir de les enregistrer sous mais rien à faire, je retrouve sans arrêt des liens directs ailleurs que sur mon site.
Je passe mon temps à renommer les dites images ou, lorsqu'il y en a trop, à renommer les dossiers sur le serveurs parce que du coup mes pages sont longues à charger.
Ça devient lassant.

Le problème c'est que mon site est hébergé chez free (bah oui!) et que celui ci a désactivé le mod_rewrite.
Aussi j'en appelle à vos connaissances pour savoir s'il y existe une solution alternative en php, sans avoir à modifier toutes mes pages, à ce code du fichier htaccess:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mon-site.fr(/)?.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp)$ http://Mon-image-de-remplacement.gif [R,NC]

C'est tout à fait ce que je recherche mais je ne peux pas l'utiliser en htaccess. :(
Cependant, si c'est faisable, est ce qu'il y a possibilité que ce fichier php puisse être placé uniquement dans les dossiers des images interdites de liens directs?
Le souci c'est que je n'y connais rien en php. :cry:

En espérant que vous pourrez m'aider, je vous remercie d'avance pour vos réponses.

Mammouth du PHP | 672 Messages

23 avr. 2010, 16:38

Bonjour.

En soit, à partir du moment où tu mets l'image à disposition sur ton site il faut t'attendre à avoir ce genre d'inconvénients...
Je suppose que ce qui te gêne, c'est la consommation de bande passante (vu que tu incites les visiteurs à copier l'image sur leur disque).


=> Deux solutions :

1. La plus simple : mettre tes images sur un site dédié à ça (genre FlickR).
Mais les images resteront utilisables sur les forums.

2. Sinon, un moyen relativement simple de bloquer leur utilisation sur les forums sans pénalyser les visiteurs :
- Prérequis : un minimum de bases en PHP / administration de sites.
- Marche à suivre :
Au lieu de pointer vers une image <img src="monimage.jpeg" /> on va pointer vers un fichier php <img src="secure.php?img=monimage.jpg" />
Ce fichier secure.php va renvoyer l'image SI certaines conditions sont vérifiées (et faire autre chose sinon =D> ).
<?php
/* 
 Script servant à afficher une image passée en parametre
 Utilisation :
 Au lieu de faire <img src="image.jpg" />
 on fait <img src="affiche_image.php?img=image.jpg" />
 
*/
define ('REPERTOIRE_PROTEGE', 'RepertoireDesImages/');
define ('SITE', 'monsite.com');

// On commence par vérifier que le script est appelé à partir de ton site
// HTTP_REFERER peut être contourné, mais ici ça devrait suffire
// Il faut tenir compte du cas où on demande directement la page (pour afficher l'image)
// => On commence par définir $adresse
$adresse = $_SERVER['HTTP_HOST'];
if (!empty($_SERVER['HTTP_REFERER'])) {
	$adresse = $_SERVER['HTTP_REFERER'];
}
// Puis on compare au nom du site
if (strpos($adresse, SITE) === FALSE) {
	// Le traitement à faire si on appelle l'image d'autre part
}
else {
// On est sur le site

	if (!headers_sent()) {
// Dans le cas où on appelle l'image directement 
// il faut préciser au navigateur qu'on envoie une image
		header('Content-Type: image/jpeg');
	}
// Là on envoie le contenu du fichier demandé
// !!! ATTENTION !!! penser à sécuriser le parametre passé par GET 	
	echo file_get_contents(REPERTOIRE_PROTEGE.$_GET['img']);
}
?>
C'est du vite fait sur le pouce, donc :
- Il y a certainement mieux
- il manque des trucs (sécurisation du paramètre envoyé, par exemple)

ViPHP
ViPHP | 2287 Messages

23 avr. 2010, 19:12

Bonjour,

On a déjà dû te le dire, Free n'est pas un hébergeur mais un service de pages personnelles qui vient en complément de leur offre de fournisseur d'accès.

Ton besoin sort clairement du contexte perso (on fait pas des protections pareilles pour les photos de tata Jeanine à la plage)... Et comme tu nous le dis tu as peu de compétences en dev web, et déjà une solution qui fonctionnerait sur un hébergement plus correct. La solution évidente qu'on peut te conseiller serait d'aller chez un véritable hébergeur, il y en a des pas chers du tout, et ton rewriting fonctionnerait.

Il y a aussi l'option FlickR, suggérée par macgawel ci-dessus. Bref un service spécialisé.
if(!@work()){ Nespresso(); } else { what(); }
______________________________