Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> pojedyncze zdjęcia na hasło, Javascript+Wordpress
kubislaw
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 31.01.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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:)
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kamil4u
post
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Cytat
I Twoje zabezpieczenie da się rozbroić wyłączając JS

Nie da się(chodzi o wyłączenie JS) (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kamil4u
post
Post #6





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Ale nie będziesz znał adresu, gdy wcześniej nigdzie nie zobaczyłeś tego obrazka na kompie (IMG:style_emoticons/default/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ć (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kubislaw
post
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 31.01.2010

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kubislaw 18.12.2010, 23:43:10
Go to the top of the page
+Quote Post
kamil4u
post
Post #8





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 15:12