Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Kuvan katsominen vain kerran

Sivun loppuun

Olli [22.04.2009 17:25:10]

#

Hei,

Haluaisin saada kuvan, jonka voi katsoa vain yhden kerran. Yritän selventää tässä:

1. Käyttäjä siirtyy kuvasivulle.
2. Hän näkee kuvan, ja painaa sitä hiiren oikealla näppäimellä. Hän painaa valikosta "Näytä kuva".
3. Hän saa eteensä virhesivun.

Eli kuvan katsominen pitäisi pystyä rajoittamaan niin, että sen voi katsoa vain sivulatauksen yhteydessä. Tiedän, että tämä ei kopiointia estä, mutta miten saisin sen silti toimimaan?

Kiitos paljon avusta!

Antti Laaksonen [22.04.2009 19:45:34]

#

Tämä tuntuu toimivan ainakin Firefoxilla:

*** kuvapohja.php
Kuva:<br>
<img src="kuva.php">
*** kuva.php
<?php
if (strstr($_SERVER["HTTP_ACCEPT"], "text") !== false) {
    die("Kopiointi kielletty!");
}
header("Content-type: image/png");
readfile("kuva.png");
?>

Esittely:

http://koti.mbnet.fi/pllk/muut/kuvapohja.php
http://koti.mbnet.fi/pllk/muut/kuva.php

jo123 [23.04.2009 11:21:37]

#

Loistava vinkki! Olen juuri miettinyt noita php-tiedostoja kuvina.

Olli [23.04.2009 12:12:07]

#

Loistavaa! Internet Explorer 8:llakin toimii.

ajv [23.04.2009 13:07:22]

#

Kännykkäni Opera Minillä ei toiminut.

Olli [23.04.2009 13:42:28]

#

Oikeallakaan Operalla ei toimi.

EDIT: Tai siis, tietokoneelle tarkoitetulla Operalla.

Lebe80 [23.04.2009 14:11:06]

#

Saanko kysyä miksei kuvaa saa katsoa kuin kerran?

Olli [23.04.2009 14:15:25]

#

Haluaisin vaan vähän yrittää rajoittaa kopiointia.

janijohannes [23.04.2009 16:20:33]

#

Olli kirjoitti:

Haluaisin vaan vähän yrittää rajoittaa kopiointia.

No tässä tapauksessa kannattaa asettaa .htaccess-tiedostolla oikeuksia.

Olli [24.04.2009 14:51:19]

#

janijohannes kirjoitti:

Olli kirjoitti:

Haluaisin vaan vähän yrittää rajoittaa kopiointia.

No tässä tapauksessa kannattaa asettaa .htaccess-tiedostolla oikeuksia.

Kuvat eivät näy silloin ollenkaan edes siellä missä niitten pitäisi.

Metabolix [24.04.2009 15:36:51]

#

Ehdottamaasi ominaisuutta ei ole mahdollista toteuttaa yleisesti toimivasti, koska selain voi hakea kuvan täsmälleen samalla pyynnöllä riippumatta siitä, onko se tarkoitus näyttää sivulla vai erikseen. Antin ehdotus perustuu siihen, että selain tietää img-tagissa olevan osoitteen viittaavan kuvaan ja saattaa siis joskus ilmoittaa palvelimelle, että haluaa ladata juuri kuvan. Tähän ei kuitekaan kannata luottaa, kuten jo havaittiin. Sitäpaitsi selain voi sopivasti säädettynä ottaa sivua varten ladatun kuvan suoraan välimuististakin.

Juhko [24.04.2009 18:01:00]

#

Olli kirjoitti:

Haluaisin vaan vähän yrittää rajoittaa kopiointia.

Silloin kannattaa tehdä samanlainen systeemi kuin IRC-Galleriassa. Kuvan päälle läpinäkyvä div, ja se vaikka ihan vaan läpinäkyväksi.

Olli kirjoitti:

Internet Explorer 8:llakin toimii

...väärin. ;)

kasetti [24.04.2009 18:28:53]

#

Olli kirjoitti:

janijohannes kirjoitti:

Olli kirjoitti:

Haluaisin vaan vähän yrittää rajoittaa kopiointia.

No tässä tapauksessa kannattaa asettaa .htaccess-tiedostolla oikeuksia.

Kuvat eivät näy silloin ollenkaan edes siellä missä niitten pitäisi.

janijohannes tarkoitti varmaan sitä, että php:lla voi lukea tiedoston sisällön (esim. kuva) kansiosta joka on suojattu .htaccess-tiedostolla, esim:

<?php
header("Content-type: image/jpg");
$kuva = file_get_contents('htaccess_suojattu_kansio/kuva.jpg');
echo $kuva;
?>

janijohannes [24.04.2009 18:38:43]

#

kasetti kirjoitti:

Olli kirjoitti:

janijohannes kirjoitti:

Olli kirjoitti:

Haluaisin vaan vähän yrittää rajoittaa kopiointia.

No tässä tapauksessa kannattaa asettaa .htaccess-tiedostolla oikeuksia.

Kuvat eivät näy silloin ollenkaan edes siellä missä niitten pitäisi.

janijohannes tarkoitti varmaan sitä, että php:lla voi lukea tiedoston sisällön (esim. kuva) kansiosta joka on suojattu .htaccess-tiedostolla, esim:

<?php
header("Content-type: image/jpg");
$kuva = file_get_contents('htaccess_suojattu_kansio/kuva.jpg');
echo $kuva;
?>

Melkeinpä...
Parempi vain tehdä kryptaus.
Kuten tuossa mainittiinkiin alla

Olli [24.04.2009 19:16:46]

#

Juhko kirjoitti:

Olli kirjoitti:

Haluaisin vaan vähän yrittää rajoittaa kopiointia.

Silloin kannattaa tehdä samanlainen systeemi kuin IRC-Galleriassa. Kuvan päälle läpinäkyvä div, ja se vaikka ihan vaan läpinäkyväksi.

Olli kirjoitti:

Internet Explorer 8:llakin toimii

...väärin. ;)

Juuha eipä toiminnukkaa :D Katteli varmaa väärin.

janijohannes kirjoitti:

Melkeinpä täsmälleen tämä.
Mutta ajattelin suoraan tämänsuuntaista:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sivustosi\.com(/)?.* [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?toinensivustosi\.com(/)?.* [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?kolmassivustosi\.com(/)?.* [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ images/kuvavaras.gif [NC,L]

Eli tuo vaan .htaccess-filuun. Paitsi tietenkin osoitteet oikeiksi.

Antamasi skripti estää suoralinkityksen mutta tarkotin skriptiä joka estää "näytä kuva" -jutun painamisen tjsp.

joonas905 [30.04.2009 00:30:06]

#

Itse käytän kryptausta hyväksi tässä asiassa...

Kryptaan kuvasta ensimmäiset 2048 tavua (ei koko kuvaa, ettei lataus hidastu liikaa), sitten PHP-skriptillä puran ne tavut (skripti sisältää avaimen), mutta tämän estää vain itse kuvaan suoralinkityksen, ei PHP-skriptin :)

ajv [30.04.2009 07:19:27]

#

joonas905 kirjoitti:

mutta tämän estää vain itse kuvaan suoralinkityksen, ei PHP-skriptin :)

Eli saavutettu hyöty on...?

Milo [30.04.2009 21:11:16]

#

ajv kirjoitti:

joonas905 kirjoitti:

mutta tämän estää vain itse kuvaan suoralinkityksen, ei PHP-skriptin :)

Eli saavutettu hyöty on...?

Siinä kohtaa lienee helppo rajoittaa kuvan latausta, tarkistaa onko nykyinen sijainti oikea, onko joku tietty muuttuja määritelty oikein, jos on, niin näytetään kuva, muulloin ei.

Tuo kikkailu vain on hieman hassua.

Metabolix [30.04.2009 21:34:37]

#

Milo kirjoitti:

Siinä kohtaa lienee helppo rajoittaa kuvan latausta, ...

Käytännössä siis tuolla menetelmällä saadaan aikaan kuva, jonka katsominen vaatii sopivan evästeen tai Referer-otsikon. Näidenkin toimivuudesta kaikilla käyttäjillä, asetuksilla ja palomuureilla voidaan taas keskustella.

joonas905 [02.05.2009 13:42:59]

#

ajv kirjoitti:

joonas905 kirjoitti:

mutta tämän estää vain itse kuvaan suoralinkityksen, ei PHP-skriptin :)

Eli saavutettu hyöty on...?

Tarkoitus on lähinnä se, että ne tarkistukset sun muut laitetaan sinne PHP-koodiin (mutta mitään vedenpitävää ratkaisuahan tohon ei ole, koska ainahan ne tiedot voi väärentää) ja kun joku sen kuvan sitten saa näkyviin niin ei tarvi muuta kun "Tallenna kuva nimellä..." -> työpöydälle -> levitykseen jonkun muun kanavan kautta (esimerkiksi) :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta