Protectie imagini, Ascunde adresa reala a imaginii

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
razvik
Mesaje:9

Protectie imagini, Ascunde adresa reala a imaginii

Salutare.
Cred ca am postat unde trebuie daca nu rog un administrator sa mute corect.

Am observat pe cateva siteuri ca de exemplu daca dai click dreapta si dai "View Image" nu arata poza respectiva, e setata una standard neagra sau de alt fel. In felul asta nu poti copia imagina (cel putin nu prin metoda asta, poate exista alta). Am observat ca orice extensie ar fi la fel arata pe aceea setata de ei ca fiind

As dori sa fac si eu la fel pe un site. Am observat ca am cativa 'prieteni' care tot imprumuta imaginile puse de mine.
In felul asta (ma gandesc eu) nu mai pierd vremea sa scriu pe ele siteul sau nume sau altceva care sa opreasca 'imprumutarea' lor.

Multumesc pentru timpul acordat.
Totul ti se pare mare atunci cand esti mic :)

MarPlo Mesaje:4343
Salut
Probabil se foloseste preluarea imaginii printr-un script pe server.
De exemplu, adauga la adresa imaginii: script.php?id=id_img , iar in fisierul "script.php" preia "id_img", apoi, dintr-un array ia numele imaginii corespunzatoare acelui ID si citeste fisierul cu acea imagine, care e in alt director, sau citeste una "default" daca se acceseaza cu alta adresa.

Cod: Selectaţi tot

<?php
$imagini = array(
 'id_img1'=>'nume_imagine1.jpg',
 'id_img2'=>'nume_imagine2.jpg',
 'id_img3'=>'nume_imagine3.jpg'
);
$img = (isset($_GET['id']) && isset($imagini[$_GET['id']])) ? 'alt_dir/'. $imagini[$_GET['id']] : 'imagine_default.jpg';

header('Content-type: image/jpeg');
readfile($img);
?>
Ori, ca sa fie mai complex, face adresa imaginii asa: dirimg/id_img.jpg , iar in ".htaccess" redenumeste calea catre "script.php", asa:

Cod: Selectaţi tot

RewriteRule ^dirimg/([a-z_0-9-]+).jpg$ script.php?id=$1 [NC,L]

keenbr Mesaje:44
Marplo, oricare solutie din cele scrise mai sus de tine nu are solutie. Imaginea va putea fi copiata. Merge schimbata calea imaginii cu htaccess. Chiar folosesc solutia asta.
Dar pentru ce vrea razvika solutia ar fi urmatoarea.
1. Ai imaginea. O bagi intr-un div.
2. in css, clasa/id-ul div-ului il modifici dupa cum urmeaza: setezi background: #000 si ii dai opacitate 0% sau ii pui o imagine de 16x16 (exemplu... poti pune orice dimensiune vrei) , format gif (sa fie acceptata transparenta si pe ie6), imaginea gif fiind total transparenta. in css pui imaginea ca background :)

Posibilitate 2 (mai complicat putin).
1. Preiei cu php dimensiunile imaginii.
2. Faci un div in care pui style="background: url(...) no-repeat; width: $width; height: $height"
3.
a.Iei o imagine gif , transparenta si o maresti cu gd la dimensiunile imaginii tale ($width si $height).
b. faci un div cu proprietate absoluta, dimensiunile imaginii ($width, $height) si ca background, o imagine transparenta sau culoarea negru, transparenta 0%. ori varianta a, ori varianta b... la alegere.
4. Cand vizitatorul site-ului da click dreapta -> view image, apare pagina alba :)

razvik Mesaje:9
In primul rand va multumesc pentru raspunsuri.

Cred ca e una din metodele lui keenbr pentru ca din cate observ imaginea 'falsa' pe care mi-o ofera atunci cand dau view image este ceva de genu "/img/x.gif" deci se potriveste explicatiei tale.
Acum ramane sa vad si daca reusesc sa fac ce ai zis tu, nu sunt vreun invatat :) sunt incepator, sper sa reusesc. Cea mai simpla metoda mi se pare prima, lucru cu acel css.
Ce am inteles la prima vedere e ca acolo unde trebuie sa pun poza voi folosi class/id-ul div-ul setat in css si e ca si rezolvata treaba.

Oricum totusi am sa revizuiesc cursul CSS scris de marplo.
Revin daca intampin probleme.

Va multumesc
Totul ti se pare mare atunci cand esti mic :)

MarPlo Mesaje:4343
Din ce am inteles, si cred ca merge, idee cu CSS e sa adaugi un DIV sub imagine, care sa vina exact peste ea, cu position:absolute;, background:#000;, opacity:0;, width si height aceleasi cu dimensiunile imaginii.
Exemplu:

Cod: Selectaţi tot

<div style="position:relative">
  <img src="image.jpg" alt="Titlu" width="300" height="200" />
  <div style="position:absolute; top:0; background:#000; left:0; margin:0; width:300px; height:200px; filter:alpha(opacity=0); opacity:0;"> </div>
</div>
Asta impiedica copierea prin right-click. Iar partea de ascundere a adresei, cred ca se poate cu mod-rewrite in ".htaccess", poate si PHP.
Cine a mai facut stie mai bine.

keenbr Mesaje:44
Codul facut de tine merge perfect. Doar ce l-am pus intr-un fisier html.
Pa partea de ascundere a imaginii in sursa, nu cred ca este posibil. Browserul trebuie sa interpreteze imaginea. Ce ar putea face ar fi sa codeze cu base64 codul imaginii apoi cu un cod js sa ii faca decript. Browserul va vedea sursa imaginii pentru ca scriptul js va face decriptare, dar in sursa va apare criptat.
Cu rewrite nu va face mare lucru. in loc de image.php?image=imagine.jpg => /imagine.jpg .. adica daca unu ia din sursa /imagine.jpg (care vine in forma asta din htaccess) si deschide pagina web direct pe imagine, o va putea salva.

Subiecte similare