2016-06-22 11 views
5

Próbuję osiągnąć coś, czego nie mogę otoczyć. Chodzi o to, że kiedy określony użytkownik jest zalogowany, przechowuję w sesji użytkownika i że jest on zalogowany.Ograniczenie JavaScript z PHP?

Przed powiedzeniem mi tak, wiem, że nie jest to najlepsza praktyka, ale celem tej strony jest tylko wewnętrzna i nie ma możliwości, aby zostać zhakowanym lub dlatego, że można uzyskać do niej dostęp tylko wewnętrznie.

W każdym razie, istnieje kilka edytowalnych pól w tabeli, które powinny być edytowalne tylko przez administratora, ale powinny być widoczne tylko dla pozostałych.

Aby uzyskać edytowalną tabelę użyłem biblioteki danych wraz z niektórymi ajaxami i JQuery.

nie mogę wymyślić sposobu, aby ograniczyć edycję, gdy zalogowany użytkownik nie jest admin inne niż:

var logged = <?php echo $_SESSION['logged_user'];?>; 
if (logged=='admin') { 
    // action here 
} 

Czy znasz lepszy sposób lub łatwiejsze do zrozumienia? Dziękuję Ci bardzo!

+1

Nawet jeśli mówią, że to tylko do celów wewnętrznych, to jeszcze straszne. Otwórz F12 i zobacz swój błąd;) – GuyT

+2

'var logged = ;' Powinno być 'var logged = ' '; 'po pierwsze .. –

+0

Wiele sposobów na osiągnięcie tego, ale wszystko zależy od tego, jak wyodrębniasz te edytowalne dane. Widzę, że wspomniałeś o użyciu ajax. Jeśli żądasz danych tabeli za pośrednictwem ajax, możesz sprawdzić sesję dla "admin", w zależności od tego, jak wypiszesz wynik zapytania, możesz wyprowadzić JSON.Example {"Auth": {"Admin": true}, "Inputs": {"InputName1": "Value1", "InputName2": "Value2", "InputName3": "Value3",}} Użyj danych wejściowych, aby zbudować wyświetlanie zapytania dotyczącego tabeli i sprawdź auth, aby utworzyć formularz do edycji. Poleciłbym również sprawdzanie poprawności sesji, gdy klient próbuje zaktualizować dane tabeli. – NewToJS

Odpowiedz

3

Jednym z rozwiązań byłoby posiadanie funkcji/funkcji, które edytują tabele wokół czeku za pomocą czystego php, więc "normalni" użytkownicy nie muszą ładować lub nawet mogą zobaczyć javascript, który to robi.

<?php If(isAdmin) { ?> 
    Javascript here 
<?php } ?> 

To również sprawia, że ​​tak właśnie normalni użytkownicy nie sprawdzać element -> usuń if a następnie można robić te same rzeczy.

+0

Wiem, że to może nie być najlepsze rozwiązanie, ale jest proste i pasuje idealnie do tego, czego potrzebuję. Dziękuję Panu bardzo! –

3

Utwórz pola tylko do odczytu lub użyj tagu etykiety zamiast wprowadzania, gdy użytkownik nie jest administratorem.
Robienie tego tylko będzie działało, jeśli jest przeznaczone wyłącznie do użytku wewnętrznego i możesz przełączyć to pole później przez javascript lub nawet możesz ustawić zmienną javascript jako is_admin true of false i after document.ready() możesz przełączyć atrybut pola do readonly true lub false.

1

Zadzwoń do swojego html za pomocą tokena zabezpieczającego jako parametru adresu URL.

Następnie należy wysłać token zabezpieczający z powrotem do serwera w żądaniu ajax i uzyskać zalogowanego użytkownika przez to.

coś takiego

www.example.com?231212sdsldkfjsl2131212lskjlkdsj 


var sec = location.search; 

$http.get('testuser.php?' + sec, function(data){ 
    user = data.user; 
});