Le script PHP tant attendu : protection des images
14 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
-

aladdin - WRInaute passionné

- Messages: 1457
- Inscription: 29 Avr 2005
Le script PHP tant attendu : protection des images
bon voilà, j'ai netoyé mon code et tout et tout
et puis comme vous le savez (ou pas) le script n'est pas infaible
donc voilà, si vous avez des remarques ou des améliorations possible n'hésitez surtout pas
et puis comme vous le savez (ou pas) le script n'est pas infaible
- Code: Tout sélectionner
<?php
/*
Auteur : Alaa-eddine KADDOURI (alaa.eddine[AT]gmail[d0T]com)
Ce script est inspiré du travail de Ladislav Soukup, [root@soundboss.cz]
(pour pas réecrire toute la partie qui fait le watermark, l'encodage ...etc :p)
///////////////////////////////////////////////////////////////
// ** Licence
// ce script est soumis à la licence gnu GPL ...etc ..etc je le connais pas par coeur
// mais vous connaissez la signification ... enfin j'espère
//
// Si vous utilisez ce scipt vous devez tout d'abord m'écrire un mail et choisir une option:
// - m'envoyer 2000euros pour m'acheter une nouvelle machine (je vous contacterez mon addresse :) )
// - faire un ptit lien vers ma page perso http://www.wonderworlds.net
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
** Utilisation
Tout d'abord il faut désactiver le cache de la page avec les meta tags ...etc (consulter la partie failles connues)
puis en haut de votre page ajoutez
<?
session_start();
?>
...<votre code html ici>...
<?
$_SESSION["img_path"]="rep/dans/lequel/se/trouve/l'image/";
$_SESSION["img"]="nom_de_votre_image";
?>
<img src="bg.php" />
...<suite de votre code html ici>...
pour leurrer un peut les utilisateurs novices, vous pouvez par exemple
afficher la vrai image (bg.php) en arrière plan d'un objet, et afficher dessus
une image transparante.
///////////////////////////////////////////////////////////////
** failles connues
* ce script n'est pas parfait (héé oui) mais on peut dire qu'il protège
de 99% des tentatives voir plus et voici une liste des failles découvertes à ce jours (merci à tout les webmasters de WRI)
- l'image peut etre récuperrer pendant un certain moment à partir du cache Internet explorer (car ce stupide navigateur ne respecte pas les entete no-cache ..etc)
- les images peuvent etre récuperrés à l'aide du plugin webdevelopper de firefox
- les images peuvent etre récuperré avec l'utilisation de la librairie curl (cf manuel php) (c'est la faille que je ne pourrai jamais corriger à mon avis)
- le print screen, toute fois vous pouvez utilise ce petit script pour l'éviter (marche sous IE seulement):
entre <head></head> ajouteé
function ccb(){
if(clipboardData){
clipboardData.clearData();
}}
setInterval("ccb();", 20);
puis :
<body onLoad="ccb()">
Attention, ce script empeche les utilisateur de faire les copier/coller aussi tan que la page contenant ce script est ouverte
vos remarques suggestions etc sont les bienvenus (alaa.eddine[AT]gmail[d0T]com)
///////////////////////////////////////////////////////////////////////////////
*/
/*Configuration*/
session_start();
$image_quality="100";
$image_path=$_SESSION["img_path"];
$logo_path="./logo.png";
$logo_pos_x="right";
$logo_pos_y="top";
// si l'image est introuvable on affiche ce texte
$error_not_found="Ouuups!!!";
global $Copyrights;
$Copyrights="Copyright tfosorcim à l'envers :p";
$error_not_supported="ce format d'image n'est pas supporté";
// couleur d'arrière plan de l'image generré en cas d'erreur
$error_bg_color=array(255,255,255);
// couleur du text
$error_text_color=array(255,0,0);
/*Rien à voir en bas de cette ligne*/
///////////////////////////////////////////////////////////////////////////////////////////////////////
function NewImage($width,$height,$text=""){
global $error_bg_color,$error_text_color;
if (function_exists("imagecreatetruecolor")){
if (!@$img=imagecreatetruecolor($width,$height)){
$img=imagecreate($width,$height);
}
} else {
$img=imagecreate($width,$height);
}
$imgbgcolor=ImageColorAllocate($img,$error_bg_color[0],$error_bg_color[1],$error_bg_color[2]);
$imgtextcolor=ImageColorAllocate($img,$error_text_color[0],$error_text_color[1],$error_text_color[2]);
imagefilledrectangle($img,0,0,$width,$height,$imgbgcolor);
imagestring($img,5,10,10,$text,$imgtextcolor);
imagestring($img,5,10,30,"Copyright OujdaCity", 0);
return($img);
}
header("Content-type: image/jpeg");
// Date du passé
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// toujours modifié
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Cache-Control : max-age=A1");
// HTTP/1.0
header("Pragma: no-cache");
$rep_from=array("./","../");
$rep_to=array("","",);
$_GET["img"]=str_replace($rep_from,$rep_to,$_SESSION["img"]);
$file=$image_path . $_GET["img"];
if (file_exists($file) && strcmp($_SESSION["generated"], "true") ){
$info=getimagesize($file);
$width=$info[0];
$height=$info[1];
if ($info[2]==1){
$img=@imagecreatefromgif($file);
} else if ($info[2]==2){
$img=@imagecreatefromjpeg($file);
} else if ($info[2]==3){
$img=@imagecreatefrompng($file);
} else {
$width=640;
$height=480;
$img=NewImage($width,$height,$error_not_supported);
}
} else {
$width=640;
$height=480;
$img=NewImage($width,$height,$error_not_found);
}
if (file_exists($logo_path)){
$info=getimagesize($logo_path);
$logo_width=$info[0];
$logo_height=$info[1];
if ($info[2]==1){
$img_logo=imagecreatefromgif($logo_path);
} else if ($info[2]==2){
$img_logo=imagecreatefromjpeg($logo_path);
} else if ($info[2]==3){
$img_logo=imagecreatefrompng($logo_path);
} else {
$logo_width=120;
$logo_height=20;
$img=NewImage($logo_width,$logo_height,$error_not_supported);
}
// positioning - X
if ($logo_pos_x=="left"){
$dst_x=10;
} else if ($logo_pos_x=="center"){
$dst_x=round(($width-$logo_width)/2);
} else if ($logo_pos_x=="right"){
$dst_x=$width-10-$logo_width;
} else {
$dst_x=round(($width-$logo_width)/2);
}
// positioning - Y
if ($logo_pos_y=="top"){
$dst_y=5;
} else if ($logo_pos_y=="middle"){
$dst_y=round(($height-($logo_height/2))/2);
} else if ($logo_pos_y=="bottom"){
$dst_y=$height-5-$logo_height;
} else {
$dst_y=round(($height-($logo_height/2))/2);
}
imagecopy($img,$img_logo,$dst_x,$dst_y,0,0,$logo_width,$logo_height);
}
session_write_close();
ImageJpeg($img,"",$image_quality);
?>
donc voilà, si vous avez des remarques ou des améliorations possible n'hésitez surtout pas
- Jderamaix
- WRInaute occasionnel

- Messages: 322
- Inscription: 15 Fév 2005
Ah tiens, sinon, un méthode qu'elle marche bien avec des gens qui ne connaissent pas trop le web (et qui est bonne pour le référencement) :
dans ta feuille de style :
C'est moins chiant qu'un script anti click droit et je t'assure que 80% des gens ne sauront pas la récupérer.
En plus tu optimises tes mots clé d'image
++
- Code: Tout sélectionner
<h1><span>Descriptif de l'image</span></h1>
dans ta feuille de style :
- Code: Tout sélectionner
h1 {width:XXXpx; height:ZZZpx; background:transparent url(/dossier/image.jpg) no-repeat top left;}
h1 span {display:none;}
C'est moins chiant qu'un script anti click droit et je t'assure que 80% des gens ne sauront pas la récupérer.
En plus tu optimises tes mots clé d'image
++
-

aladdin - WRInaute passionné

- Messages: 1457
- Inscription: 29 Avr 2005
c'est pas un script anti click droit que je présente là
le code source reste claire, mais on ne peut pas récuperrer l'image meme si on tape son url dans le navigateur
pour un petit aperçu vas ici http://www.oujdacity.net/pt, affiche une image en grand puis essai de la récuperrer
le code source reste claire, mais on ne peut pas récuperrer l'image meme si on tape son url dans le navigateur
pour un petit aperçu vas ici http://www.oujdacity.net/pt, affiche une image en grand puis essai de la récuperrer
- Jderamaix
- WRInaute occasionnel

- Messages: 322
- Inscription: 15 Fév 2005
En fait, y a 3 choses :
1- tu empêches la mise en cache.
2- tu empêches la fonction "enregistrer sous" en disposant une image transparente avec un z-index supérieur
3- tu fais un script serveur pour empêcher le téléchargement direct.
C'est pas mal
++
1- tu empêches la mise en cache.
2- tu empêches la fonction "enregistrer sous" en disposant une image transparente avec un z-index supérieur
3- tu fais un script serveur pour empêcher le téléchargement direct.
C'est pas mal
++
-

aladdin - WRInaute passionné

- Messages: 1457
- Inscription: 29 Avr 2005
pour empecher le impr écrant il faut faire ça (marche sous IE seulement) :
ce code
dans le head
puis dans body
mais ça marche qu'avec IE, et qu'avec le impr écran (pas avec les autres logiciels de capture)
ce code
- Code: Tout sélectionner
function ccb(){
if(clipboardData){
clipboardData.clearData();
}}
setInterval("ccb();", 20);
dans le head
puis dans body
- Code: Tout sélectionner
<body onload="cbb()">
...
mais ça marche qu'avec IE, et qu'avec le impr écran (pas avec les autres logiciels de capture)
-

aladdin - WRInaute passionné

- Messages: 1457
- Inscription: 29 Avr 2005
herveG a écrit:Question : en empêchant la mise en cache, est ce que cela a des répercussions sur le réf ?
la mise en cache dont je parle ici et celle du navigateur, donc coté client, donc elle n'a aucune répercution sur le réferencement
- M.o.n.d.i.a.n.i
- WRInaute occasionnel

- Messages: 317
- Inscription: 9 Juil 2005
C'est bien mais... et le referencement dans tout ça?
Si tu as une galerie de photos avec le meme nom et quasi tout le temps les memes dimensions -> duplicate content - meme en generant des alt differents ca risque d'etre chaud
En plus si tu ouvres une session tous tes liens auront des ids de sessions ce qui va decourager le moteur pour indexer ton site (cette partie là est facile à corriger mais pas la premiere)
Si tu as une galerie de photos avec le meme nom et quasi tout le temps les memes dimensions -> duplicate content - meme en generant des alt differents ca risque d'etre chaud
En plus si tu ouvres une session tous tes liens auront des ids de sessions ce qui va decourager le moteur pour indexer ton site (cette partie là est facile à corriger mais pas la premiere)
14 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- mon script de protection des images en php
- [JS / PHP] Protection d'un script JS
- Script PHP permettant de gérer des images
- Script php qui zip des images et fait une save
- Protection du texte et images
- Protection des images... PB
- Protection images un peu complexe ?
- .htaccess et protection des images
- Protection des images : frein au référencement ?
- Protection des images avec htaccess : Paramétrable ?
Consultez la description détaillée des produits ou services de Google suivants : Google Images, Google Grants, Hello, Google Image Labeler
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités





