2016-06-22 4 views
5

나는 내 마음을 감쌀 수없는 무언가를 이루려하고있다. 문제는 특정 사용자가 로그인 할 때 세션에 사용자를 저장하고 해당 사용자가 기록된다는 것입니다.PHP에서 Javascript를 제한 하시겠습니까?

예, 나는 이것이 최선의 방법은 아니지만이 페이지의 목적은 내부 용이며 내부적으로 만 액세스 할 수 있기 때문에 해킹 할 가능성이 없음을 알고 있습니다.

어쨌든 요점은 테이블에만 편집자가 편집 할 수있는 편집 가능한 필드가 있지만 나머지는 볼 수 있어야한다는 것입니다.

편집 가능한 테이블을 얻으려면 일부 ajax 및 JQuery와 함께 datatables 라이브러리를 사용했습니다.

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

더 나은 방법이나 쉽게 이해하는 당신은 알고 계십니까 :

내가 로그인 한 사용자가 아닌 다른 관리자에 있지 않은 경우 편집을 제한하는 방법을 생각할 수 없다? 고마워요!

+1

같은

무언가가 아니라, 여전히 끔찍한입니다. 당신의 F12를 열고 당신의 실수를 본다;) – GuyT

+2

'var logged = ';'무엇보다도 먼저 .. .. –

+0

이 방법을 사용하는 방법은 다양하지만이 편집 가능한 데이터를 추출하는 방법에 따라 다릅니다. 아약스 사용에 대해 언급 한 것을 볼 수 있습니다. ajax를 통해 테이블 ​​데이터를 요청하는 경우 JSON.Example { "Auth": { "Admin": true}, "Inputs"을 출력 할 수있는 쿼리 결과를 출력하는 방법에 따라 "admin"에 대한 세션을 확인할 수 있습니다. { "InputName1": "Value1", "InputName2": "Value2", "InputName3": "Value3",}} 입력을 사용하여 테이블 쿼리의 표시를 작성하고 auth를 확인하여 편집 가능한 양식을 작성하십시오. 또한 클라이언트가 테이블 데이터를 업데이트하려고 할 때 세션의 유효성을 검사하는 것이 좋습니다. – NewToJS

답변

3

하나의 해결책은 순수 PHP 대신 수 표를 편집하는 함수/함수를 사용하는 것입니다. 따라서 "일반"사용자는로드 할 필요가 없으며이를 작성하는 자바 스크립트를 볼 수도 있습니다.

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

이렇게하면 일반 사용자는 요소를 검사하지 않고 if 문을 제거한 다음 동일한 작업을 수행 할 수 있습니다.

+0

이것이 최선의 해결책은 아닐지 모르지만 간단하고 내가 원하는 것에 적합합니다. 대단히 감사합니다! –

3

사용자가 admin이 아닌 경우 필드를 읽기 전용으로 만들거나 입력 대신 레이블 태그를 사용하십시오.
내부 용으로 만 사용하고 나중에이 필드를 자바 스크립트로 전환하거나 javascript 변수를 is_admin true로 설정하고 document.ready() 후에도 입력 필드 속성을로 전환 할 수 있습니다. readonly true 또는 false.

1

보안 토큰을 사용하여 html을 url 매개 변수로 호출하십시오.

그런 다음이 보안 토큰을 다시 ajax 요청으로 서버로 보내야합니다. 당신이 내부 목적이라고하더라도이

www.example.com?231212sdsldkfjsl2131212lskjlkdsj 


var sec = location.search; 

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