Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX] JS, odnośnik do funkcji
daris
post 12.02.2008, 23:53:24
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

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


Mam na stronie taki kod:
Kod
<script type="text/javascript">document.write(\'<a href="javascript:costam('1')">jakis tekst</a>\')</script>

ale dostęp do tej funkcji mogą mieć tylko użytkownicy spełniający odpowiednie kryteria. I tu jest problem. Bo ten link wyświetlany jest tylko gdy spełnione zostaną odpowiednie warunki ale i tak każdy user może to obejść wpisując na pasku adresu:
Kod
javascript:costam('1')

Jak się przed tym zabezpieczyć? A i przy okazji jeszcze jedno pytanko - co zrobić żeby nie przenosiło na górę strony gdy w href'ie jest tylko "#" a funkcja jest pod onclick?


PS. Nie wiedziałem do jakiego działu wrzucić ten temat bo to się tyczy i js i ajax'a

Ten post edytował daris 12.02.2008, 23:55:44


--------------------
FluxBB - lekki i szybki skrypt forum | Polskie wsparcie FluxBB
Go to the top of the page
+Quote Post
nevt
post 13.02.2008, 08:14:29
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Cytat
ale dostęp do tej funkcji mogą mieć tylko użytkownicy spełniający odpowiednie kryteria. I tu jest problem. Bo ten link wyświetlany jest tylko gdy spełnione zostaną odpowiednie warunki ale i tak każdy user może to obejść wpisując ... Jak się przed tym zabezpieczyć?

można na kila sposobów. najlepszy, to w przypadku kiedy warunki dla konretnego usera nie są spełnione, w ogóle nie wstawiaj do kodu html źródła tej funkcji (o ile decyzję możesz podjąć na etapie generowania kodu po stronie serwera)
druga możliwość - jeżeli decyzja jest podejmowana interaktywnie po stronie przeglądarki - to w przypadku nie spełnienia wymaganych warunków ustaw sobie jakąś zmienną globalną (np. blokada) w kodzie funkcji sprawdzasz wartość tej zmiennej i funkcja wykona się albo nie.

Cytat
A i przy okazji jeszcze jedno pytanko - co zrobić żeby nie przenosiło na górę strony gdy w href'ie jest tylko "#" a funkcja jest pod onclick?

ustaw onclick dla jakiegoś zwykłego elementu (<img>, <div>, <p>) a nie dla linku (<a>)


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
daris
post 13.02.2008, 15:38:53
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

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


Cytat
najlepszy, to w przypadku kiedy warunki dla konretnego usera nie są spełnione, w ogóle nie wstawiaj do kodu html źródła tej funkcji (o ile decyzję możesz podjąć na etapie generowania kodu po stronie serwera)

To automatycznie odpada bo tych elementów jest trochę na stronie i w niektórych miejscach są wyświetlane a w niektórych nie (a kod js jest wspólny).

Cytat
druga możliwość - jeżeli decyzja jest podejmowana interaktywnie po stronie przeglądarki - to w przypadku nie spełnienia wymaganych warunków ustaw sobie jakąś zmienną globalną (np. blokada) w kodzie funkcji sprawdzasz wartość tej zmiennej i funkcja wykona się albo nie.

Naszła mi inna myśl - linkowi dorzucić id i sprawdzać czy takie id istnieje (przecież jak nie przejdzie warunków to link nie będzie wyświetlany). Tylko jaka funkcja sprawdza czy istnieje dany element? Mógłbym to zrobić np. tak:
Kod
var link = document.getElementById('link5');

i przecież jak nie odnajdzie elementu link5 wystąpi błąd to kod się dalej nie wykona (testowałem to alert'em biggrin.gif ). Istnieje jakieś bardziej eleganckie rozwiązanie?


--------------------
FluxBB - lekki i szybki skrypt forum | Polskie wsparcie FluxBB
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 16:17