Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pojedyncze zdjęcia na hasło
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kubislaw
Witam!

Potrzebuję pomocy przy zabezpieczeniem pojedynczych zdjęć na stronie hasłem. Chodzi o to, żeby w danej galerii niektóre zdjęcia były zawsze dostępne (widoczne), a inne dopiero po podaniu hasła (jedno hasło dla wszystkich zdjęć).

Wymyśliłem, że najzgrabniej byłoby, gdyby te "zabezpieczone" zdjęcia były oznaczone w jakiś sposób w kodzie, a do tego podpięty kod Javascript (na takiej zasadzie jak standardowy lightbox), który zamienia źródło src zdjęcia, jeśli odpowiednia zmienna sesyjna nie jest ustawiona. Po podaniu hasła zmienna sesyjna ustawia się i zdjęcie wyświetla się normalnie.

Problem w tym, że bazuję na Wordpressie (jakiś odziedziczony szablon, wersja przestarzała, w dodatku zmodyfikowana..) i nie bardzo chcę grzebać w php, żeby tego całkiem nie posypać. Pomyślałem więc o Javascripcie jako jedynym rozwiązaniu, ale za to tutaj zupełnie nie mam doświadczenia.

Bardzo proszę o pomoc w stworzeniu pliku js, który zamienia źródło obrazka w zależności od zmiennej sesyjnej.

Pozdrawiam,
Jakub

Wciąż poszukuję rozwiązania. Proszę o pomoc. Może jakieś wskazówki?

17.12.2010 Nadal poszukuję. Naprawdę potrzebuję w tym pomocy. Czy w ogóle da się to rozwiązać Javascriptem?
kamil4u
W wielkim skrócie
HTML:
Kod
<img src="./test.jpg" id="image">

JS+PHP:
Kod
<?php
session_start();
if($_SESSION['test'] == /*COS TAM*/){?>
document.getElementById('image').src = './nowy/plik.jpg'; //ew. onload=function(){ document.getElementById('image').src = './nowy/plik.jpg'; };
<?php }
?>


Teraz pozostaje kwestia dopasowania tego do Twojego kodu. Jak masz jakieś pytania to pisz, tylko postaraj się je jak najbardziej skonkretyzować - bo teraz napisałeś chyba trochę zbyt ogólnie, a trudno żeby ktoś napisał za Ciebie cały kod:)
Mephistofeles
I Twoje zabezpieczenie da się rozbroić wyłączając JS, czy wchodząc bezpośrednim linkiem. Słaby pomysł. Lepiej użyć PHP, zdjęcia trzymać w niepublicznym katalogu i wyświetlać je przez skrypt.
kamil4u
Cytat
I Twoje zabezpieczenie da się rozbroić wyłączając JS

Nie da się(chodzi o wyłączenie JS) smile.gif - wtedy po prostu nie będzie miał dostępu w ogóle do zdjęcia. Rację masz, że zabezpieczenie bardzo słabe, ale wydaje mi się, ze chodzi bardziej o odstraszenie(i tak 95% użytkowników, nic z tym nie zrobi), niż poważne zabezpieczenia.
Mephistofeles
Dobra, ale wystarczy, że wejdę na adresUrl/nowy/plik.jpg i mam dostęp do zdjęcia, a script kiddies będą się chwaliły przed kolegami jak to złamali zabezpieczenia takiej strony.
kamil4u
Ale nie będziesz znał adresu, gdy wcześniej nigdzie nie zobaczyłeś tego obrazka na kompie smile.gif - więc samo w sobie przy pierwszym włączeniu strony nie jest to takie proste - poza tym pisałem tylko o JS, którego wyłączenie nic Ci nie da. Ale zgadzam się z Tobą, że warto by było się trochę pomęczyć smile.gif
kubislaw
Dzięki za wskazówki. Oczywiście, że zrobiłbym to przez php, ale to chrzaniony Wordpress 2.0 zmodyfikowany w kodzie przez jakiegoś laika. Gdybym teraz chciał to wszystko odkręcać, chyba bym się prędzej zastrzelił.

Zdjęcia, które chcę zabezpieczyć na szczęście nie mają wielkiej wartości, chodzi raczej o uspokojenie pewnych osób. Mam plan całkowicie przebudować tę stronę, ale tymczasowo potrzebuję czegoś szybkiego i prostego.

A teraz o samej metodzie - niestety nie działa. Albo ja coś robię źle, albo Wordpress blokuje JavaScript. Fragment kodu testowego (odwróciłem zasadę, żeby było łatwiej testować, czyli kiedy sesja nieustawiona, ładuje się skrypt, który wszystkim zdjęciom o określonym id nadaje src=brak_dostepu.jpg):

To w head:
  1. <?php
  2. if($_SESSION['fotki'] != 'yes'){
  3. echo '<script language="JavaScript">
  4. document.getElementById(\'passfoto\').src = \'(ścieżka do pliku brak_dostepu.jpg)\';
  5. </script>';
  6. }
  7. ?>


Fotka oczywiście oznaczona przez id="passfoto":
  1. <img width="128" height="96" id="passfoto" src="(źródło rzeczywistego zdjęcia)" />



Na pewno nie jest to problem sesji - testowałem, działa poprawnie. Źródło grafiki brak_dostepu.jpg też jest ok.
kamil4u
Spróbuj ze zdarzeniem onload, to co jest w komentarzu w moim kodzie
Poza tym nie baw się tym echo, zrób tak jak Ci pokazałem, przy edycji wiele ułatwia smile.gif
Kod
<?php
  if($_SESSION['fotki'] != 'yes'){
?>
  <script language="JavaScript">
  onload = function(){ document.getElementById('passfoto').src = '(ścieżka do pliku brak_dostepu.jpg)'; }
  </script>
<?php
}
?>


Jak nadal nie zadziała to zobacz konsolę błędów, jak nadal nic nie pomoże to daj jakieś demo -> tylko proste i z kodem PHP gdzieś z boku
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.