Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] JS, odnośnik do funkcji
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
daris
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
nevt
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>)
daris
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?
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.